PSk*_*cik 3 useradd docker uid usermod
我需要一系列 uid(比如几千个)才能使用 setuid-root 工具。是否有注册这样一个范围的协议,或者我只是选择一个范围并希望没有其他程序会使用这些 uid?
(我宁愿不要/etc/passwd用这个来制造混乱。)
我遇到了/etc/subuid(在https://www.mankier.com/8/usermod 中记录的其他地方),它似乎做了类似的事情。究竟是什么/etc/subuid,我可以用它来为我的 setuid 工具注册一个范围吗?
docker 似乎将这些/etc/subuid东西用于某种 uid 映射。如果我为我的应用程序创建一个新用户,通过为它保留一个 subid 范围/etc/subuid,然后不将它与 docker 一起使用,这是让系统的其余部分知道我保留了一个 uid 范围的好方法吗?
有一个 hack,然后有一种方法可以正确地做到这一点。
hacky 的方法是提高UID_MINand GID_MINin/etc/login.defs以便您保留的 UID 介于SYS_UID_MAX和之间UID_MIN,而 GID(如果有)介于SYS_GID_MAX和之间GID_MIN。这样,普通工具(useradd、adduser、usermod等)不会将它们用于新用户帐户,除非您强制它们(通过明确指定新的 UID 和/或 GID)。您可能需要将这个新间隙范围内的任何现有 UID 重新映射到UID_MIN..UID_MAX范围,并将 GID重新映射到GID_MIN..GID_MAX范围,以便工具将它们视为普通用户帐户。
正确的方法是额外配置NSS(通常和 PAM)以查看这些保留用户,以免工具混淆。
要做到这一点,最简单的方法是使用libnss-extrausersNSS模块和pam_extrausersPAM模块,这样就可以把这些特殊用户/var/lib/extrausers/passwd(在没有密码的条目/var/lib/extrausers/shadow),加上任选组信息/var/lib/extrausers/groups。这些模块应该在所有常见的 Linux 发行版中都可用。
请注意,如果您确实将这些用户添加到 NSS/PAM,您可能希望扩展SYS_UID_MAX并SYS_GID_MAX覆盖这些保留用户,作为预防措施:您看,我没有检查是否/哪些工具仅列出UID_MIN..UID_MAX用户,或者只是排除SYS_UID_MIN..SYS_UID_MAX用户。我怀疑有很多程序员错误地认为这两个集合是互补的,因此将这些保留的 UID/GID 视为系统帐户可能是最安全的选择。
| 归档时间: |
|
| 查看次数: |
1182 次 |
| 最近记录: |