【问题标题】:Why I can I edit but not append a unix file为什么我可以编辑但不能附加 unix 文件
【发布时间】:2013-05-08 04:28:28
【问题描述】:

感觉很笨。对于同一用户我可以通过 vi 编辑文件,但是在附加到文件时出现权限错误。 我做错了什么。我想追加到这个文件!

ls -alt /var/log
drwxr-xr-x 11 root      root     4096 May 14 01:20 .
-rw-rw-r--  1 root      root        6 May 14 01:20 money-worker.log

sudo echo "hello" >> /var/log/money-worker.log
-bash: /var/log/money-worker.log: Permission denied

whoami
ubuntu

我正在运行 ubuntu 12.04,并 sshing in

喜欢一些提示。谢谢大家!

【问题讨论】:

    标签: ubuntu logging permissions


    【解决方案1】:

    因为:

    sudo echo "hello" >> /var/log/money-worker.log
    

    意思是:

    ( sudo echo "hello" ) >> /var/log/money-worker.log
    

    不是:

    sudo ( echo "hello" >> /var/log/money-worker.log )
    

    换句话说,shell sudo 运行之前正在尝试追加。 shell 将(尝试)打开文件以进行附加,然后将其“附加”到sudo 标准输出。

    作为一种解决方法,您可以尝试以下方法:

    sudo bash -c 'echo "hello" >> /var/log/money-worker.log'
    

    它将在sudo的控制下运行整个bash-with-arguments-and-redirections。

    【讨论】:

    • 我想这就是为什么你有超过 250k 的原因!非常感谢您的快速响应和快速编辑以包括解决方法!
    • 对于那些使用暴发户(init conf 文件)处理这个问题的人。这也很重要:stackoverflow.com/a/8903051/192791
    【解决方案2】:

    这是因为您的sudo 调用会影响回显,但不会影响文件的权限。换句话说,命令执行然后输出(sudo 结束)然后它尝试将该输出重定向到文件。

    您可以通过将echo "hello" >> /var/log/money-worker.log 放入文件然后执行sudo yourscript.sh 来解决此问题

    或者只是更改文件的所有权

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      • 2021-03-06
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      相关资源
      最近更新 更多