用户/组安全在 Linux 上如何发挥作用?

用户/组安全在 Linux 上如何发挥作用?

例如,如何决定当前用户是否有权挂载文件系统?据我所知,它会检查文件系统文件和用户所属的组(我认为是 plugdev,至少在 Ubuntu 上)。

这些设置是硬编码到程序中的吗?还是程序从哪里获取这些设置?例如,假设我想让另一个组中的用户能够挂载文件系统,该怎么做?

编辑:我正在寻找有关安全性工作原理的一般描述。只是一个例子。我或多或少知道文件系统权限是如何工作的,但显然还有其他事情发生。我特别想知道程序实现安全性是否有标准方法,或者每个程序是否以不同的方式实现安全性。

答案1

安全机制完全取决于以 root 身份运行(覆盖文件权限)并维护其自己的安全机制的文件和程序(如 nfsd)的权限。块设备文件的权限决定用户是否可以挂载该设备。每个文件都有三组权限(读取、写入、执行),适用于三类用户(所有者、组、世界),以及下面讨论的少数特殊位。

在“一切皆文件”的 Unix 传统中,原始设备和导出的卷显示为具有文件系统权限的特殊文件。远程安装远程卷稍微复杂一些,下面将进行讨论。

如果用户以与文件所有者相同的 uid 登录,则owner可以使用权限。每个用户都有一个默认组,并且可以添加到/etc/group文件中的组条目中。当用户有权访问某个组时,将使用该组的文件权限。否则,用户具有“world”权限。ACL(访问控制列表)可用于向特定用户授予可用权限。

程序可以通过在其 inode 条目上设置位来覆盖用户级安全性setuid。这将以二进制文件所有者的权限而不是登录用户的权限运行程序。此类程序的示例包括nfsdmountsudo这些程序有自己的安全机制;例如,它sudo用于/etc/sudoers管理权限。

mountnfsd基于 uid 和 gid 工作,这两个 ID 必须在两台机器上同步(通常传统上通过 NIS 完成)。nfsd 有一个名为 的文件,/etc/exports其中包含导出的文件系统和一些权限数据。mount 及其 nfs 驱动程序提供凭证,nfsd 使用这些凭证来验证用户安装卷的权限。在本地卷上,mount 使用块设备的文件权限。

答案2

根据手册页,您可以输入一些选项fstab来控制谁可以挂载文件系统:“ owner”表示只允许块设备的所有者挂载它,“ group”表示允许设备组中的任何人挂载它,或者“ user”或“ users”表示允许任何普通用户挂载它。如果未指定任何选项,则默认只有root可以挂载文件系统。当然,执行挂载的用户需要对程序mount本身具有执行权限。

对于您的情况,我想您可以将块设备的组更改为您希望能够挂载它的任何组,并group在 中的挂载选项中添加“ ” fstab。不过,这只允许您指定一个能够挂载文件系统的组,因此如果您这样做, 中的人员plugdev可能会失去执行挂载的能力(除非他们也属于另一个组)。

另外,我不确定所有这些选项是否在所有系统上都存在。man mount(8)在执行任何操作之前,您应该检查自己的系统。

相关内容