Мне бы хотелось, чтобы все файлы, созданные в определенном каталоге, автоматически получали разрешения 755, это возможно?

Соответствующая папка перезаписывается каждые пару дней, но я хочу, чтобы ее содержимое сохраняло разрешения 755. я пробовал chmod g+s dir но безрезультатно. Это вообще возможно?

2 ответа

Решение

Вы не можете сделать это с моделью разрешений posix; для этого просто нет условий. Соответствующее положение (setuid и setgid для каталогов) позволяет наследовать владение одним уровнем, но не разрешениями.

Вам следует рассмотреть возможность использования списков ACL, если вам нужна эта функциональность, поскольку их можно сделать наследуемыми (во всяком случае, во время создания файла), но для этого требуется немного подумать о структуре разрешений. Предполагая, что у вас есть поддержка POSIX ACL в вашей системе и в вашей файловой системе, ACL, который вы хотите установить в каталоге, будет выглядеть примерно так: d:u::7,d:g::5,d:o::5 (это заставляет ACL работать с UID и GID, к которому принадлежит файл; если вам нужно это унаследовать, создайте каталог suid и sgid). Списки ACL по умолчанию для каталогов применяются к новым файлам и каталогам, созданным в них, поэтому, хотя это не совсем способ создания разрешений для файлов 0755, он, вероятно, будет делать то, что вам нужно.

В ACL есть некоторая кривая обучения, и они являются одной из наиболее сложных (и очень редко используемых) функций в POSIX. Прочитайте справочные страницы: man 5 acl а также man 1 setfacl, Не пытайтесь использовать ACL для чего-либо, пока не поймете, как они работают.

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

Если у вас все в порядке с дополнительным программным обеспечением и вам не нужны подпапки, вы можете отключить команду для изменения прав доступа (например, chmod 755), когда файлы добавляются в папку с помощью incron. Вам нужно установить incron, добавить себя в список разрешенных пользователей (добавив себя в /etc/incron.allow)

Затем вы должны настроить запись в incrontab с помощью incrontab -e, а затем добавив строку, как /path/to/directory_to_monitor IN_MODIFY chmod 755 к этому. Если вы хотите углубиться в опции, которые есть у incron, посмотрите страницу руководства или это руководство по howtoforge.

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

Другие вопросы по тегам