Công cụ này làm gì
Ba thẻ cho quyền tệp Unix:
- Tính quyền. Đánh dấu đọc, ghi, thực thi cho chủ sở hữu, nhóm và người khác, hoặc gõ số bát phân (
755, 2775) hay dạng ký hiệu của ls -l (rwxr-xr-x). Ba dạng luôn khớp nhau; kết quả gồm số bốn chữ số, thứ ls -l sẽ in, lệnh chmod sẵn để sao chép, và mỗi nhóm thật sự làm được gì với tệp hoặc thư mục. - umask. Gõ umask như
022 hay 027 để xem quyền của tệp mới và thư mục mới, cùng dạng umask -S. - Áp dụng chmod. Bắt đầu từ một quyền, gõ biểu thức như
u+x,go-w, a=rX, g=u và xem kết quả sau từng mệnh đề.
Đọc số mà không cần học thuộc
Mỗi chữ số là một nhóm: chủ sở hữu, nhóm, người khác. Trong một chữ số, đọc là 4, ghi là 2, thực thi là 1, cộng lại: 7 = rwx, 6 = rw-, 5 = r-x, 4 = r--, 0 = ---. Vậy 755 là rwx cho chủ và r-x cho mọi người, quyền thường dùng cho chương trình và thư mục; 644 là rw- cho chủ và r-- cho người khác, quyền thường dùng cho tài liệu, trang web. 600 giữ tệp riêng tư, đúng như SSH yêu cầu với khóa bí mật.
Chữ số thứ tư ở đầu chứa bit đặc biệt: setuid là 4, setgid là 2, sticky là 1. 4755 là chương trình setuid như passwd; 1777 là /tmp, ai cũng ghi được nhưng chỉ chủ của tệp mới xóa được; 2775 trên thư mục chung khiến tệp mới thừa hưởng nhóm của thư mục. Trong ls -l, chúng thay chỗ chữ x: s, t khi bit x cũng bật, chữ hoa S, T khi không, thường là dấu hiệu nhầm lẫn.
Tệp và thư mục khác nhau
Với tệp, r là đọc nội dung, w là sửa, x là chạy như chương trình. Với thư mục, r là liệt kê tên, x là đi vào và truy cập theo tên, w là tạo, đổi tên, xóa mục bên trong (cần cả x). Xóa một tệp phụ thuộc quyền của thư mục chứa nó, không phải của tệp.
umask và chmod dạng ký hiệu
Chương trình tạo tệp với 666 và thư mục với 777; umask bớt bit từ đó. umask 022 cho tệp 644 và thư mục 755, 027 cho 640 và 750, 077 giữ mọi thứ riêng tư. umask không bao giờ thêm quyền thực thi cho tệp mới, nên script vừa viết cần chmod +x. Trong biểu thức, X chỉ thêm thực thi cho thư mục và tệp đã có bit x, nên chmod -R a+rX an toàn cho cả cây tài liệu. Toán tử = xóa setuid với u, setgid với g, sticky với o như chmod GNU trên Linux; chmod của macOS và BSD giữ bit sticky khi dùng o=.
Đọc thêm cách đọc số chmod và umask không cần học thuộc, hoặc đổi cơ số khác bằng công cụ đổi hệ cơ số.