Установить группу по умолчанию для пользователя при создании новых файлов?


37

Я часто сталкиваюсь с тем, что создаю файлы, создавая их через SSH, и они принадлежат, jm:jmнапример.

Затем, чтобы позволить Apache получить к нему доступ, мне нужно, например, сделать chown jm:www-data.

Я уверен, что могу указать, что при создании файлов вместо использования группы под моим именем укажите другую?

Или есть лучший способ управления пользователями / группами?

Ответы:


75

Если вы хотите, чтобы все новые файлы в определенном каталоге принадлежали определенной группе, просто примените setgidбит к нему:

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

Если у вас есть существующее дерево каталогов, к которому вы хотите применить это поведение, вы можете сделать это с помощью find:

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

(если каталоги уже принадлежат соответствующей группе, вы можете пропустить первую команду в обоих этих примерах).


1
Хороший ответ! Не могли бы вы уточнить, что ... {} +означают символы ?
Александр Ломия

3
Это аргументы findкоманды, описанные в справочной странице. Для первого вызова он запустит команду chgrp www-data, добавив несколько результатов в качестве аргументов (вместо того, чтобы вызывать команду один раз для каждого результата, как вы получите {} \;).
Джеймс Хенстридж

6
Почему бы не использовать chmod g+s /some/dir -R? Только что проверил и похоже на работу.
Cragmonkey

13
@Cragmonkey: это также установит бит setgid для обычных файлов. Если какой-либо из них окажется исполняемым, это позволит другому пользователю в системе получить привилегии группы, которой принадлежит файл.
Джеймс Хенстридж
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.