Chế Độ Số
Chữ Số Quyền Octal
4Đọc (r)
2Ghi (w)
1Thực thi (x)
0Không có quyền
Định Dạng Ba Chữ Số
chmod 755 file # rwxr-xr-x chmod 644 file # rw-r--r-- chmod 700 file # rwx------ chmod 600 file # rw-------
Tính Toán Chữ Số
7 (4+2+1)rwx — đọc, ghi, thực thi
6 (4+2)rw- — đọc, ghi
5 (4+1)r-x — đọc, thực thi
4r-- — chỉ đọc
3 (2+1)-wx — ghi, thực thi
2-w- — chỉ ghi
1--x — chỉ thực thi
0--- — không có quyền
Chế Độ Ký Hiệu
Cú Pháp: [ugoa][+-=][rwxXst]
uUser (chủ sở hữu)
gGroup
oOthers (người khác)
aAll (u + g + o)
+Thêm quyền
-Xóa quyền
=Đặt quyền chính xác
Ví Dụ Ký Hiệu
chmod u+x file # chủ sở hữu: thêm thực thi chmod g-w file # group: bỏ ghi chmod o=r file # others: chỉ đọc chmod a+r file # tất cả: thêm đọc chmod u+x,g-w,o= file # thao tác kết hợp
Quyền Thường Dùng
Preset Quyền File
644 rw-r--r--File mặc định — chủ sở hữu rw, người khác đọc
755 rwxr-xr-xScript/binary — chủ sở hữu rwx, người khác rx
600 rw-------File riêng tư — chỉ chủ sở hữu
400 r--------Chỉ đọc riêng tư (SSH keys)
666 rw-rw-rw-File ai cũng ghi được (tránh dùng)
777 rwxrwxrwxToàn quyền cho tất cả (tránh dùng)
Tham Khảo Nhanh
chmod 644 *.html # web files: chủ sở hữu rw, công cộng r chmod 755 *.sh # scripts: chủ sở hữu rwx, công cộng rx chmod 600 ~/.ssh/id_* # SSH keys: chỉ chủ sở hữu chmod 400 secret.pem # certificate: chỉ đọc
Quyền Thư Mục
Ý Nghĩa Quyền Với Thư Mục
r (4)Liệt kê nội dung thư mục (ls)
w (2)Tạo/xóa file trong thư mục
x (1)Truy cập (cd vào) thư mục
rx (5)Liệt kê + truy cập (thông thường để đọc)
rwx (7)Toàn quyền
Quyền Thư Mục Thường Dùng
chmod 755 dir/ # chuẩn: chủ sở hữu rwx, người khác rx chmod 700 dir/ # riêng tư: chỉ chủ sở hữu chmod 750 dir/ # group truy cập: chủ sở hữu rwx, group rx chmod 1777 /tmp # sticky bit: chỉ chủ sở hữu mới xóa được
Bit Đặc Biệt
Setuid, Setgid, Sticky
Setuid (4xxx)Chạy với quyền của chủ sở hữu file (vd: passwd)
Setgid (2xxx)Chạy với group của file / kế thừa group thư mục
Sticky (1xxx)Chỉ chủ sở hữu mới xóa được file (vd: /tmp)
Đặt Bit Đặc Biệt
chmod 4755 program # setuid: -rwsr-xr-x chmod 2755 dir/ # setgid: drwxr-sr-x chmod 1755 dir/ # sticky: drwxr-xr-t chmod u+s program # setuid dạng ký hiệu chmod g+s dir/ # setgid dạng ký hiệu chmod +t dir/ # sticky bit dạng ký hiệu
Đệ Quy
Thay Đổi Quyền Đệ Quy
chmod -R 755 dir/ # đặt tất cả thành 755 đệ quy chmod -R u+rwX dir/ # chủ sở hữu rw, +x chỉ cho thư mục chmod -R go-w dir/ # bỏ quyền ghi của group/others
File vs Thư Mục với find
# đặt thư mục thành 755, file thành 644 find /path -type d -exec chmod 755 {} + find /path -type f -exec chmod 644 {} +
X Hoa — Thực Thi Có Điều Kiện
x (thường)Thêm thực thi cho tất cả file và thư mục
X (hoa)Thêm thực thi chỉ cho thư mục và file đã có thực thi
umask
Cách umask Hoạt Động
umaskHiển thị umask hiện tại
umask 022Files: 644, Dirs: 755
umask 077Files: 600, Dirs: 700
umask 002Files: 664, Dirs: 775
Tính Toán umask
# quyền mặc định trừ umask = quyền thực tế # Files: 666 - 022 = 644 (rw-r--r--) # Dirs: 777 - 022 = 755 (rwxr-xr-x) umask # hiển thị umask hiện tại umask 022 # mặc định thường dùng umask -S # hiển thị dạng ký hiệu
Các Pattern Thường Gặp
Tình Huống Hằng Ngày
Web rootchmod -R 755 /var/www/html
File cấu hìnhchmod 600 app.conf
Thư mục SSHchmod 700 ~/.ssh
SSH authorized_keyschmod 600 ~/.ssh/authorized_keys
Thư mục chia sẻchmod 2775 /shared (setgid)
Log fileschmod 640 /var/log/app.log
Cron scriptschmod 755 /etc/cron.daily/myjob
Thư mục tạmchmod 1777 /tmp (sticky)
Xem Quyền
ls -l file.txt # xem quyền ls -ld dir/ # xem quyền thư mục stat -c '%A %a %n' * # ký hiệu + số + tên getfacl file.txt # xem ACL (nếu đang dùng)