Как указать группу с помощью chmod?

30

Меня попросили добавить разрешения group-wrx в каталог в домашней папке другого пользователя.

Я верю, что я должен сделать, это бежать chmod 771 -R directoryname в родительском каталоге. То, что я не могу найти нигде на трубах, как указать который группа, я хочу дать эти разрешения. Я лично в нескольких группах, и в группе я не знаю, как root.

В случае, если это важно, система работает Redhat 5.4.

joe_young
источник

Ответы:

32

chmod() системный вызов и, соответственно, chmod программа, не влияет на группу файлов или каталогов (или другой тип файла: специальный блок, специальный символ, сокет, ... символическая ссылка является чем-то особенным). Таким образом, группа, которой предоставлено разрешение, будет группой, к которой принадлежит файл или каталог.

Добавить группу rwx разрешения, вы должны использовать:

chmod -R g+rwx DirectoryName

Однако это добавляет разрешения для каждого файла, а также для каждого каталога, и не все файлы должны быть исполняемыми. Лично я был бы очень недоволен, если бы кто-то предоставил разрешение на групповую запись для всех (или любых) моих каталогов, но это уже другая история.

Чтобы влиять только на каталоги, используйте find вместо:

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

(The + обозначение POSIX 2008; не все системы Unix поддерживают это, хотя Linux поддерживает.)

Jonathan Leffler
источник
1
Если вы используете + X (заглавная X), вы добавите разрешение на выполнение (или «поиск»), только если файл является каталогом или уже имеет разрешение на выполнение для какого-либо пользователя. linux.die.net/man/1/chmod
Dave
@ Dave: chmod +X кажется, поддерживается и на BSD (Mac OS X). Тщательное изучение POSIX chmod указывает на то, что +X это особенность POSIX: Символ перманента X должен представлять часть выполнения / поиска битов режима файла, если файл является каталогом или если текущие (немодифицированные) биты режима файла имеют по меньшей мере один из установленных битов выполнения (S_IXUSR, S_IXGRP или S_IXOTH). Он должен игнорироваться, если файл не является каталогом, и ни один из битов выполнения не установлен в текущих битах режима файла. Обратите внимание на обоснование ниже.
Jonathan Leffler
9

Каждый файл на вн Файловая система имеет:

  1. Владелец пользователя
  2. Группа владельцев
  3. Разрешения для этого пользователя, этой группы и всех остальных.

Если вы устанавливаете права доступа группы rwx для файла, только группа владельцев этого файла может читать / записывать / выполнять ее. Однако вы можете изменить пользователя и владельца с помощью:

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

Существуют различные реализации расширенных привилегий файловой системы, то есть ACL (списки контроля доступа) в Mac OS X, но, поскольку я не являюсь экспертом по Linux, вам, вероятно, следует спросить Ошибка сервера для этого.

Marian Theisen
источник
«поэтому, если вы устанавливаете права доступа для группы rwx для файла, только группа владельцев этого файла может читать / записывать / выполнять ее», я понимаю, что это может вводить в заблуждение, прежде всего, если вы являетесь владельцем пользователя, конечно, Правила пользователя владельца имеют приоритет, если вы не являетесь ни владельцем пользователя, ни в группе владельцев, применяются правила для других.