terça-feira, 19 de maio de 2015

O caso dos usuários normais que podem desligar o sistema

...via systemctl poweroff e tal.

Quando o polkit está instalado, alguns componentes do systemd o consultam para liberar ou não para usuários normais a execução de diversas tarefas. O que define o resultado retornado pelo polkit é a sua política.

O systemd instala políticas padrão nos seguintes arquivos (usando como referência a versão 215 do Debian 8):

/usr/share/polkit-1/actions/org.freedesktop.systemd1.policy
/usr/share/polkit-1/actions/org.freedesktop.login1.policy
/usr/share/polkit-1/actions/org.freedesktop.timedate1.policy
/usr/share/polkit-1/actions/org.freedesktop.locale1.policy
/usr/share/polkit-1/actions/org.freedesktop.hostname1.policy

Cada um contendo a configuração relativa ao componente descrito no nome do arquivo.

Os arquivos de /usr não devem ser editados, pois não sobreviverão a futuras atualizações do pacote.

Podemos editar a política localmente seguindo:

pklocalauthority — PolicyKit Local Authority

A seguir, uma configuração que exige autenticação root (auth_admin) para desligar, reiniciar, suspender e hibernar. Se você quiser que seja solicitada autenticação do próprio usuário, use auth_self. Ou desative por completo com no. O padrão é yes para usuários logados numa sessão ativa (ResultActive). Note que, se o seu ambiente desktop usar o logind (GNOME usa), a configuração será aplicada ao botão "desligar" dele também!

/etc/polkit-1/localauthority/50-local.d/restringe-logind.pkla

[restringe logind]
Identity=unix-user:*
Action=org.freedesktop.login1.power-off*;org.freedesktop.login1.reboot*;org.freedesktop.login1.suspend*;org.freedesktop.login1.hibernate*
ResultAny=auth_admin
ResultInactive=auth_admin
ResultActive=auth_admin

Em servidores, é recomendável usar instalações mínimas em modo texto, que provavelmente não terão o polkit instalado. Quando não está presente, o systemd não permite nenhuma ação que requeira root ser executada por usuários normais. Do contrário, a configuração acima é recomendada.

Por fim, usuários que você quiser restringir não podem fazer parte de grupos considerados administradores, como wheel no Fedora/RHEL e sudo no Debian/Ubuntu. Pois administradores podem fornecer sua própria senha para validar a autenticação.

[Atualização - 04/08/2016] Metade do post refeita.

Nenhum comentário:

Postar um comentário