sudo 和 sudo -i 访问功能

Ale*_*lex 3 sudo unix-shell file-permissions

sudo 和 sudo -i 之间的特权区别是什么?

有了sudo

    $sudo echo "search foo.bar.baz" >> /etc/resolv.conf
    bash: /etc/resolv.conf: Permission denied
Run Code Online (Sandbox Code Playgroud)

...与 sudo -i

    $sudo -i
    #echo "search foo.bar.baz" >> /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

...有用。特权是:

    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
Run Code Online (Sandbox Code Playgroud)

我很惊讶这些命令有不同的行为,是什么导致 justsudo版本失败?

Kam*_*iel 12

在第一个示例中,重定向发生在您当前的 shell 中,而不是在 sudo 子 shell 中。所以sudo正在执行echo "search foo.bar.baz"并将结果返回到您当前的 shell,然后尝试将其写入/etc/resolv.conf.

您可以通过bash直接作为 sudo 命令调用来使第一个示例工作:

sudo bash -c "echo 'search foo.bar.baz' >> /etc/resolv.conf"
Run Code Online (Sandbox Code Playgroud)