这是一个非常简单的问题,至少看起来应该是这样,关于Linux中的sudo权限。

很多时候,我只是想在/etc/hosts或类似的文件中添加一些内容,但最终无法添加,因为>和>>都不允许,即使使用root。

有没有什么方法可以让这个工作,而不需要su或sudo su到root?


当前回答

这招对我很管用: 原始的命令

echo "export CATALINA_HOME="/opt/tomcat9"" >> /etc/environment

工作命令

echo "export CATALINA_HOME="/opt/tomcat9"" |sudo tee /etc/environment

其他回答

sudo sh -c "echo >> somefile"

应该工作。问题是>和>>是由shell处理的,而不是由“sudoed”命令处理的,所以权限是您的,而不是您正在“sudo”进入的用户的权限。

我想指出的是,对于好奇的人来说,你也可以引用一个heredoc(对于大的区块):

sudo bash -c "cat <<EOIPFW >> /etc/ipfw.conf
<?xml version=\"1.0\" encoding=\"UTF-8\"?>

<plist version=\"1.0\">
  <dict>
    <key>Label</key>
    <string>com.company.ipfw</string>
    <key>Program</key>
    <string>/sbin/ipfw</string>
    <key>ProgramArguments</key>
    <array>
      <string>/sbin/ipfw</string>
      <string>-q</string>
      <string>/etc/ipfw.conf</string>
    </array>
    <key>RunAtLoad</key>
    <true></true>
  </dict>
</plist>
EOIPFW"
sudo sh -c "echo 127.0.0.1 localhost >> /etc/hosts"

如何: Echo text | sudo dd status=none of=特权文件 我想更改/proc/sys/net/ipv4/tcp_rmem。 我做了: Sudo dd status=none of=/proc/sys/net/ipv4/tcp_rmem <<<"4096 131072 1024000" 消除单行文档的回显

这招对我很管用: 原始的命令

echo "export CATALINA_HOME="/opt/tomcat9"" >> /etc/environment

工作命令

echo "export CATALINA_HOME="/opt/tomcat9"" |sudo tee /etc/environment