3

感觉挺傻的。对于同一个用户,我可以通过 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

喜欢一些提示。多谢你们!

4

2 回答 2

3

因为:

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'

这将bashsudo.

于 2013-05-14T01:54:36.900 回答
0

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

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

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

于 2013-05-14T01:53:44.250 回答