Hiểu và Sử Dụng Lệnh chmod trong Linux

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ọnMô tả
uChủ sở hữu (user)
gNhóm (group)
oNgười khác (others)
aTất cả người dùng (all)
+Thêm quyền
-Xóa quyền
=Đặt quyền cụ thể
rQuyền đọc (read)
wQuyền ghi (write)
xQuyền thực thi (execute)
cHiển thị thay đổi tương tự như -v
fKhông hiển thị thông báo lỗi
-RXử dụng đệ quy cho tất cả tệp và thư mục con
-v/--verboseHiể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

Thẻ: linux chmod permissions command-line

Đăng vào ngày 27 tháng 5 lúc 04:28