Các quyền của thư mục mẹ có quan trọng khi truy cập thư mục con không?


160

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?


12
Lưu ý rằng việc chỉnh sửa thư mục thành 600 khiến cho ngay cả chủ sở hữu cũng không thể truy cập được, vì bạn cần có quyền thực thi để chdir vào đó ...
Shadur

Câu trả lời:


183

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 dirdir/subdircộng với quyền filecho 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/barnhư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/barqua 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/bartrong 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/bartrướ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 symlà 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 //homenằm ngoài giới hạn đối với joe( setfacl -m user:joe:0 / /home) và /home/joejoethư mục chính của bạn, thì joebạ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/shhoặ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.


32

Không. Quyền thư mục gốc giới hạn quyền của tập tin con. Bạn có thể thử nó.

$ mkdir rootdir
$ touch ./rootdir/childfile
$ chmod 777 ./rootdir/childfile
$ chmod 600 rootdir
$ cat ./rootdir/childfile

Tôi nhận được điều này:

$ cat: ./rootfolder/childfile: permission denied

4

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.


1

Bạn có thể tạo liên kết cứng để truy cập tệp ngay cả khi bạn không có đặc quyền thực thi trên thư mục mẹ. Nhưng điều hấp dẫn ở đây là bạn phải tạo liên kết cứng trước khi bạn mất đặc quyền thực thi của mình trên thư mục mẹ

$ ln foo/bar/test_privs privs_test_checking
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.