Trong hệ điều hành Linux, việc quản lý quyền truy cập của file và thư mục là yếu tố quan trọng giúp bảo mật và duy trì trật tự cho hệ thống. Lệnh chmod (viết tắt của "change mode") được sử dụng để thay đổi quyền truy cập đối với các file và thư mục. Bài viết này codetuthub sẽ giúp bạn hiểu rõ về cơ chế phân quyền trên Linux cũng như cách sử dụng lệnh chmod hiệu quả.

1. Tổng quan về phân quyền trên Linux

Mỗi file và thư mục trong Linux đều có các quyền truy cập xác định cho 3 nhóm đối tượng:

  • User (u): Chủ sở hữu của file/thư mục.
  • Group (g): Nhóm mà file/thư mục thuộc về.
  • Others (o): Các người dùng khác trên hệ thống.

Mỗi nhóm có thể có các quyền truy cập khác nhau, bao gồm:

  • Read (r): Quyền đọc nội dung file hoặc liệt kê nội dung thư mục.
  • Write (w): Quyền chỉnh sửa nội dung file hoặc thay đổi nội dung thư mục (thêm, xóa, đổi tên file).
  • Execute (x): Quyền thực thi file (đối với file là chương trình hoặc script) hoặc truy cập vào thư mục.

Quyền truy cập được hiển thị dưới dạng chuỗi ký tự khi sử dụng lệnh ls -al hoặc ls -l.Ví dụ:

shell
ls -al

Trong đó:

  • Ký tự đầu tiên biểu thị loại file (d: thư mục, -: file thường, v.v.).
  • 3 ký tự tiếp theo biểu thị quyền của chủ sở hữu.
  • 3 ký tự tiếp theo biểu thị quyền của nhóm.
  • 3 ký tự cuối cùng biểu thị quyền của người dùng khác.
shell
toannguyen@DESKTOP-HG97QJL:~$ ls -al
total 57092
drwxr-x--- 20 toannguyen toannguyen     4096 Feb 16 13:21 .
drwxr-xr-x  3 root       root           4096 Feb 24  2023 ..
lrwxrwxrwx  1 toannguyen toannguyen       23 Mar 11  2023 .aws -> /mnt/c/Users/nguye/.aws
lrwxrwxrwx  1 toannguyen toannguyen       25 Mar 11  2023 .azure -> /mnt/c/Users/nguye/.azure
-rw-------  1 toannguyen toannguyen    49703 Feb 16 13:21 .bash_history
-rw-r--r--  1 toannguyen toannguyen      220 Feb 24  2023 .bash_logout
-rw-r--r--  1 toannguyen toannguyen     3968 Oct  8  2023 .bashrc
drwxr-xr-x  7 toannguyen toannguyen     4096 Sep  2 21:22 .cache
drwxr-xr-x  3 toannguyen toannguyen     4096 Aug  5  2023 .config
drwxr-xr-x  6 toannguyen toannguyen     4096 Aug  3  2023 .docker
drwxr-xr-x  3 toannguyen toannguyen     4096 Jul  8  2024 .dotnet
-rw-r--r--  1 toannguyen toannguyen       88 Aug 31 15:04 .gitconfig
^ ^  ^  ^   ^      ^      ^               ^      ^--- Ngày tháng tạo file (Aug 31 15:04) và tên file (.gitconfig)
| |  |  |   |      |      |               |
| |  |  |   |      |      |               |__________ Dung lượng của file/folder
| |  |  |   |      |      |__________________________ Tên group sở hữu: toannguyen
| |  |  |   |      |____________________________ Tên user sở hữu: toannguyen
| |  |  |   |___________________ Hard link, thể hiện nhiều file hoặc thư mục có cùng sử dụng chung node: 1
| |__|__|___________________ Các chỉ số phân quyền(rw- User; r-- Group; r-- Others) 
|__________________________ Loại file (chữ d nghĩa là folder; - là file)

2. Cách sử dụng lệnh CHMOD

chmod (change mode) là lệnh dùng để thay đổi quyền truy cập (permissions) của file và thư mục trong hệ thống Linux. Quyền truy cập xác định ai có thể đọc, ghi hoặc thực thi một file hoặc truy cập vào một thư mục.

Lệnh chmod cho phép bạn thay đổi quyền truy cập bằng hai cách chính: phân quyền theo số (octal mode)phân quyền theo ký hiệu (symbolic mode).

2.1. Phân quyền theo số (Octal Mode)

Ở dạng này, mỗi loại quyền được biểu diễn bằng một con số:

  • Read (r) = 4
  • Write (w) = 2
  • Execute (x) = 1

