Đầu tiên, hãy nghĩ: một thư mục là gì? Nó chỉ là một danh sách các mục (tệp và thư mục khác) sống trong đó. Vì vậy: thư mục = danh sách tên.
Đọc bit = Nếu được đặt, bạn có thể đọc danh sách này. Vì vậy, ví dụ, nếu bạn có một thư mục có tên poems
:
- Bạn có thể
ls poems
và bạn sẽ nhận được một danh sách các vật phẩm sống trong đó ( -l
sẽ không tiết lộ bất kỳ chi tiết nào!).
- Bạn có thể sử dụng hoàn thành dòng lệnh tức là
touch poems/so <TAB> poems/somefile
.
- Bạn không thể tạo
poems
thư mục làm việc của bạn (tức là cd
vào nó).
Viết bit = Nếu được đặt, bạn có thể sửa đổi danh sách này tức là bạn có thể {thêm, đổi tên, xóa} tên trên đó. Nhưng! Bạn thực sự có thể làm điều đó chỉ khi bit thực thi được đặt quá.
Thực thi bit = Làm cho thư mục này thư mục làm việc của bạn tức là cd
vào nó. Bạn cần sự cho phép này nếu bạn muốn:
- truy cập (đọc, viết, thực thi) các mục sống trong.
- tự sửa đổi danh sách tức là thêm, đổi tên, xóa tên trên đó (tất nhiên bit ghi phải được đặt trên thư mục).
Trường hợp thú vị 1 : Nếu bạn có quyền ghi + thực thi trên một thư mục, bạn có thể {xóa, đổi tên} các mục sống ngay cả khi bạn không viết ghi chú vào các mục đó. (sử dụng bit dính để ngăn chặn điều này)
Trường hợp thú vị 2 : Nếu bạn đã thực thi quyền (nhưng không ghi) trên thư mục VÀ bạn có quyền ghi trên tệp sống trong đó, bạn không thể xóa tệp (vì liên quan đến việc xóa tệp khỏi danh sách). Tuy nhiên, bạn có thể xóa nội dung của nó, ví dụ nếu đó là tệp văn bản, bạn có thể sử dụng vi để mở và xóa mọi thứ. Các tập tin sẽ vẫn ở đó, nhưng nó sẽ trống.
Tóm lược:
Đọc bit = Bạn có thể đọc tên trong danh sách.
Viết bit = Bạn có thể {thêm, đổi tên, xóa} tên trong danh sách NẾU bit thực thi cũng được đặt.
Thực thi bit = Bạn có thể làm cho thư mục này trở thành thư mục làm việc của bạn.
PS: Bài báo được đề cập bởi Kusalananda là một bài đọc tốt.