Почему файл не создан как принадлежащий указанному пользователем c, которого я назначил - PullRequest
0 голосов
/ 02 марта 2020

У меня есть сценарий php, который будет собирать данные и записывать журнал в файл, каталог принадлежит пользователю с именем «ingestion» и группе с именем «ingestion». Я использовал команду

sudo -u ingestion php [script] &>> /var/log/FOLDER/adapter.log

Владелец и группа FOLDER - это прием пищи. Однако созданный файл adapter.log по-прежнему принадлежит root пользователю и root группе. Как это возможно?

1 Ответ

1 голос
/ 02 марта 2020

Ваш файл создается bash, работающим как root, а не процессом, который вы запускаете с помощью sudo для приема внутрь.

Это потому, что >> foo является частью командной строки, а не процесса, запущенного sudo.

Здесь:

#foo.sh
echo foo: `id -u`

Затем:

tmp root# sudo -u peter bash foo.sh > foo
tmp root# ls -l foo
-rw-------  1 root  staff  9 Mar  2 18:52 foo
tmp root# cat foo
foo: 501

Вы можете видеть, что файл создан как root, но foo . sh Сценарий запускается от имени пользователя uid 501.

Это можно исправить, запустив, например:

tmp root# sudo -u peter bash -c "bash foo.sh > foo"
tmp root# ls -l foo
-rw-------  1 peter  staff  9 Mar  2 18:54 foo
tmp root# cat foo
foo: 501

В вашем случае, конечно, замените "..." на php команда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...