多行写入失败(权限被拒绝)

时间:2014-04-17 18:48:44

标签: linux bash ubuntu

我想将多行字符串写入只能以root权限访问的文件。

这是我到目前为止所做的:

sudo cat > /etc/init/myservice.conf <<EOL
start on runlevel [2345]

stop on runlevel [06]

respawn

script

    cd ~/somefolder

    . venv/bin/activate

    exec python manage.py runserver 0.0.0.0:8080

end script
EOL

当这个命令时,我得到的是&#34; Permission Denied&#34;。手动创建文件。

1 个答案:

答案 0 :(得分:6)

sudo运行之前,处理输出重定向,因此您仍在尝试以自己的身份打开文件,而不是以root身份打开文件。一种选择是使用tee而不是cat,因为tee而不是当前的shell会打开文件进行编写。

sudo tee /etc/init/myservice.conf > /dev/null <<EOF
start on runlevel [2345]

stop on runlevel [06]

respawn

script

  cd ~/somefolder

  . venv/bin/activate

  exec python manage.py runserver 0.0.0.0:8080

end script
EOF

虽然使用的分隔符并不重要,但使用表示 file 结尾的内容更有意义,而不是 line :) {{ {1}}实际上将其输入写入命名文件和标准输出,但您不需要查看正在编写的内容,因此重定向到tee