为什么 root 用户可以编辑只读文件,但具有 sudo 访问权限的普通用户却不能?

为什么 root 用户可以编辑只读文件,但具有 sudo 访问权限的普通用户却不能?

如果您尝试向没有写入权限的文件附加内容(例如,/etc/sudoers 文件,该文件由 root 拥有并具有 0440 权限),如果您是实际的 root 用户,则此操作有效。但是,如果您是使用 sudo 的其他用户,则会收到权限被拒绝的错误。

这是为什么?这不是因为文件的所有权 - 它也不适用于普通用户拥有的文件。真正的 root 用户似乎拥有比 sudo 授予的更多权限。这背后的原因是什么?有没有办法向使用 sudo 的用户授予此权限?

答案1

听起来你正在做类似的事情:

sudo echo "blah blah blah de blah" >> /etc/protected_file

这不起作用,因为 sudo 适用于该echo命令,该命令很乐意以 root 身份运行,但重定向是当前 shell 的一部分,而该 shell 并未以 root 身份运行。

常见的解决方案有:

sudo bash -c 'echo "blah blah blah de blah" >> /etc/protected_file'

echo "blah blah blah de blah" | sudo tee -a /etc/protected_file

答案2

注意:您应该使用“visudo”来编辑 sudoers 文件,因为它会在让您提交文件之前检查文件中是否存在语法错误,以防止您将自己锁定。

相关内容