Linux 是否有能力修改 root 拥有的文件?

Linux 是否有能力修改 root 拥有的文件?

有没有Linux能力使普通用户能够写入 root 拥有的文件,例如/etc/resolv.conf/etc/fstab`?

答案1

不。有一种功能允许访问任意文件,无论权限如何 ( CAP_DAC_OVERRIDE),但它几乎等同于授予 root 访问权限(如果您可以覆盖/etc/passwd,对于大多数配置,您就可以进入):它仅对执行特定任务的进程有用(例如备份程序),不授予用户。并且没有任何功能可以允许绕过特定文件的权限:功能是布尔值,它们不是由文件列表参数化的。无论如何,这几乎毫无意义,因为已经有一种允许用户写入特定文件的机制:权限。

创建一个组,将用户添加到该组,并授予该组对文件的写入权限。

addgroup fstab-writers
adduser alice fstab-writers     # Note that this only takes effect when alice logs in, not in her already-running session(s).
chgrp fstab-writers /etc/fstab
chmod g+w /etc/fstab

如果多个组需要对文件的特定权限,请使用访问控制列表而不是chgrpchmod

setfacl -m g:fstab-writers:rw /etc/fstab

请注意,如果系统程序覆盖有问题的文件,则不能保证它会重现组所有权或访问控制列表。但如果是这种情况,您可能无论如何都不应该手动修改此文件。

另请注意,对于 和/etc/fstab/etc/resolv.conf都有完善的机制不需要授予用户写入权限。

  • 授予用户写入权限/etc/fstab相当于允许他们以 root 身份运行任意命令。最简单的方法是使用 setuid root 可执行文件挂载文件系统映像,还有其他方法。如果你想允许用户挂载文件系统,他们可以使用尤迪卡(这是桌面环境在幕后使用的)或pmount
  • /etc/resolv.conf通常由以下人员自动管理网络管理器,可以由非root用户控制。这是桌面环境在幕后使用的,并且还有一个命令行界面 ( nmcli)。即使没有 NetworkManager,许多发行版仍然提供解析配置文件当网络连接发生变化时自动管理它。

相关内容