Мой первый вопрос, так что будьте добры ...
По сути, у меня есть папка, к которой имеет доступ группа пользователей. В этой папке есть программа, которая запускается от имени пользователя 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, но использовать другую группу.