sudo 和 sudo -i 之间的权限区别是什么?
有了sudo
它
$sudo echo "search foo.bar.baz" >> /etc/resolv.conf
bash: /etc/resolv.conf: Permission denied
...与sudo -i
$sudo -i
#echo "search foo.bar.baz" >> /etc/resolv.conf
...有用。特权是:
drwxr-xr-x 166 root root 12288 2009-10-17 21:02 .
-rw-r--r-- 1 root root 42 2009-10-17 20:55 /etc/resolv.conf
我很惊讶这些命令有不同的行为,是什么导致 justsudo
版本失败?
在第一个示例中,重定向发生在您当前的 shell 中,而不是 sudo 子 shell 中。
sudo
执行并将结果返回到您当前的 shell 也是如此echo "search foo.bar.baz"
,然后尝试将其写入/etc/resolv.conf
.bash
您可以通过直接调用 sudo 命令来使第一个示例工作:您可以使用
sudo
具有管理员权限的 1 个命令。用
sudo -i
你登录root帐户,用他自己的shell和环境变量。否则,您可以使用
sudo -s
, 使用它登录到 root 帐户,但您仍然使用您的 shell 和变量。问题是
sudo -i
你可能会得到另一个 shell 和另一个可以解决问题的 $PATH。从 sudo 手册页:
您遇到的问题是外壳仅将 sudo 应用于您构建的管道的第一部分。以您的
>> etc
权限而不是 root 身份运行。