Thursday, December 24, 2009

Tìm hiểu về umask

Nguồn:
http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html
http://www.sun.com/bigadmin/content/submitted/umask_permissions.html

umask là gì?
umask được sử dụng để kiểm soát quyền mặc định của các files mới khi nó được tạo ra. umask gồm 4 chữ số trong hệ cơ số 8 (four-digit octal)

Gán umask mặc định như thế nào?
Bạn có thể gán umask mặc định trong /etc/bashrc hoặc /etc/profile cho tất cả các users. Phần lớn các distro đều gán là 0022 hoặc 0002.
Để gán umask cho một user xác định nào đó, bạn có thể chỉnh sửa ~/.bashrc của user đó và thêm vào dòng sau:
umask 022

Lưu lại, logout và login lại để thay đổi trên có hiệu lực.

0022 và 0002 nghĩa là gì?
umask mặc định 0002 được sử dụng cho normal user. Với mặt nạ (mask) này, quyền mặc định của thư mục sẽ là 775 và quyền mặc định của file sẽ là 664.

umask mặc định cho root là 0022, nghĩa là quyền mặc định của thư mục sẽ là 755 và quyền mặc định của file sẽ là 644.

Nôm na bạn có thể hiểu rằng: Trước khi file hoặc thư mục được tạo ra, quyền truy cập đối với chúng được xác định dựa vào hai giá trị: quyền truy cập cơ sở (base permissions) và mặt nạ (mask). Đối với thư mục, quyền truy cập cơ sở là 0777(rwxrwxrwx), còn đối với files là 0666 (rw-rw-rw).

Thiết lập giá trị mask như thế nào?
Giá trị "mask" được thiết lập nhờ lệnh umask. Tất cả các file và thư mục được tạo ra sau đó sẽ chịu ảnh hưởng của giá trị mask mới.

Để tính toán quyền truy cập thư mục với umask 022 (root user):
Quyền truy cập mặc định: 777
Giá trị umask: 022
Quyền truy cập cho phép: 755

Để tính toán quyền truy cập file với umask 022 (root user):
Quyền truy cập mặc định: 666
Giá trị umask: 022
Quyền truy cập cho phép: 644

Lấy một ví dụ đơn giản: Bạn cần gán umask để các files được tạo ra sau đó sẽ có permissions là 600.
Ta có:
Quyền truy cập mặc định: 666
Giá trị umask: 066
Quyền truy cập cho phép: 600

Code:
 $ umask 066
$ touch test.txt
$ ls -l test.txt
-rw------- 1 quanta quanta 0 2008-02-16 17:38 test.txt

Quyền truy cập cho phép là kết quả giữa phép toán sau:

Quyền truy cập cho phép = "quyền truy cập mặc định" AND (NOT (Giá trị umask))

Ví dụ:
Quyền truy cập mặc định: 666 = 110 110 110
Giá trị umask: 123 = 001 010 011
--> NOT (Giá trị umask) = NOT (001 010 011) = 110 101 100
Quyền truy cập cho phép = 110 110 110 AND 110 101 100 = 110 100 100 = 644


No comments:

Post a Comment