Tính nhẩm quy đổi umask và permission của file và folder trong linux

Umask là gì thì xem lại bài này
Umask là gì

Câu hỏi này nếu thi LPI sẽ bị hỏi, mình note ra đây để ghi nhớ cho bản thân. Hy vọng người khác google tìm thấy cũng sẽ hữu ích

Trong Linux, khi một file hay một thư mục được tạo ra thì các quyền hạn truy cập đối với chúng là (read, write, execute) cho các chủ thể (owner, group, other) sẽ được xác định dựa trên hai giá trị là quyền truy nhập cơ sở (base permission) và mặt nạ (mask).

  •  Base Permission là giá trị được thiết lập sẵn từ trước, và ta không thể thay đổi được

+ đối với file thông thường giá trị base Permission là 666 (rw-rw-rw-)

+ đối với thư mục (file đặc biệt) giá trị base Permission là 777 (rwxrwxrwx)

  • Mask là giá trị đựợc thiết lập bởi người dùng bằng lệnh umask

Giá trị Mask sẽ “che đi” một số bit trong Base Permission để tạo ra quyền truy cập chính thức cho file (tương tự như cơ chế của subnet mask).

Cụ thể, quyền truy cập chính thức được tính bằng cách lấy “giá trị nhị phân của Base permission ”AND“ dạng biểu diễn bù 1 của mask”

Như vậy, đối với File, tổng của Umask và permission = 666 và đối với folder là 777
– Giả sử file có quyền là 644 => umask = 666 – 644 = 022
– Giả sử folder có quyền là 750 => umask = 777 – 750 = 027
Tương tự cứ cộng trừ là ra, không cần phải hiểu lý thuyết binary với mask làm gì cho phức tạp. Đương nhiên, nếu hiểu bản chất sẽ OK hơn.