Bash Scripting - Как установить группу, с которой будут создаваться новые файлы? - PullRequest
66 голосов
/ 24 августа 2009

Я делаю скрипт оболочки bash и хочу изменить группу по умолчанию, в которой создаются новые файлы. Я знаю, что вы используете umask для изменения разрешений. Есть ли что-то для группы?

Ответы [ 2 ]

165 голосов
/ 24 августа 2009

Есть несколько способов сделать это:

  1. Вы можете изменить группу по умолчанию для всех файлов, созданных в конкретном каталог, установив флаг setgid для каталога (chmod g+s _dir_). Новые файлы в каталоге будут созданы с группой каталог (устанавливается с помощью chgrp <group> <dir>). Это относится к любой программе который создает файлы в каталоге.

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

  2. Если флаг setgid не установлен, то группа по умолчанию будет установлена ​​на текущий идентификатор группы процесса создания. Хотя это можно установить с помощью newgrp команда, которая создает новую оболочку, которую трудно использовать внутри оболочки скрипт. Если вы хотите выполнить определенную команду (или набор команд) с измененной группой используйте команду sg <group> <command>.

    sg не является стандартной командой POSIX, но доступна в Linux.

12 голосов
/ 24 августа 2009

Команда newgrp используется для изменения идентификатора текущей группы во время сеанса входа.

Новые каталоги, созданные в этом сеансе, будут иметь идентификатор группы, установленный командой.

newgrp (1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...