为什么不创建我指定的特定用户拥有的文件

问题描述 投票:0回答:1

我有一个php脚本,它将收集数据并将日志写入文件,该目录属于一个名为'ingestion'的用户和一个名为'ingestion'的组。我正在使用命令

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

FOLDER的所有者和组正在提取。但是,创建的adapter.log仍然属于root用户和root组,这怎么可能?

linux bash
1个回答
1
投票

您的文件是由以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命令替换"..."


0
投票

您的文件是由以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

© www.soinside.com 2019 - 2024. All rights reserved.