Các quyền của mỗi nhóm sẽ được tính bằng tổng các giá trị tương ứng. Ví dụ:

  • Quyền rwx (đọc, ghi, thực thi) có giá trị bằng 4 + 2 + 1 = 7.
  • Quyền rw- (đọc, ghi) có giá trị bằng 4 + 2 = 6.
  • Quyền r-x (đọc, thực thi) có giá trị bằng 4 + 1 = 5.
  • Quyền r-- (chỉ đọc) có giá trị là 4.

Cú pháp lệnh:

shell
chmod [options] [mode] file/directory

Ví dụ:

  • Để gán quyền rwx cho chủ sở hữu, r-x cho nhóm và chỉ r-- cho người dùng khác cho file example.txt:
  • Command chmod 754 example.txt
  • Ở đây:
    • Chủ sở hữu: 7 (rwx)
    • Nhóm: 5 (r-x)
    • Người dùng khác: 4 (r--)
shell
chmod 754 example.txt

2.2. Phân quyền theo ký hiệu (Symbolic Mode)

Ở dạng này, bạn có thể thay đổi quyền truy cập theo cách "tăng" hoặc "giảm" quyền mà không cần tính toàn bộ giá trị số. Các ký hiệu được sử dụng như sau:

  • u: Chủ sở hữu (user)
  • g: Nhóm (group)
  • o: Người dùng khác (others)
  • a: Tất cả (all)
  • Các toán tử:
    • + để thêm quyền
    • - để xóa quyền
    • = để gán lại quyền

Ví dụ:

  • Thêm quyền thực thi cho chủ sở hữu vào file script.sh
  • Xóa quyền ghi cho nhóm và người khác của file data.txt
  • Gán quyền đọc và ghi cho tất cả các nhóm trên file config.cfg
shell
chmod u+x script.sh
chmod go-w data.txt
chmod a=rw config.cfg

3. Quản lý quyền truy cập cho thư mục

Quyền truy cập đối với thư mục có ý nghĩa hơi khác so với file:

  • Read (r): Cho phép liệt kê các file và thư mục con.
  • Write (w): Cho phép tạo, xóa và đổi tên các file/thư mục con.
  • Execute (x): Cho phép truy cập vào thư mục, tức là di chuyển vào bên trong thư mục đó (cd vào thư mục).

Ví dụ:

  • Để gán quyền rwx cho chủ sở hữu và rx cho nhóm và người dùng khác cho thư mục myfolder
  • Sử dụng symbolic mode để thêm quyền thực thi cho tất cả các nhóm
shell
chmod 755 myfolder
chmod a+x myfolder

4. Một số lưu ý khi sử dụng CHMOD

  • Cần có quyền sudo hoặc quyền chủ sở hữu để thay đổi quyền truy cập.
  • Cẩn thận khi thay đổi quyền truy cập, đặc biệt là trên các file hệ thống quan trọng.
  • Cẩn thận với quyền write: Cho phép quyền ghi cho "others" có thể dẫn đến nguy cơ bảo mật, vì bất kỳ ai cũng có thể thay đổi nội dung file hoặc thư mục.
  • Sử dụng Recursive: Để thay đổi quyền cho toàn bộ nội dung bên trong thư mục, bạn có thể sử dụng tùy chọn -R.
    Ví dụ:
shell
chmod -R 755 /duong_dan/thu_muc
  • Hiểu rõ quyền sở hữu: Đôi khi, thay vì thay đổi quyền với chmod, bạn cũng cần thay đổi quyền sở hữu của file/thư mục bằng lệnh chown.

5. Một số ví dụ

  • Thay đổi quyền cho một file:
shell
chmod 644 /path/to/file.txt
  • Ở đây, file sẽ có quyền:
    • Chủ sở hữu: đọc và ghi (6)
    • Nhóm: chỉ đọc (4)
    • Người dùng khác: chỉ đọc (4)
  • Thay đổi quyền cho thư mục và tất cả nội dung bên trong:
shell
chmod -R 755 /path/to/directory
  • Điều này đảm bảo thư mục và tất cả các file, thư mục con đều có quyền truy cập tương ứng.
  • Chỉ thêm quyền thực thi cho chủ sở hữu:
shell
chmod u+x /path/to/script.sh

6. Kết luận

Lệnh chmod là một công cụ mạnh mẽ và linh hoạt cho việc quản lý quyền truy cập file và thư mục trên hệ điều hành Linux. Hiểu rõ cách hoạt động của hệ thống phân quyền sẽ giúp bạn bảo mật hệ thống và quản lý tài nguyên một cách hiệu quả. Dù bạn sử dụng phương pháp phân quyền theo số hay theo ký hiệu, việc nắm vững cú pháp và ý nghĩa của các quyền sẽ giúp bạn tránh được những sai sót không đáng có.

Hy vọng với bài viết này, bạn đã có cái nhìn tổng quan và cụ thể về cách sử dụng lệnh chmod trên Linux. Hãy thực hành và trải nghiệm để trở nên thành thạo hơn trong việc quản trị hệ thống Linux của mình!