題 為什麼我的sudo生成的文件由root擁有?


當我運行'#sudo touch newfile'時,我的期望是該文件將由我擁有,而不是由root擁有,因為我對sudo的理解是它給了我,用戶,root權限但實際上並沒有切換用戶。

我對sudo的含義有一個基本的誤解嗎?


4
2017-07-09 12:04


起源




答案:


當你使用 sudo,您以超級用戶(root)身份運行程序,因此創建的文件將作為超級用戶創建。


8
2017-07-09 12:08



“sudo,sudoedit - 以另一個用戶身份執行命令” - David Schwartz


mipadi說的是什麼,你可以通過比較這兩個'whoami'(“我是誰?”)命令的輸出來證明:

$ sudo whoami
   $ whoami


6
2017-07-09 12:41





sudo (名稱來自su“do”或超級用戶“do”)允許您以root身份運行命令。它不會為您的用戶提供不同的權限。因此,當你跑步 #sudo touch newfile 它是執行命令的用戶root touch newfile這就是為什麼newfile由root用戶擁有。

更多信息在 Sudo頁面


4
2017-07-09 12:40





您可以將sudo中的'su'視為“切換用戶”。如果您沒有說要運行哪個用戶,則默認為 root,超級用戶,也與su相關聯。

sudo -u yourself touch newfile 如果你想讓文件擁有 yourself

你的假設 sudo 從會話的其餘部分的角度來看,不會更改用戶標識是正確的。把它想像成 su + touch newfile + exit。所以,在你的shell中,你“保持”自己,但是 sudo 使用另一個有效的用戶標識在新進程中執行命令。


3
2017-07-09 13:30



'sudo'中的'su'表示“超級用戶”(sudo =超級用戶),而不是“設置用戶ID”。命令'su'表示'切換用戶'。 - Mistiry