Giới thiệu về lệnh chmod
Lệnh chmod trong Linux được sử dụng để thay đổi các quyền truy cập của tệp và thư mục. Mỗi tệp và thư mục có ba loại quyền cơ bản: đọc (read), ghi (write) và thực thi (execute). Ngoài ra, còn có ba quyền đặc biệt. Người dùng có thể sử dụng chmod để đặt quyền cho tệp và thư mục bằng cách sử dụng ký tự hoặc biểu tượng số.
Cú pháp cơ bản
chmod [tùy_chọn] [quyền] [tệp_hoặc_thư_mục]
chmod [OPTION] [MODE] FILE
chmod [OPTION] [MODE] DIRECTORY
Các tùy chọn của chmod
| Tùy chọn | Mô tả |
|---|---|
| u | Chủ sở hữu (user) |
| g | Nhóm (group) |
| o | Người khác (others) |
| a | Tất cả người dùng (all) |
| + | Thêm quyền |
| - | Xóa quyền |
| = | Đặt quyền cụ thể |
| r | Quyền đọc (read) |
| w | Quyền ghi (write) |
| x | Quyền thực thi (execute) |
| c | Hiển thị thay đổi tương tự như -v |
| f | Không hiển thị thông báo lỗi |
| -R | Xử dụng đệ quy cho tất cả tệp và thư mục con |
| -v/--verbose | Hiển thị quá trình thực thi chi tiết |
| --reference | Đặt quyền giống như tệp hoặc thư mục tham chiếu |
Hiểu về quyền truy cập
Các quyền được biểu thị bằng một chuỗi ký tự như sau:
-rw-r--r-- 1 user group 651 Oct 12 12:43 document.txt
↑╰┬╯╰┬╯╰┬╯
┆ ┆ ┆ ╰┈ Người khác
┆ ┆ ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ Nhóm
┆ ╰┈┈┈┈ Chủ sở hữu
╰┈┈ Ký tự đầu tiên là loại tệp
Ký tự đầu tiên cho biết loại tệp:
- d: thư mục (directory)
- -: tệp thông thường (regular file)
- s: socket
- p: ống (pipe) hoặc ống đặt tên (named pipe)
- l: liên kết tượng trưng (symbolic link)
- b: tệp thiết bị hướng khối (block-oriented device file)
- c: tệp thiết bị hướng ký tự (character-oriented device file)
Quyền được biểu thị bằng số:
- r = đọc = 4
- w = ghi = 2
- x = thực thi = 1
Các quyền đặc biệt
Bên cạnh các quyền thông thường, Linux còn có các quyền đặc biệt bao gồm SET bit (suid, sgid) và bit dính (sticky bit).
chmod u+s filename # Đặt suid
chmod u-s filename # Bỏ suid
chmod g+s filename # Đặt sgid
chmod g-s filename # Bỏ sgid
chmod +t filename # Đặt sticky bit
chmod -t filename # Bỏ sticky bit
Đối với các tệp có suid hoặc sgid:
- -rwsr-xr-x: Đặt suid và có quyền thực thi
- -rwSr--r--: Đặt suid nhưng không có quyền thực thi
- -rwxr-sr-x: Đặt sgid và có quyền thực thi
- -rw-r-Sr--: Đặt sgid nhưng không có quyền thực thi
Đối với các tệp có sticky bit:
- -rwsr-xr-t: Đặt sticky bit và có quyền thực thi
- -rwSr--r-T: Đặt sticky bit nhưng không có quyền thực thi
Ví dụ thực tế
$ chmod u+x document.txt # Thêm quyền thực thi cho chủ sở hữu
$ chmod 755 report.doc # Đặt quyền: đọc-ghi-thực thi cho chủ, đọc-thực thi cho nhóm và người khác
$ chmod u=rwx,g=rx,o=x project/ # Đặt quyền riêng biệt cho từng nhóm
$ chmod =r data.txt # Chỉ đặt quyền đọc cho tất cả
$ chmod -R u+r documents/ # Đệ quy thêm quyền đọc cho tất cả tệp và thư mục con
$ chmod 4755 executable # Đặt suid và quyền đầy đủ cho chủ sở hữu