当我运行“# sudo touch newfile”时,我期望该文件归我所有,而不是由 root 所有,因为我对 sudo 的理解是它赋予我(用户)root 权限,但实际上并没有切换用户。
我是否对 sudo 的含义存在根本性的误解?
答案1
当您使用时sudo
,您以超级用户(root)的身份运行程序,因此创建的文件也是以超级用户的身份创建的。
答案2
您可以通过比较这两个“whoami”(“我是谁?”)命令的输出来证明 mipadi 所说的内容:
$ sudo whoami
$ whoami
答案3
sudo
(名称来自 su“do”或超级用户“do”)允许您以 root 身份运行命令。它不会为您的用户提供不同的权限。因此,当您运行时,#sudo touch newfile
执行命令的是 root 用户touch newfile
,这就是为什么 newfile 归 root 用户所有。
更多信息Sudo 页面。
答案4
您可以将 sudo 中的“su”视为“切换用户”。如果您不指定以哪个用户身份运行,它将默认为root
超级用户,也与 su 相关联。
sudo -u yourself touch newfile
如果您希望该文件归 拥有yourself
。
从会话的其余部分来看,您假设sudo
不更改用户 ID 是正确的。可以将其视为su
+ touch newfile
+ exit
。因此,在您的 shell 中,您“保留”自己,但sudo
在具有另一个有效用户 ID 的新进程中执行命令。