3.5.2.2. Confinar a un administrador usando sudo y el rol sysadm_r
Puede asignar un usuario específico con privilegios administrativos al usuario staff_u SELinux, y configurar sudo para que el usuario pueda obtener el rol de administrador sysadm_r SELinux. Este rol le permite al usuario realizar tareas administrativas sin que se le niegue SELinux. Cuando el usuario se conecta, la sesión se ejecuta en el contexto staff_u:staff_r:staff_t SELinux, pero cuando el usuario introduce un comando usando sudo, la sesión cambia al contexto staff_u:sysadm_r:sysadm_t.
Requisitos previos
-
El usuario
rootse ejecuta sin restricciones. Este es el valor por defecto de Red Hat Enterprise Linux.
Procedimiento
Cree un nuevo usuario, añada el usuario al grupo de usuarios
wheely asigne el usuario al usuario de SELinuxstaff_u:adduser -G wheel -Z staff_u example.user
# adduser -G wheel -Z staff_u example.userCopy to Clipboard Copied! Toggle word wrap Toggle overflow Opcional: Asigne un usuario existente al usuario
staff_uSELinux y añada el usuario al grupo de usuarioswheel:usermod -G wheel -Z staff_u example.user
# usermod -G wheel -Z staff_u example.userCopy to Clipboard Copied! Toggle word wrap Toggle overflow Para permitir que example.user obtenga el rol de administrador de SELinux, cree un nuevo archivo en el directorio
/etc/sudoers.d/, por ejemplo:visudo -f /etc/sudoers.d/example.user
# visudo -f /etc/sudoers.d/example.userCopy to Clipboard Copied! Toggle word wrap Toggle overflow Añada la siguiente línea al nuevo archivo:
example.user ALL=(ALL) TYPE=sysadm_t ROLE=sysadm_r ALL
example.user ALL=(ALL) TYPE=sysadm_t ROLE=sysadm_r ALLCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Pasos de verificación
Comprueba que
example.useresté asignada al usuario de SELinuxstaff_u:semanage login -l | grep example.user example.user staff_u s0-s0:c0.c1023 *
# semanage login -l | grep example.user example.user staff_u s0-s0:c0.c1023 *Copy to Clipboard Copied! Toggle word wrap Toggle overflow Inicie sesión como example.user, por ejemplo, utilizando SSH, y cambie al usuario
root:[example.user@localhost ~]$ sudo -i [sudo] password for example.user:
[example.user@localhost ~]$ sudo -i [sudo] password for example.user:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Muestra el contexto de seguridad de
root:id -Z staff_u:sysadm_r:sysadm_t:s0-s0:c0.c1023
# id -Z staff_u:sysadm_r:sysadm_t:s0-s0:c0.c1023Copy to Clipboard Copied! Toggle word wrap Toggle overflow Intente una tarea administrativa, por ejemplo, reiniciar el servicio
sshd:systemctl restart sshd
# systemctl restart sshdCopy to Clipboard Copied! Toggle word wrap Toggle overflow Si no hay salida, el comando ha terminado con éxito.
Si el comando no termina con éxito, imprime el siguiente mensaje:
Failed to restart sshd.service: Access denied See system logs and 'systemctl status sshd.service' for details.
Failed to restart sshd.service: Access denied See system logs and 'systemctl status sshd.service' for details.Copy to Clipboard Copied! Toggle word wrap Toggle overflow