У нас есть папки на нескольких наших (debian) серверах, которые требуют, чтобы различные пользователи (как реальные, так и системные) могли читать и / или писать. Мы придумали особую модель разрешения и владения файлами, которая делает всех счастливыми, но по ряду причин эта модель со временем перестает работать, когда пользователи изменяют что-либо.
Мы пытались установить такие вещи, как umask и установить липкие биты для разрешения группы, чтобы сохранить правильные разрешения и права собственности, но этих усилий, как правило, недостаточно.
В идеале мы бы указали наши права доступа к файлам и модель владения в файле конфигурации и получили бы демона, который применяет эту модель. Есть ли что-то подобное?
(Поиск в Google предложит нет, но я бы предпочел не изобретать велосипед, если эта проблема уже решена)
Чтобы ответить на мой собственный вопрос здесь, я написал небольшой демон, который принимает простой файл конфигурации YAML, а затем обеспечивает владение файлом, группу и разрешения. Это называется принудительным (https://github.com/torrance/enforced) - вам понадобится Go (golang), чтобы его построить.
Он выполняет первоначальный поиск папок в конфигурации, а затем настраивается на отслеживание любых изменений файлов, немедленно исправляя любые файлы, которые изменяются.
Я надеюсь, что это поможет кому-то другому.
Вы можете использовать fam (демон мониторинга изменений файлов), чтобы получать уведомления о каждом изменении файла (это событие, о котором сообщается, если изменяются права доступа). Затем вы можете просмотреть файл, проверить, изменилось ли только mtime или ctime, и при необходимости сбросить права доступа.
Если не требуется, чтобы пользователи могли изменять права доступа, вы можете вместо этого дождаться событий создания файла (гораздо меньше), изменить владельца файла, сбросить права доступа, и все готово: больше никогда не будет проблем с этим файлом.
Странно: по крайней мере, насколько мне известно, Linux не предлагает ограничений на изменение прав доступа.
Эта проблема также может быть использована файловой системой FUSE, которая просто изменяет права доступа. Я не знаю, существует ли что-то подобное, но существует так много модулей FUSE, что стоит проверить.
Я думаю, что сценарий bash, запущенный из crontab
был бы моим ответом на эту особую проблему.
Поскольку вы заявили, что права доступа к файлам время от времени портятся, установите deamon или даже fam, чтобы постоянно проверять изменения разрешений было бы "излишним" (IMHO).
Было бы неплохо настроить задание cron для запуска и исправления разрешений один раз в неделю или даже один раз в день.