Red Hat Training
A Red Hat training course is available for RHEL 8
3.5.2.2. Confinar um administrador usando sudo e a função sysadm_r
Você pode mapear um usuário específico com privilégios administrativos para o usuário do staff_u SELinux, e configurar sudo para que o usuário possa ganhar o papel de administrador do sysadm_r SELinux. Esta função permite que o usuário execute tarefas administrativas sem que o SELinux negue. Quando o usuário faz login, a sessão é executada no contexto staff_u:staff_r:staff_t SELinux, mas quando o usuário entra em um comando utilizando sudo, a sessão muda para o contexto staff_u:sysadm_r:sysadm_t.
Pré-requisitos
-
O usuário do site
rootfunciona de forma não confinada. Este é o default do Red Hat Enterprise Linux.
Procedimento
Criar um novo usuário, adicionar o usuário ao grupo de usuários
wheele mapear o usuário para o usuáriostaff_uSELinux:# adduser -G wheel -Z staff_u example.userOpcional: Mapear um usuário existente para o usuário
staff_uSELinux e adicionar o usuário ao grupo de usuárioswheel:# usermod -G wheel -Z staff_u example.userPara permitir que example.user ganhe o papel de administrador do SELinux, crie um novo arquivo no diretório
/etc/sudoers.d/, por exemplo:# visudo -f /etc/sudoers.d/example.userAdicione a seguinte linha ao novo arquivo:
example.user ALL=(ALL) TYPE=sysadm_t ROLE=sysadm_r ALL
Etapas de verificação
Verifique se
example.useré mapeado para o usuário dostaff_uSELinux:# semanage login -l | grep example.user example.user staff_u s0-s0:c0.c1023 *
Faça o login como example.user, por exemplo, usando SSH, e mude para o usuário
root:[example.user@localhost ~]$ sudo -i [sudo] password for example.user:
Mostrar o contexto de segurança
root:# id -Z staff_u:sysadm_r:sysadm_t:s0-s0:c0.c1023Tente uma tarefa administrativa, por exemplo, reiniciar o serviço
sshd:# systemctl restart sshdSe não houver saída, o comando terminou com sucesso.
Se o comando não terminar com sucesso, ele imprime a seguinte mensagem:
Failed to restart sshd.service: Access denied See system logs and 'systemctl status sshd.service' for details.