chmod
Trong các hệ điều hành giống Unix, chmod là một lệnh của trình bao Unix và là lời gọi hệ thống, dùng để thay đổi quyền truy cập tập tin của các đối tượng tập tin (bao gồm cả tập tin và thư mục, hay đặt các cờ đặc biệt lên đối tượng tập tin.[1] Chmod là viết tắt của change mode.
Lịch sử
sửaLệnh chmod xuất hiện lần đầu trong phiên bản 1 của AT&T Unix.
Cú pháp lệnh
sửachmod [options] mode[,mode] file1 [file2...]
Các tùy chọn thường sử dụng:
- -R đệ quy, lệnh có tác dụng cả với các đối tượng trong thư mục con
- -f bắt buộc, tiếp tục thực hiện với tất cả các đối tượng dù xảy ra lỗi
- -v hiển thị tiến trình làm việc với các đối tượng
Nếu đối số của lệnh là một liên kết tượng trưng, lệnh sẽ ảnh hưởng tới đối tượng đích của liên kết. Chế độ truy cập gán trên liên kết thường không được sử dụng.
Để xem chế độ truy cập của tập tin, ta dùng lệnh ls hay stat:
$ ls -l phoneNumbers
-rwxr-xr-- 1 dgerman staff 823 Dec 16 15:03 phoneNumbers
$ stat -c %a phoneNumbers
754
Các chế độ r, w, và x xác định quyền đọc (read), ghi (write) và thực thi (execute) trên tập tin. Tập tin phoneNumbers có thể được đọc, ghi, thực thi bởi chủ sở hữu dgerman, các người dùng trong nhóm staff có thể đọc và thực thi, tất cả các người dùng khác có quyền đọc.
Chế độ bát phân
sửaĐịnh dạng số của chmod cung cấp một cách biểu diễn và gán chế độ truy cập bằng 4 ký số bát phân. 3 ký số bên phải là quyền truy cập của chủ sở hữu, nhóm và các người dùng khác, ký số thứ tư từ phải sang trái biểu diễn các cờ đặc biệt setuid, setgid và sticky.
Quyền truy cập biểu diễn dạng số
# | quyền | rwx |
---|---|---|
7 | toàn quyền | 111 |
6 | đọc và ghi | 110 |
5 | đọc và thực thi | 101 |
4 | chỉ đọc | 100 |
3 | ghi và thực thi | 011 |
2 | chỉ ghi | 010 |
1 | chỉ thực thi | 001 |
0 | không có quyền | 000 |
Ví dụ
sửaCho phép người dùng trong nhóm programmers có thể cập nhật tập tin:
$ ls -l sharedFile
-rw-r--r-- 1 jsmith programmers 57 Jul 3 10:13 sharedFile
$ chmod 664 sharedFile
$ ls -l sharedFile
-rw-rw-r-- 1 jsmith programmers 57 Jul 3 10:13 sharedFile
Do các cờ setuid, setgid và sticky không được đặt, lệnh trên tương đương với:
$ chmod 0664 sharedFile
Chế độ tượng trưng
sửaLệnh chmod cũng cho phép sử dụng các ký hiệu tượng trưng để điều chỉnh một chế độ cụ thể mà không ảnh hưởng tới các chế độ khác. Chế độ tượng trưng gồm 3 thành phần, kết hợp lại thành một chuỗi:
$ chmod [tham chiếu][toán tử][chế độ] file...
Tham chiếu (hay lớp) dùng để xác định những người dùng nào sẽ được điều chỉnh quyền truy cập. Tham chiếu mặc định sử dụng là "all" cho tất cả các nhóm nếu không có tham chiếu được chỉ định. Tuy nhiên việc thay đổi các quyền truy cập còn phụ thuộc vào thiết lập umask. Tham chiếu được biểu diễn bởi các ký tự sau:
Tham chiếu | Nhóm | Mô tả |
---|---|---|
u | người dùng | chủ sở hữu tập tin |
g | nhóm | các người dùng thuộc nhóm của tập tin |
o | khác | các người dùng không thuộc nhóm cũng không phải chủ sở hữu |
a | tất cả | tất cả ba lớp trên, tương đương với ugo |
Chương trình chmod sử dụng một toán tử để quy định cách thay đổi chế độ của tập tin:
Toán tử | Mô tả |
---|---|
+ | Thêm chế độ sau đó vào tập tin |
- | Xóa chế độ theo sau trong tập tin (nếu có) |
= | quy định chính xác chế độ cho tập tin |
Một ký tự sẽ biểu diễn chế độ được thêm/xóa trên tập tin. Có ba chế độ cơ bản như sau:
Chế độ | Tên | Mô tả |
---|---|---|
r | read | đọc tập tin/ liệt kê các tập tin trong một thư mục |
w | write | ghi vào tập tin/ tạo tập tin mới trong thư mục |
x | execute | thực thi tập tin/xem đệ quy một cây thư mục |
X | special execute | không hẳn là một quyền truy cập nhưng có thể sử dụng thay cho x. X đặt quyền thực thi cho thư mục bất chấp các quyền hiện có và đặt quyền thực thi có tập tin đã có ít nhất 1 quyền thực thi đã thiết lập (chủ sở hữu, nhóm, khác). Lệnh chỉ hữu dụng khi sử dụng kèm với toán tử '+' và thường sử dụng cùng với tùy chọn -R để đặt quyền truy cập cho nhóm hay "người dùng khác" trên một thư mục lớn mà không cần thiết lập quyền thực thi trên các tập tin thông thường (ví dụ tập tin văn bản), ví dụ khi dùng lệnh "chmod -R a+rx.", tất cả tập tin trong cây thư mục (cả tập văn bản) đều được gắn cờ x trong khi lệnh "chmod -R a+rX." chỉ gắn cờ cho các file execute. |
s | setuid/gid | xem Chế độ đặc biệt |
t | sticky | xem Chế độ đặc biệt |
Dùng dấu phẩy để cách các chế độ tượng trưng nếu muốn thực hiện nhiều thay đổi trong một lệnh.
Ví dụ sử dụng chế độ tượng trưng
sửaCác chế độ đặc biệt
sửaVí dụ bằng dòng lệnh
sửaLời gọi hệ thống
sửaĐọc thêm
sửa- Tập tin system permissions
- Modes (Unix)
chown
, lệnh dùng để thay đổi chủ sở hữu của một tệp hay thư mục trên các hệ điều hình tương tự Unixchgrp
, lệnh dùng để thay đổi nhóm của một tệp hay thư mục trên các hệ điều hình tương tự Unixcacls
, lệnh được sử dụng trên Windows NT và các phiên bản dẫn xuất của nó để sửa đổi các danh sách kiểm soát truy cập được liên kết với một tệp hoặc thư mụcattrib
- User identifier
- Group identifier
- List of Unix programs
Tham khảo
sửaLiên kết ngoài
sửa- FreeBSD General Commands Manual : change file modes –
chmod
— manual page from GNU coreutils.- GNU "Setting Permissions" manual
- Solaris 9 chmod man page
- Mac OS X chmod man page, which also supports access control lists.
- CHMOD-Win 3.0 — Freeware Windows' ACL ←→ CHMOD converter.
- Beginners tutorial with on-line "live" example
- chmod examples Lưu trữ 2010-10-30 tại Wayback Machine Searchable examples