2013-12-18 60 views
1

我有用戶允許代表www-data sudo ALL。相當簡單的測試知道sudo

USERALIAS ALL=(www-data) ALL

不過,這些2級的執行有不同的結果:

$ 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 

爲什麼?

回答

2

在第二個例子中,用戶www-data執行的命令

echo "anothertest" 

,它是user重定向的命令的輸出到文件/tmp/test2。這將解釋(第二)情況下的文件所有權。在第一個中,創建文件/tmp/test的是www-data

目前尚不清楚你期待什麼,但如果你想通過www-data/tmp/test2/所擁有,執行shell命令:

sudo -uwww-data sh -c 'echo "anothertest" > /tmp/test2' 
+0

你的代碼是正確的!我誤解了通過sudo執行的命令鏈/管道。然而我愚蠢的測試只是爲了知道爲什麼我的'export SVN_SSH =「ssh -p2022」; sudo -uwww-data sh -c'svn up''失敗,出現典型的消息'svn:爲了更好地調試SSH連接問題,刪除-q選項......'好像導出(我有'Defaults env_keep + =' 「svn_ssh」'在visudo中)不起作用 – shrek

+0

@shriek看來你想說:sudo -uwww-data SVN_SSH =「ssh -p2022」sh -c'svn up' – devnull

+0

當然!謝謝大家。我的大腦變得越來越老,並與最簡單的......甚至最困難的事情混淆! :d – shrek