我受到启发,再次开始尝试 Linux 功能,我的最爱项目是替换许多二进制文件上的 setuid,并向非 root 用户提供对其他特权实用程序的访问。通过添加相关功能(+ei
,问题没有实际意义+ep
)setcap
并配置我的个人用户帐户(jdavis4
)以在登录时将这些功能分配给其会话来做到这一点pam_cap.so
,并且进展顺利。我可以通过capability.conf授予个人用户访问“ping”和“kill”的权限
不过,我遇到的问题是,如果这是一个生产系统,管理员可能希望通过某种聚合单元分配功能,这样他们就不必为每个单独的用户执行此操作每次他们制作一个。这样,用户只需添加到“filesystemAdmin”组并获取类似的内容CAP_DAC_OVERRIDE
或添加到“ProcessManagement”并获取类似CAP_SYS_NICE
和的内容CAP_SYS_KILL
。
目前这可能吗?
答案1
我们添加了对s支持@group
的语法。在撰写本文时,pam_cap.so
capability.conf
libcap-2.29
libcap
版本为 2.49。
还有一些文档pam_cap.so
这里。
答案2
你想做的事情是不可能的。不仅pam_cap
操纵可继承的能力(因此它实际上根本不授予任何允许/有效的能力),它还只处理用户而不是组(甚至不是主要组)。
答案3
我找不到任何文档来说明 Capability.conf 可以直接分配给组。
这似乎是 pam_cap 需要从身份验证过程中“剥夺”特权的产物,身份验证过程可能具有“全部”功能,或者足以成为这样。这就产生了一种倾向,即累积累加映射似乎是不明智的,因为它可能很快就会变成“无法检查的结构”。因此,通过capability.conf 进行的分配不是累积的。如果你击中了一根火柴,那就是你得到的。不多也不少。
照这样说:
可以配置 pam_cap 从 /etc/security/capability.conf 格式的任意文件加载功能
可以在 pam 配置中使用脚本。根据验证用户的组成员身份为用户生成每用户的capability.conf 文件并将其提供给 pam_cap 模块是相当简单的。
它不是“优雅”或“理想”,但对于大型 LDAP 类型的用户群来说,它可能比有效用户之间的“通过第 8 层 jellyware 同步”和单个 /etc 中每个用户的全文条目更易于检查/security/capability.conf。