Đặt nhóm mặc định cho người dùng khi họ tạo tệp mới?


37

Tôi thường thấy mình tập tin khi tôi tạo chúng thông qua SSH và chúng được sở hữu jm:jmchẳng hạn.

Sau đó, để cho phép Apache truy cập nó, tôi cần phải làm ví dụ chown jm:www-data.

Tôi chắc chắn rằng tôi có thể chỉ định rằng khi tôi tạo tệp, thay vì sử dụng nhóm dưới tên của mình, chỉ định nhóm khác?

Hoặc có cách nào tốt hơn để quản lý người dùng / nhóm?

Câu trả lời:


75

Nếu bạn muốn tất cả các tệp mới trong một thư mục cụ thể thuộc sở hữu của một nhóm cụ thể, chỉ cần áp dụng setgidbit trên đó:

chgrp www-data /some/dir
chmod g+s /some/dir

Nếu bạn có một cây thư mục hiện có mà bạn muốn áp dụng hành vi này, bạn có thể làm như vậy với find:

find /some/dir -type d -exec chgrp www-data {} +
find /some/dir -type d -exec chmod g+s {} +

(nếu các thư mục đã được sở hữu bởi nhóm có liên quan, thì bạn có thể bỏ qua lệnh đầu tiên trong cả hai ví dụ này).


1
Câu trả lời tốt đẹp! Bạn có thể, xin vui lòng làm rõ những biểu tượng ... {} +có nghĩa là gì?
Alexander Lomia

3
Họ là đối số của findlệnh, được bao phủ trong trang người đàn ông. Đối với lần gọi đầu tiên, nó sẽ chạy lệnh chgrp www-data, nối thêm một số kết quả dưới dạng đối số (thay vì gọi lệnh một lần cho mỗi kết quả như bạn nhận được {} \;).
James Henstridge

6
Tại sao không sử dụng chmod g+s /some/dir -R? Chỉ cần thử nghiệm và nó dường như làm việc.
Cragmonkey

13
@Cragmonkey: điều đó cũng sẽ đặt bit setgid trên các tệp thông thường. Nếu bất kỳ ai trong số họ tình cờ có thể thực thi được, điều này sẽ cho phép người dùng khác trên hệ thống có được các đặc quyền của nhóm sở hữu tệp.
James Henstridge
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.