为什么我可以编辑但不附加unix文件

时间:2013-05-14 01:48:31

标签: ubuntu logging permissions

感觉很笨。使用相同的用户我可以通过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

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

2 个答案:

答案 0 :(得分: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 )

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

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

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

将在bash的控制下运行整个sudo - 带参数和重定向。

答案 1 :(得分:0)

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

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

来解决此问题

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