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

Linux: применить право собственности ко всем файлам, созданным в папке

Мой первый вопрос, так что будьте добры ...

По сути, у меня есть папка, к которой имеет доступ группа пользователей. В этой папке есть программа, которая запускается от имени пользователя root (через sudo), а затем выводит файлы результатов (файлы xml) в подкаталог. Теперь, когда команда запускается, она выводит результаты с владельцем root (так как это тот, кто ее запускал). но мне нужно, чтобы любые созданные результаты автоматически изменялись, чтобы они принадлежали группе, которой уже принадлежит папка. Я попытался использовать бит setgid, но не повезло. Любые идеи?

РЕДАКТИРОВАТЬ: просто дополнительная информация. Программа ДОЛЖНА запускаться от имени пользователя root. и я знаю, что могу установить cronjob или что-то в этом роде, но я ищу более элегантное решение.

заранее спасибо

Добавить g+s на целевой каталог (предположим, что сделано)

chown :usergroup target-directory
chmod g+s target-directory

С указанным выше все файлы создать внутри целевой каталог будет иметь группу пользователей gid.

Это не работает, если файл создается вне целевого каталога, а затем перемещается в него. Гид НЕ БУДУ изменить в этом случае.

touch <some-path>/test
mv <some-path>/test <target-directory>

test gid не изменится в приведенном выше случае.

Найдите временную папку

Весьма вероятно, что рассматриваемая программа создала файл в другом месте / временной папке, чтобы предотвратить частичное чтение. Если это так, примените g+s в эту временную папку решит проблему.

Тем не мение, НЕ сделайте это, если программа использует системные папки, такие как /tmp, /var/tmp для временной папки. Сначала измените расположение временной папки.

Если вы можете обойтись без файлов, имеющих пользователя root, но другую группу, членами которой являются ваши пользователи, проверьте команды «sg» и «newgrp». Запуск вашей программы через sg позволит ей оставаться пользователем root, но использовать другую группу.