Nếu tôi có một thư mục gốc với một số quyền hạn chế, giả sử là 600 và nếu các thư mục / tệp con có quyền 777, mọi người sẽ có thể đọc / ghi / thực thi tệp con mặc dù thư mục gốc có 600?
Nếu tôi có một thư mục gốc với một số quyền hạn chế, giả sử là 600 và nếu các thư mục / tệp con có quyền 777, mọi người sẽ có thể đọc / ghi / thực thi tệp con mặc dù thư mục gốc có 600?
Câu trả lời:
Quy tắc chính xác là: bạn có thể duyệt qua một thư mục nếu và chỉ khi bạn có quyền thực thi trên nó.
Vì vậy, ví dụ để truy cập dir/subdir/file
, bạn cần có quyền thực thi dir
và dir/subdir
cộng với quyền file
cho loại quyền truy cập bạn muốn. Đi sâu vào các trường hợp góc, tôi không chắc liệu bạn có cần thực thi quyền trên thư mục hiện tại để truy cập tệp thông qua một đường dẫn tương đối hay không (bạn làm trên Linux).
Cách bạn truy cập một tập tin quan trọng. Ví dụ: nếu bạn đã thực thi quyền /foo/bar
nhưng không bật /foo
, nhưng thư mục hiện tại của bạn là /foo/bar
, bạn có thể truy cập các tệp /foo/bar
qua một đường dẫn tương đối nhưng không thông qua một đường dẫn tuyệt đối. Bạn không thể thay đổi /foo/bar
trong kịch bản này; một quy trình đặc quyền hơn có lẽ đã được thực hiện cd /foo/bar
trước khi không được ưu tiên. Nếu một tệp có nhiều liên kết cứng, đường dẫn bạn sử dụng để truy cập sẽ xác định các ràng buộc truy cập của bạn.
Liên kết tượng trưng không có gì thay đổi. Nhân sử dụng quyền truy cập của quá trình gọi để duyệt qua chúng. Ví dụ: nếu sym
là một liên kết tượng trưng đến thư mục dir
, bạn cần có quyền thực thi dir
để truy cập sym/foo
. Các quyền trên chính liên kết tượng trưng có thể có hoặc không quan trọng tùy thuộc vào Hệ điều hành và hệ thống tệp (một số tôn trọng chúng, một số bỏ qua chúng).
Việc xóa quyền thực thi khỏi thư mục gốc hạn chế một cách hiệu quả người dùng đối với một phần của cây thư mục (mà một quy trình đặc quyền hơn phải thay đổi thành). Điều này đòi hỏi danh sách kiểm soát truy cập được sử dụng. Ví dụ: nếu /
và /home
nằm ngoài giới hạn đối với joe
( setfacl -m user:joe:0 / /home
) và /home/joe
là joe
thư mục chính của bạn, thì joe
bạn sẽ không thể truy cập phần còn lại của hệ thống (bao gồm chạy các tập lệnh shell với /bin/sh
hoặc các nhị phân được liên kết động cần truy cập /lib
, vì vậy bạn ' d cần phải đi sâu hơn để sử dụng thực tế, ví dụ setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib
).
Đọc quyền trên một thư mục cung cấp quyền liệt kê các mục. Cho phép thực thi mà không cho phép đọc đôi khi rất hữu ích: tên của các mục nhập đóng vai trò là mật khẩu để truy cập chúng. Tôi không thể nghĩ ra bất kỳ việc sử dụng nào trong việc cho phép đọc hoặc ghi vào thư mục mà không có quyền thực thi.
Bạn có thể làm cho thư mục con có thể ghi được ngay cả thư mục cha thì không. Tôi làm điều này cho các nhóm.
Ví dụ: thư mục mẹ được sở hữu bởi bộ mã hóa nhóm
drwxr-sr-x
thư mục con
drwxrwsr-x
Bạn (bất kỳ thành viên nào trong nhóm coder) vẫn có thể ghi vào thư mục con nhưng không thể vào thư mục cha.