Назад | Перейти на главную страницу

Как сохранить права собственности на файлы и папки с течением времени?

У нас есть папки на нескольких наших (debian) серверах, которые требуют, чтобы различные пользователи (как реальные, так и системные) могли читать и / или писать. Мы придумали особую модель разрешения и владения файлами, которая делает всех счастливыми, но по ряду причин эта модель со временем перестает работать, когда пользователи изменяют что-либо.

Мы пытались установить такие вещи, как umask и установить липкие биты для разрешения группы, чтобы сохранить правильные разрешения и права собственности, но этих усилий, как правило, недостаточно.

В идеале мы бы указали наши права доступа к файлам и модель владения в файле конфигурации и получили бы демона, который применяет эту модель. Есть ли что-то подобное?

(Поиск в Google предложит нет, но я бы предпочел не изобретать велосипед, если эта проблема уже решена)

Чтобы ответить на мой собственный вопрос здесь, я написал небольшой демон, который принимает простой файл конфигурации YAML, а затем обеспечивает владение файлом, группу и разрешения. Это называется принудительным (https://github.com/torrance/enforced) - вам понадобится Go (golang), чтобы его построить.

Он выполняет первоначальный поиск папок в конфигурации, а затем настраивается на отслеживание любых изменений файлов, немедленно исправляя любые файлы, которые изменяются.

Я надеюсь, что это поможет кому-то другому.

Вы можете использовать fam (демон мониторинга изменений файлов), чтобы получать уведомления о каждом изменении файла (это событие, о котором сообщается, если изменяются права доступа). Затем вы можете просмотреть файл, проверить, изменилось ли только mtime или ctime, и при необходимости сбросить права доступа.

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

Странно: по крайней мере, насколько мне известно, Linux не предлагает ограничений на изменение прав доступа.

Эта проблема также может быть использована файловой системой FUSE, которая просто изменяет права доступа. Я не знаю, существует ли что-то подобное, но существует так много модулей FUSE, что стоит проверить.

Я думаю, что сценарий bash, запущенный из crontab был бы моим ответом на эту особую проблему.

Поскольку вы заявили, что права доступа к файлам время от времени портятся, установите deamon или даже fam, чтобы постоянно проверять изменения разрешений было бы "излишним" (IMHO).

Было бы неплохо настроить задание cron для запуска и исправления разрешений один раз в неделю или даже один раз в день.