我允许用户代表www-data sudo ALL。
USERALIAS ALL=(www-data) ALL
然而,这两次执行有不同的结果:
$ sudo -uwww-data touch /tmp/test
$ sudo -uwww-data echo "anothertest" > /tmp/test2
猜猜谁拥有每个结果文件?
ls -l /tmp/test*
-rw-r--r-- 1 www-data www-data 0 dic 18 16:21 /tmp/test
-rw-r--r-- 1 user user 5 dic 18 16:22 /tmp/test2
为什么?
答案 0 :(得分:2)
在第二个示例中,用户www-data
执行了命令
echo "anothertest"
并且user
将命令的输出重定向到文件/tmp/test2
。这可以解释(第二)案例中的文件所有权。在第一个中,www-data
创建了文件/tmp/test
。
目前尚不清楚您的期望是什么,但如果您希望/tmp/test2/
拥有www-data
,请执行shell命令:
sudo -uwww-data sh -c 'echo "anothertest" > /tmp/test2'