我希望一名管理员能够编辑 /etc/fstab 文件,但一名管理员无法编辑 fstab 文件。
两位管理员都需要访问所有其他管理任务。
这可能吗?
我假设我需要以某种方式设置“sudo”允许他们访问哪些文件。或者可能只是创建非管理帐户,然后创建一个名为 fstab-access 的组,并将其中一个用户添加到该组并为该组设置权限...?我走在正确的轨道上吗?
答案1
如果你让他们可以访问所有内容,那么显然所有的赌注都会失败。但是,您可以允许用户编辑特定文件而不编辑其他任何内容。例如:
user ALL = sudoedit /etc/fstab
将允许用户仅编辑 /etc/fstab。
答案2
如果您只想允许用户编辑/etc/fstab
,您可以通过多种方式执行此操作:
- 确保访问控制列表已启用(条目
acl
中的选项)和。/etc/fstab
/
setfacl -m user:joe:rw /etc/fstab
- 添加
sudoers
规则:运行visudo
并添加一行joe ALL = sudoedit /etc/fstab
我推荐 sudo 方法,因为它可以轻松审核谁可以做什么。
但是,如果您允许用户编辑/etc/fstab
,那么他们可以通过添加一个条目来间接获得 root 权限,该条目允许他们安装已在其上植入 setuid root 二进制文件的外部或循环文件系统。
只允许用户编辑是相当奇怪的fstab
。如果您想允许用户安装可移动设备,请使用pmount
(或依赖桌面环境)。
如果您允许用户以 root 身份运行非白名单命令(“所有其他管理任务”),那么您无法阻止他们编辑任何特定文件。在某些时候,您需要决定是否信任这些人。如果您不信任他们管理您的计算机,请不要授予他们特权(让他们使用另一台计算机,也许是虚拟机)。如果您确实信任他们,请让他们成为 root,并告诉他们某些文件是禁止访问的。
答案3
如果您尝试枚举管理员可能需要使用的每一个实用程序,您将在键盘前坐上一段时间。
从技术上讲,这种愿望就是为什么Linux 功能被开发出来。要执行您想要的操作:您可以为用户提供特定的功能,然后只授予 user1 写入权限fstab
(通过 ACL 或其他方式),而不向受限制的 user2 授予相同的写入权限(确保 user2 没有 CAP_CHOWN或 CAP_DAC_OVERRIDE),但考虑到当前的功能状态(就用户空间的开发程度而言),它的工作量可能大于其价值。
如果不使用功能将职责转移到“root 用户角色”场景中,您就只能使用 root 帐户进行各种操作。这给我们带来了前面提到的问题,即告诉系统其他用户需要的每一种可能的工具(希望不能间接用于操纵fstab
)。
您最好只决定是否可以信任特定用户作为管理员。