Cấp quyền ghi cho nhiều người dùng trên một thư mục trong Ubuntu


80

Có một thư mục thuộc sở hữu của người dùng tomcat6:

drwxr-xr-x 2 tomcat6 tomcat6 69632 2011-05-06 03:43 document

Tôi muốn cho phép người dùng khác (người dùng) ghi quyền trên thư mục tài liệu. Hai người dùng (tomcat6 và ruser) không thuộc cùng một nhóm. Tôi đã thử sử dụng setfacl:

sudo setfacl -m  u:ruser:rwx document

nhưng điều này cho tôi setfacl: document: Operation not supportedlỗi. Xin vui lòng giúp tôi.

Câu trả lời:


144

Có hai cách để làm điều này: đặt thư mục thành "thế giới" có thể ghi hoặc tạo một nhóm mới cho hai người dùng và làm cho thư mục có thể ghi vào nhóm đó.

Rõ ràng làm cho nó trở thành thế giới có thể ghi là một điều xấu, vì vậy lựa chọn thứ hai là thích hợp hơn.

Người dùng trong Linux có thể thuộc nhiều nhóm. Trong trường hợp này bạn muốn tạo một nhóm hoàn toàn mới, hãy gọi nó là tomandruser:

sudo groupadd tomandruser

Bây giờ nhóm tồn tại, thêm hai người dùng vào nó:

sudo usermod -a -G tomandruser tomcat6
sudo usermod -a -G tomandruser ruser

Bây giờ tất cả những gì còn lại là để đặt quyền trên thư mục:

sudo chgrp -R tomandruser /path/to/the/directory
sudo chmod -R 770 /path/to/the/directory

Bây giờ chỉ có các thành viên của nhóm tomandruser có thể đọc, viết hoặc thực thi bất cứ điều gì trong thư mục. Lưu ý đối số -R cho các lệnh chmod và chgrp: điều này bảo chúng lặp lại vào mọi thư mục con của thư mục đích và sửa đổi mọi tệp và thư mục mà nó tìm thấy.

Bạn cũng có thể muốn thay đổi 770 thành một cái gì đó như 774nếu bạn muốn người khác có thể đọc các tệp, 775nếu bạn muốn người khác đọc và thực thi các tệp, v.v. Thay đổi gán nhóm sẽ không có hiệu lực cho đến khi người dùng đăng xuất và quay lại trong.

Nếu bạn cũng muốn (bạn có thể làm) rằng các tệp mới được tạo trong thư mục bởi một trong những người dùng có thể tự động ghi được bởi những người khác trong nhóm, thì hãy xem tại đây .


2
Có lẽ bạn cũng muốn đặt cờ ID nhóm nhóm cho các thư mục, để tạo các tệp mới và thư mục con được sở hữu bởi nhóm bên phải:sudo find /path/to/the/directory -type d -exec chmod 2770 '{}' \;
Marcello Nuccio

8
Tôi sẽ tránh sử dụng chmod 770, 775 hoặc bất cứ điều gì. Điều đó gây rối với sự cho phép của tất cả các tập tin. Thay vào đó, hãy sử dụng một cái gì đó như chmod -R g+wđể thêm quyền ghi mà không làm hỏng mọi thứ khác.
Christian Varga

2
Nếu người dùng tạo một tệp mới ở đó (giả sử là mysql SELECT INTO OUTFILE), thì nó sẽ đặt quyền cho nhóm chính của nó ( mysqltrong trường hợp này) và dù sao người dùng cũng không thể truy cập tệp. Làm thế nào để giải quyết vấn đề này?
Olexa

2
Điều gì xảy ra nếu bạn muốn cấp cho người dùng quyền truy cập ghi vào thư mục mà không thay đổi quyền sở hữu của thư mục, ví dụ: bạn không muốn gây rối với quyền của apache trên thư mục chung_html?
codecowboy

2
Lưu ý: "Thay đổi gán nhóm sẽ không có hiệu lực cho đến khi người dùng đăng xuất và đăng nhập lại." Tôi đã bỏ lỡ điều đó :)
Vladimir Vukanac 4/12/2015

3

Kịch bản ví dụ hiển thị một ví dụ để cấp w (write)/ r (read) / x (execute)quyền cho đường dẫn thư mục đã /path/to/the/directorycho USER1USER2. Nếu bạn muốn chỉ cung cấp quyền truy cập viết xin vui lòng thay thế rwxbằng w.


#!/bin/bash

# Block others and people in the same group to do read/write/execute on give folder:    
sudo chmod 700 /path/to/the/directory 

#Give read/write/execute access to USER1 on give folder:
sudo setfacl -R -m user:USER1:rwx  /path/to/the/directory 

#Give read/write/execute access to USER2 on give folder:
sudo setfacl -R -m user:USER2:rwx  /path/to/the/directory 
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.