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


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команди, висвітленої на сторінці man. Для першого виклику вона запустить команду chgrp www-data, додавши до аргументу ряд результатів (замість того, щоб викликати команду один раз для кожного результату, як ви отримаєте {} \;).
James Henstridge

6
Чому б не використовувати chmod g+s /some/dir -R? Просто перевірений і, здається, працює.
Cragmonkey

13
@Cragmonkey: це також встановить встановлений жорсткий біт для звичайних файлів. Якщо будь-який з них може бути виконаним, це дозволить іншому користувачеві в системі отримати привілеї групи, яка володіє файлом.
Джеймс Генстридж
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.