6.2. 限制新 Linux 用户:useradd
映射到 SELinux
unconfined_u 用户的 Linux 用户在 unconfined_t 域中运行。当以映射到 unconfined_u 的 Linux 用户身份登录时,运行 id -Z 命令来查看:
id -Z
~]$ id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
当 Linux 用户在
unconfined_t 域中运行时,会应用 SELinux 策略规则,但存在策略规则,允许 Linux 用户在 unconfined_t 域中运行几乎所有访问权限。如果未限制的 Linux 用户执行 SELinux 策略定义的应用程序,则可以从 unconfined_t 域转换到其自身限制的域,则未限制的 Linux 用户仍会受到那个受限制域的限制。这样做的安全优势在于,即使 Linux 用户运行没有限制,应用程序仍会受到限制,因此对应用程序中漏洞的利用也会受到策略的限制。
注意
这不会防止系统用户阻止系统。相反,用户和系统会受到保护,使其免受应用漏洞造成的破坏。
使用 useradd 命令创建 Linux 用户时,请使用 a
-Z 选项指定它们要映射到的 SELinux 用户。以下示例创建新的 Linux 用户 useruuser,并将该用户映射到 SELinux user_u 用户。映射到 SELinux user_u 用户的 Linux 用户在 user_t 域中运行。在此域中,除非 SELinux 策略允许该应用程序(如 passwd),且无法运行 su 或 sudo 命令,阻止他们成为 root 用户。
过程 6.1. 将新 Linux 用户限制给 user_u SELinux 用户
- 以 root 用户身份,创建一个新的 Linux 用户(
useruuser),它映射到 SELinuxuser_u用户。useradd -Z user_u useruuser
~]# useradd -Z user_u useruuserCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 要查看
useruuser和user_u之间的映射,请以 root 用户身份输入以下命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 以 root 用户身份,为 Linux
useruuser用户分配密码:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 从当前会话中注销,然后以
Linux 用户身份登录。当您登录时,pam_selinux模块将 Linux 用户映射到 SELinux 用户(本例中为user_u),并设置生成的 SELinux 上下文。然后,将使用此上下文启动 Linux 用户的 shell。输入以下命令查看 Linux 用户的上下文:id -Z
~]$ id -Z user_u:user_r:user_t:s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 从 Linux
useruuser的会话中注销,然后使用您的帐户重新登录。如果您不希望 Linuxuseruuser用户,请以 root 用户及其主目录输入以下命令来删除它:userdel -Z -r useruuser
~]# userdel -Z -r useruuserCopy to Clipboard Copied! Toggle word wrap Toggle overflow