我有一个php脚本,它将收集数据并将日志写入文件,该目录属于一个名为'ingestion'的用户和一个名为'ingestion'的组。我正在使用命令
sudo -u ingestion php [script] &>> /var/log/FOLDER/adapter.log
FOLDER的所有者和组正在提取。但是,创建的adapter.log仍然属于root用户和root组,这怎么可能?
您的文件是由以root身份运行的bash创建的,而不是由您通过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命令替换"..."
。
您的文件是由以root身份运行的bash创建的,而不是由您通过sudo作为摄取运行的进程创建的。
这是因为chown ingestion.ingestion /path/to/the/file
是命令行的一部分,而不是sudo启动的过程。
这里:
>> foo
然后:
#foo.sh
echo foo: `id -u`
您可以看到该文件是作为root创建的,但是foo.sh脚本是作为uid 501运行的。
您可以通过运行例如来解决此问题:
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
当然,在您的情况下,请用您的php命令替换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
。