2009-08-24 24 views

Trả lời

8

newgrp (1)

+0

Tôi là thành viên của nhóm, vậy tại sao tôi yêu cầu mật khẩu? Nó không thích mật khẩu của tôi! – Michael

+0

cũng vậy, nếu tôi chạy "newgrp " làm gốc (ví dụ: chạy tập lệnh với newgrp trong đó bằng sudo), nó sẽ đưa tôi vào trình bao gốc. – Michael

+0

Đây không phải là những gì newgrp nên được sử dụng cho. Điều gì sẽ xảy ra nếu bạn quên sử dụng newgrp bên ngoài kịch bản? Kịch bản sẽ xử lý shell mới mà newgrp tạo ra như thế nào. Câu trả lời của @ mark40 là tốt hơn. – noel

156

Có một vài cách để làm điều này:

  1. Bạn có thể thay đổi nhóm mặc định cho tất cả các file được tạo ra trong một thư mục cụ thể bằng cách thiết lập cờ setgid trên thư mục (chmod g+s _dir_). Các tệp mới trong thư mục sau đó sẽ được tạo bằng nhóm của thư mục (được đặt bằng chgrp <group> <dir>). Điều này áp dụng cho bất kỳ chương trình nào tạo tệp trong thư mục.

    Lưu ý rằng đây là Automagically kế thừa cho các thư mục con mới (tính Linux 3.10), tuy nhiên, nếu thư mục con đều đã có mặt, sự thay đổi này sẽ không được áp dụng đối với họ (sử dụng cờ -R cho điều đó).

  2. Nếu cờ setgid không được đặt, thì nhóm mặc định sẽ được đặt thành id nhóm hiện tại của quá trình tạo. Mặc dù điều này có thể được đặt bằng cách sử dụng lệnh newgrp , điều này tạo ra một trình bao mới khó sử dụng trong một tập lệnh shell . Nếu bạn muốn thực hiện một lệnh cụ thể (hoặc tập lệnh) với nhóm đã thay đổi, hãy sử dụng lệnh sg <group> <command>.

    sg không phải là lệnh chuẩn POSIX nhưng có sẵn trên Linux.

+5

Chỉ là một lưu ý nhỏ. Nếu bạn cố gắng chạy 'chmod g + s _dir_' trên một thư mục có nhóm y, và bạn đang chạy lệnh dưới người dùng x, và người dùng x không phải là thành viên của nhóm y nó sẽ không hoạt động. Bạn sẽ phải chạy nó như là người chủ. – LEDfan

Các vấn đề liên quan