sudo 真的会让你扎根一段时间吗?

Des*_*ume 1 linux root sudo command-line permissions

在 Linux 上,在何种情况下(如果有),将命令作为非root访问文件/文件夹或创建/删除文件/文件夹使用sudo可能会导致“权限被拒绝”,同时运行与root用户相同的命令会成功? 当然,假设用户是 sudoer。

在Ubuntu 12实际的例子:我有这个目录中/root:root所有权和drwxr-xr-x权限,我试图sudo date > file同时它还有sudo date | tee file,但得到了同样的

-bash: file: Permission denied
Run Code Online (Sandbox Code Playgroud)

在这两种情况下。果然,有我就没有问题root。这很令人沮丧。

小智 7

sudo 只使 sudo 的命令以 root 身份运行。偶尔的实际差异是,在

sudo echo mem > /sys/power/state
Run Code Online (Sandbox Code Playgroud)

(它告诉内核挂起到 RAM)

它不起作用,因为您正在运行的外壳程序(作为普通用户)尝试将重定向设置为 /sys/power/state,它没有写入权限。您可以通过以 root 身份运行子 shell 来成功执行此操作

sudo sh -c 'echo mem > /sys/power/state'
Run Code Online (Sandbox Code Playgroud)

或者通过使用本身打开文件的程序,例如 dd:

echo mem | sudo dd of=/sys/power/state
Run Code Online (Sandbox Code Playgroud)

或者首先获得一个 root shell,例如使用“su”或“sudo -s”。