Umask và quyền truy nhập file

Umask là gì?

Trong Unix, trước khi một file hay một thư mục được tạo ra thì quyền truy nhập đối với chúng được xác định nhờ hai giá trị là quyền truy nhập cơ sở (base permission) và mặt nạ (mask). Quyền truy nhập cơ sở của file là 666 (rw-rw-rw) và của thư mục là 777 (rwxrwxrwx). Trước khi file hoặc thư mục được tạo ra, giá trị cơ sở này được so sánh với một “mặt nạ” (mask) đựợc xác định bởi lệnh umask. Giá trị mặt nạ sẽ “che đi” một số bit trong giá trị cơ sở và tạo ra quyền truy nhập chính thức cho file hoặc thư mục được tạo ra.

Cụ thể, quyền truy nhập chính thức được tính bằng cách lấy giá trị nhị phân của quyền truy nhập cơ sở AND với dạng biểu diễn bù 1 của mặt nạ.
Ví dụ: Quyền truy nhập cơ sở của file là 666 hay 110110110. Nếu giá trị mask là 022 hay 000010010 thì quyền truy nhập chính thức của các file được tạo ra sẽ là

Mã:
110 110 110 AND 111 101 101 = 110 100 100 = 644 (rw-r--r--)
Như vậy, các bit trong quyền truy nhập cơ sở ứng với các bit 1 của mask sẽ bị xóa. Cũng có thể tính quyền truy nhập chính thức đơn giản hơn bằng cách lấy 666 – 022 = 644

Giá trị mask được thiết lập như thế nào?

Giá trị mask được thiết lập nhờ lệnh umask. Các file được tạo ra sau lệnh umask sẽ chịu tác động của giá trị mặt nạ mới.

Tại sao không thể tạo file với quyền excutable mặc định?

Vì quyền truy nhập cơ sở của file là 666, tức là các bit ứng với quyền executable đều bằng 0 nên bất kể giá trị mask bằng bao nhiêu thì quyền truy nhập chính thức của file đều không có executable. Chúng ta buộc phải cấp thêm quyền executable cho file sau khi chúng đã được tạo ra.

Quyền truy nhập file và một số lệnh thông dụng:

- Lệnh cp: Khi sao chép một file sang vị trí mới, quyền truy nhập của file này được tính theo công thức trình bày ở trên với giá trị mask tại vị trí đích. Trong trường hợp trùng tên file thì quyền truy nhập của file ở vị trí đích sẽ được bảo lưu. Sử dụng tùy chọn –p để lấy quyền truy nhập của file nguồn

- Lệnh tar: Khi giải nén các file lệnh tar lấy quyền truy nhập của từng file làm quyền truy nhập cơ sở cho file đó.


(Nguồn: http://www.sun.com/bigadmin/content/submitted/umask_permissions.html)