Làm thế nào để chỉ định nhóm với chmod?


34

Tôi đã được yêu cầu thêm quyền nhóm-wrx vào một thư mục trong thư mục nhà của người dùng khác.

Tôi tin rằng những gì tôi nên làm là chạy chmod 771 -R directorynametrong thư mục cha. Những gì tôi không thể tìm thấy bất cứ nơi nào trên ống là làm thế nào để xác định nhóm tôi muốn cung cấp các điều khoản để. Tôi là cá nhân trong một số nhóm và trong một nhóm tôi không biết về quyền root.

Trong trường hợp có vấn đề, hệ thống đang chạy Redhat 5.4.

Câu trả lời:


37

Cuộc chmod()gọi hệ thống và bằng cách mở rộng chmodchương trình, không ảnh hưởng đến nhóm tệp hoặc thư mục (hoặc loại tệp khác: khối đặc biệt, ký tự đặc biệt, ổ cắm, ... symlink là một trường hợp đặc biệt). Vì vậy, nhóm được cấp quyền sẽ là nhóm mà tệp hoặc thư mục thuộc về.

Để thêm rwxquyền của nhóm , bạn nên sử dụng:

chmod -R g+rwx DirectoryName

Tuy nhiên, điều này bổ sung các quyền cho mọi tệp cũng như mọi thư mục và không phải tất cả các tệp đều có thể được thực thi. Cá nhân, tôi sẽ rất không vui nếu ai đó cung cấp cho phép viết nhóm trên tất cả (hoặc bất kỳ) thư mục của tôi, nhưng đó là một câu chuyện khác.

Để chỉ ảnh hưởng đến thư mục, hãy sử dụng findthay thế:

find DirectoryName -type d -exec chmod g+rwx {} +

( +Ký hiệu là POSIX 2008; không phải tất cả các hệ thống Unix đều hỗ trợ, mặc dù Linux thì có.)


1
Nếu bạn sử dụng + X (viết hoa X), bạn sẽ chỉ thêm quyền thực thi (hoặc 'tìm kiếm') nếu tệp là thư mục hoặc đã có quyền thực thi cho một số người dùng. linux.die.net/man/1/chmod
Dave

@Dave: chmod +Xcũng được hỗ trợ trên BSD (Mac OS X). Rà soát cẩn thận POSIX chmodchỉ ra rằng đó +Xlà một tính năng POSIX: Biểu tượng perm X sẽ đại diện cho phần thực thi / tìm kiếm của các bit chế độ tệp nếu tệp là một thư mục hoặc nếu các bit chế độ tệp hiện tại (chưa sửa đổi) có ít nhất một các bit thực thi (S_IXUSR, S_IXGRP hoặc S_IXOTH) được đặt. Nó sẽ bị bỏ qua nếu tệp không phải là một thư mục và không có bit thực thi nào được đặt trong các bit chế độ tệp hiện tại. Lưu ý cơ sở lý luận dưới đây.
Jonathan Leffler

12

Mỗi tệp trên một hệ thống tệp ext có:

  1. Một người dùng chủ sở hữu
  2. Một nhóm chủ sở hữu
  3. Quyền cho người dùng này, nhóm này và mọi người khác.

Nếu bạn đang đặt quyền nhóm rwx trên một tệp, chỉ nhóm chủ sở hữu của tệp đó mới có thể đọc / ghi / thực thi nó. Tuy nhiên, bạn có thể thay đổi người dùng và chủ sở hữu bằng:

chown username file1 file2 ...
chown -R username somedir
chgrp groupname file1 file2 ....
chgrp -R groupname somedir
chown username:groupname file1 file2 ...

Có nhiều cách triển khai khác nhau cho các đặc quyền hệ thống tệp mở rộng, ví dụ ACL (Danh sách điều khiển truy cập) trên Mac OS X, nhưng vì tôi không phải là chuyên gia Linux, nên có lẽ bạn nên hỏi về Server Fault về điều đó.


"vì vậy nếu bạn đang đặt quyền nhóm rwx trên một tệp, thì chỉ nhóm chủ sở hữu của tệp đó mới có thể đọc / ghi / thực thi nó" tôi nhận ra rằng điều đó có thể gây hiểu lầm, trước hết nếu bạn là người dùng chủ sở hữu, tất nhiên là quy tắc người dùng chủ sở hữu được ưu tiên, nếu bạn không phải là người dùng chủ sở hữu cũng như trong nhóm chủ sở hữu, các quy tắc cho người khác sẽ được áp dụng.
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.