sudo 权限被拒绝

sudo 权限被拒绝

我运行了这个代码:

sudo cat <<EOF | sudo sed -e "s,%,$,g" >/etc/init.d/dropbox
  echo "Hello World"
EOF

但尽管如此,我还是收到“权限被拒绝”的提示,因为您必须以 root 身份才能在 /etc/init.d 目录中进行更改。不知何故,上面的命令不起作用。

有办法解决这个问题吗?

答案1

重定向到文件由 bash 处理。因此它不会继承 sudo 授予的权限。

用于sudo tee以 root 身份写入文件。

尝试这个:

cat | sed -e 's,%,$,g' | sudo tee /etc/init.d/dropbox << EOF
  echo "Hello World"
EOF

请注意,$,双引号里面的内容可能会被解释。

答案2

你可以授予自己持久的 su-rights
# sudo -s

然后你的命令(不再需要 sudo )并退出
# exit

编辑:
我假设你问的是与 Ubuntu 相关的问题,因为你的问题被标记为 Ubuntu。在其他发行版(如 Suse)中,你可以
# su
使用# sudo -s

答案3

这部分:sudo sed -e "s,%,$,g" >/etc/init.d/dropboxcen被视为:

sudo somecommand --put the result of the sudo command into--> /etc/init.d/dropbox

与此方法相同:

ls somedirectory > filename
ls somedirectory --put the result of the ls command into--> filename

这意味着文件写入将以您当前的用户身份完成,而不是以 root 身份完成。

您可以使用teeBenoit 在他的答案中所展示的方法来解决此问题。

相关内容