如果你尝试添加一个没有写入权限的文件(比如,拥有root权限的/ etc / sudoers文件,并且拥有0440的权限),如果你是真正的root用户,这是可行的。 但是,如果您是使用sudo的另一个用户,则会获得权限被拒绝的错误。
为什么是这样? 这不是因为文件的所有权 – 它不适用于普通用户拥有的文件。 真正的root用户似乎拥有比sudo更多的权限。 这是什么原理? 有没有办法将这个权限授予使用sudo的用户?
听起来像你正在做的事情:
sudo echo "blah blah blah de blah" >> /etc/protected_file
这不起作用,因为sudo适用于echo命令,它以root身份快乐地运行,但是redirect是当前shell的一部分,它不是以root身份运行的。
常见的解决scheme是
sudo bash -c 'echo "blah blah blah de blah" >> /etc/protected_file'
和
echo "blah blah blah de blah" | sudo tee -a /etc/protected_file
注意:你应该使用“visudo”编辑sudoers文件,因为它在提交之前检查文件是否有语法错误,以防止你自己locking。