感觉很笨。使用相同的用户我可以通过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喜欢一些提示。谢谢你们!
答案 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
或者只是更改文件的所有权