O caso dos usuários normais que podem desligar o sistema
...via
Quando o polkit está instalado, alguns componentes do systemd consultam-o para liberar ou não para usuários normais a execução de diversas tarefas (se não estiver presente, ações que requeiram root não são permitidas). O que define o resultado retornado pelo polkit é a sua política.
O systemd instala políticas padrão nos seguintes arquivos (considerando a versão 219 do CentOS 7):
Cada um contendo a configuração relativa ao componente descrito no nome do arquivo.
Os arquivos de
A seguir, configuração que exige autenticação root (
Essa sintaxe usando JavaScript é suportada desde a versão 0.106 do polkit.
É importante que os usuários que você quiser restringir não façam parte de grupos considerados administradores, como
systemctl poweroff
e tal.Quando o polkit está instalado, alguns componentes do systemd consultam-o para liberar ou não para usuários normais a execução de diversas tarefas (se não estiver presente, ações que requeiram root não são permitidas). O que define o resultado retornado pelo polkit é a sua política.
O systemd instala políticas padrão nos seguintes arquivos (considerando a versão 219 do CentOS 7):
/usr/share/polkit-1/actions/org.freedesktop.hostname1.policy /usr/share/polkit-1/actions/org.freedesktop.import1.policy /usr/share/polkit-1/actions/org.freedesktop.locale1.policy /usr/share/polkit-1/actions/org.freedesktop.login1.policy /usr/share/polkit-1/actions/org.freedesktop.machine1.policy /usr/share/polkit-1/actions/org.freedesktop.systemd1.policy /usr/share/polkit-1/actions/org.freedesktop.timedate1.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 em /etc/polkit-1/rules.d
.A seguir, configuração que exige autenticação root (
polkit.Result.AUTH_ADMIN
) para suspender, hibernar, reiniciar e desligar. Se você quiser que seja solicitada autenticação do próprio usuário, use polkit.Result.AUTH_SELF
. Ou desative por completo com polkit.Result.NO
. O padrão é polkit.Result.YES
para estas ações. Note que a configuração será aplicada tanto à linha de comando quanto ao botão "desligar" do ambiente desktop./etc/polkit-1/rules.d/10-restringe-logind.rules
polkit.addRule(function(action, subject) { if (action.id.indexOf("org.freedesktop.login1.suspend") == 0 || action.id.indexOf("org.freedesktop.login1.hibernate") == 0 || action.id.indexOf("org.freedesktop.login1.reboot") == 0 || action.id.indexOf("org.freedesktop.login1.power-off") == 0) { return polkit.Result.AUTH_ADMIN; } });
Essa sintaxe usando JavaScript é suportada desde a versão 0.106 do polkit.
É importante que os usuários que você quiser restringir não façam parte de grupos considerados administradores, como
wheel
no Fedora/CentOS e sudo
no Debian/Ubuntu. Pois administradores podem fornecer sua própria senha para validar a autenticação.
Comentários
Postar um comentário