Realidade: sim, o SELinux pode confinar o usuário root.
Isso é possível porque o SELinux não se importa com o usuário Unix atual: tudo o que ele vê são metadados suplementares chamados de contexto (que incluem, entre outros campos, um campo domínio ) e que permite O SELinux decide se a ação solicitada pode ser autorizada ou não.
O que normalmente se concebe como usuário root seria mapeado no SELinux como um usuário root Unix executando os domínios unconfined_t
ou sysadm_t
SELinux. É o usuário root omnipotente clássico e completo.
No entanto, pode-se configurar perfeitamente seu sistema para gerar um shell de root (quero dizer, shell de usuário Unix raiz) executando o domínio user user_t
SELinux restrito. De acordo com as políticas do SELinux, esse shell não seria diferente de qualquer outro shells de usuários restritos e não teria nenhum privilégio especial no sistema, limitando assim efetivamente o usuário root.
Appart de um ponto de vista experimental, fazendo isso literalmente é inútil, no entanto prática semelhante encontrar o seu caminho no mundo real. Um exemplo clássico seria um administrador de banco de dados precisando ser capaz de parar / iniciar os daemons do banco de dados, editar arquivos de configuração, etc. Sem o SELinux, todas essas ações exigiriam que o usuário escalasse privilégios de root (mesmo que seja normalmente por um único linha de comando através da ferramenta sudo
, por exemplo, no entanto, mesmo que possa estar propenso a vazamentos).
Graças ao SELinux, podemos dar a esse usuário um shell de raiz genuíno, mas, em vez de executar unconfined_t
ou sysadm_t
domains, ele executará o domínio dbadm_t
. Isso significa que ele terá mais privilégios do que um usuário restrito, mas esses novos privilégios serão limitados ao que é necessário para administrar o servidor de banco de dados: esse usuário não poderá adulterar outros serviços, arquivos ou executar outros comandos administrativos estritamente necessário para fazer o seu trabalho.
Da mesma forma, o servidor web e outros administradores de serviços também podem ter outros shells de raiz rodando em paralelo no mesmo sistema, cada um verá seu usuário Unix atual sendo root , mas graças ao SELinux cada um terá privilégios efetivamente diferentes limitados ao que for necessário para seus próprios propósitos .