Tôi có thể ghi đè ô của mình bằng ACL để làm cho tất cả các tệp được tạo trong thế giới thư mục đã cho có thể đọc được không?


11

Giả sử rằng ô của tôi là 0077.

Tôi có một thư mục, foomà tôi muốn có các quyền đặc biệt được áp dụng cho nó. Tất cả các tệp tôi tạo foonên có thể đọc được trên thế giới và tất cả các thư mục phải có thể đọc được trên thế giới và có thể thực thi được.

Hiện tại, nếu tôi tạo một tệp, nó sẽ là 0600 và một thư mục sẽ là 0700:

$ cd foo/
$ touch file
$ mkdir directory
$ ls -l
drwx------ 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw------- 1 nfm nfm    0 2012-01-12 16:15 file

Tôi muốn tệp là 0644 và thư mục 0755, bất kể ô của tôi:

drwxr-xr-x 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw-r--r-- 1 nfm nfm    0 2012-01-12 16:15 file

Làm thế nào tôi có thể đạt được điều này?


Bạn đã không thử googling "umask mỗi thư mục", phải không? Nếu tôi có quyền, tôi sẽ đánh giá thấp bạn vì điều này, vì lần tấn công thứ ba là một bash hack để làm chính xác những gì bạn muốn (được cấp, chỉ dành cho BẠN, không phải cho người dùng khác.)
Brett Dikeman

3
@BeeDee Tôi đã thấy điều đó. Tôi thú vị theo những cách khác để làm điều đó, hy vọng sử dụng ACL. Tôi thà không kiểm tra / thay đổi ô của mình trên mỗi cd hoặc ghi đè các hàm bash.
stickmangumby

Câu trả lời:


14

Vâng, acl có thể làm điều này.

  1. Đảm bảo hệ thống tập tin của bạn được gắn kết với acl. Để kiểm tra điều này, gõ mount. Bạn có thể thấy 'acl' được liệt kê trong số các quyền khác, ví dụ:

    /dev/sda1 on / type ext4 (rw,errors=remount-ro,acl)
    

    Nếu nó không được gắn với acl, hãy mở / etc / fstab và thêm 'acl' vào danh sách các tùy chọn:

    # /etc/fstab: static file system information.
    #
    # <file system> <mount point>   <type>   <options>       <dump>  <pass>
    /dev/sda1       /          ext3     noatime,errors=remount-ro,acl 0       1
    

    Bây giờ, gắn lại hệ thống tập tin đang chạy với các tùy chọn mới:

    mount -v -o remount /
    
  2. Cài đặt các tiện ích acl. Trên Ubuntu / debian, đây là:

    sudo apt-get install acl
    
  3. Bạn bè mới của bạn là setfaclgetfacl. Sử dụng setfaclđể thay đổi acl mặc định cho một thư mục:

    setfacl -d -m o:r foo
    

    -dđặt mặc định, -msửa đổi acl và o:rcấp cho "người khác" quyền đọc. Đặt mặc định trên thư mục gần tương đương với cài đặt setgid trên thư mục, nhưng thay vì các tệp mới được tạo kế thừa nhóm, chúng sẽ kế thừa acl. Cùng nhau, setgid và acl có thể mạnh mẽ, bởi vì bạn có thể cấp quyền mặc định cho một nhóm và nhận các tệp mới được tạo để thuộc về nhóm đó, cho một ô riêng cho mỗi thư mục dựa trên nhóm hiệu quả.

  4. Kiểm tra công việc của bạn: ls -lbây giờ sẽ hiển thị thêm "+" cho biết sự hiện diện của acl bên cạnh các quyền của tệp tiêu chuẩn.

    % ls -la foo/
    drwxr--r--+
    

    Bạn có thể nhận thông tin chi tiết về acl bằng cách sử dụng getfacl.

    % getfacl foo
    # file: foo
    # owner: you
    # group: you
    user::rwx
    group::r--
    other::r--
    default:user::rwx
    default:group::---
    default:other::r--
    

1
Điều này dường như không làm việc cho tôi. setfaclgetfaclđang trả về đầu ra dự kiến, nhưng chỉ các thư mục (không phải tệp) trong thư mục mẹ đang kế thừa acl, và thậm chí sau đó, ô của tôi được ưu tiên hơn mặc định (nếu chúng không thể đọc được trên thế giới, default:other::r--thì không cho phép người dùng khác truy cập chúng). Tôi đã bỏ lỡ một cái gì đó rõ ràng?
stickmangumby

Một điều tôi đã tìm thấy (có lẽ đây là rắc rối): facl dường như sử dụng đầu tiên của (người dùng, nhóm, người khác) mà người dùng hiện tại phù hợp. Nghĩa là, nếu bạn thuộc nhóm cho tệp, acl cho nhóm sẽ được xử lý, không phải acl cho nhóm khác. Acl vẫn nên được kế thừa nếu bạn áp dụng thư mục với -d, mặc dù ....
user67641

Hừm, chỉ cần thử lại lần nữa và mọi thứ đều hoạt động tốt. Xin lỗi, không chắc chắn những gì tôi đã làm sai lần đầu tiên! Cảm ơn :)
stickmangumby

2

Bạn cũng có thể buộc một ô cho thư mục bằng cách đặt thuộc tính ACL mặt nạ như thế này:

setfacl -d -m mask:07 .

-4

Chỉ cần cài đặt OnDir và cấu hình đúng theo nhu cầu của bạn. Tôi đã trả lời một vấn đề tương tự nằm ở đây .


Câu hỏi không đề cập bất cứ điều gì về việc duyệt qua các thư mục với một thiết bị đầu cuối, đó là những gì OnDir dành cho.
Yarin
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.