it-swarm-vi.com

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

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?

168
Ken Li

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 trên dirdir/subdir, cộng với các quyền trê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 có quyền thực thi trê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 trong /foo/bar thông 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ể đổi thành /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 đãi. 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 trên dir để truy cập sym/foo. Các quyền trên symlink có thể có hoặc không quan trọng tùy thuộc vào HĐH và hệ thống tệp (một số tôn trọng chúng, một số bỏ qua chúng).

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 //home là giới hạn đối với joe (setfacl -m user:joe:0 / /home) và /home/joe là thư mục chính của joe, sau đó joe sẽ không thể truy cập phần còn lại của hệ thống (bao gồm cả chạy tập lệnh Shell với /bin/sh hoặc nhị phân được liên kết động cần truy cập /lib, vì vậy bạn cần đ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.

195

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
34
goovim

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 lập trình viên) vẫn có thể ghi vào thư mục con nhưng không thể vào thư mục mẹ.

4
Kemin Zhou

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
1
Kamal