stop systemctl usando o prompt gráfico do sudo

3

Minha pergunta é como eu poderia configurar o systemd (?) para parar de abrir este pop-up irritante sempre que eu me esquecer de digitar sudo. Apenas me dê um prompt de sudo baseado em texto ou mostre um erro, para que eu possa corrigir o erro rapidamente.

Este é o Arch Linux, mais recente (systemd 238.133).

    
por MightyPork 08.06.2018 / 20:19

3 respostas

4

Este não é um prompt 'sudo', este é um prompt 'polkit'. Uma maneira de evitá-lo - global para todo software, não apenas systemctl - é escrever uma regra de polkit que imediatamente nega a ação (ou permite imediatamente).

polkit.addRule(function(action, subject) {
    if (subject.user !== "root") {
        if (/^org\.freedesktop\.systemd1\./.test(action.id)) {
            return polkit.Result.NO;
        }
    }
});

(O subject.user test pode ser omitido, pois as ações invocadas pelo polkit de bypass root são totalmente verificadas.)

As regras do polkit são armazenadas em /etc/polkit/rules.d/*.rules , geralmente nomeadas como 80-custom.rules (processadas em ordem crescente). Para mais informações, consulte polkit (8) .

(Dito isto, se sua configuração sudo é sem senha, então não há nenhuma diferença prática de segurança entre usar 'sudo' vs fazer o polkit imediatamente permitir a ação. E vice-versa, se seu sudo requer uma senha ... então, por que não apenas inseri-lo no diálogo do polkit? É a mesma senha.)

    
por 08.06.2018 / 22:18
2

Existe uma opção --no-ask-password . Faça um alias:

alias systemctl='systemctl --no-ask-password'

(testado no Bash, Kubuntu).

    
por 08.06.2018 / 20:26
0

Não use sudo para systemctl, ever ; se você tiver permissão para fazer a manutenção, configure o polkit corretamente.

Justificativa : sudo torna o programa executado efetivamente pelo usuário solicitado (normalmente: root ). Incluindo todos os kits de ferramentas vinculados. Qualquer bug no programa, bibliotecas ou ... sudo configuração torna vulnerável. No caso de systemd , o binário systemctl é apenas um controlador (em geral). Ele não requer privilégios de root (para a maioria dos casos de uso), já que ele não realiza operações privilegiadas por si só, mas solicita init . Usar a conta root real (seja diretamente ou via sudo ) é uma solução atômica (bomba) tudo ou nada, enquanto a única somente , que é necessária, é autorizar ( não: autenticar ) em relação a systemd . Como systemd compreende polkit para autorização , o uso de % autenticadoroot é apenas permissões demais concedidas.

Considere um bug em systemctl , que permite invocar comandos arbitrários diretamente (não via systemd ). Quando as permissões root são dadas por sudo , pode-se executar qualquer comando com EUID = 0. Com systemctl sendo executado como usuário não privilegiado, só é possível executar tal comando com a conta que ele obteve acesso antes. Esta é uma consequência simples de algumas regras básicas de segurança:

  • use apenas o conjunto de permissões necessárias (não o conjunto completo == root )
  • conceda essas permissões somente ao código, que exige isso (autorize em systemd sem conceder permissões a systemctl ).

Quanto a ser o único usuário de uma máquina - se você trabalha usando uma conta não privilegiada, não a root one, eu suponho que você queira restringir os programas que você executa de obter permissões supérfluas. Dar a systemctl somente porque a conta root é authorized para o comando systemd é uma permissão tão supérflua.

Além disso, com polkit , você pode ter critérios de acesso diferentes para ações diferentes (iniciar / parar / recarregar / o que for) e serviços diferentes. Você pode colocar comandos exatos em sudoers , mas a solução do polkit está ciente das partes específicas de tais comandos.

Concluindo : não use sudo se algum método menos privilegiado estiver disponível. sudo é a solução de último recurso tudo ou nada.

Se você quiser que a solicitação de senha seja mostrada no texto, não em gráficos, apenas DESAFIE o DISPLAY, por exemplo: desvincule seu terminal da sessão gráfica, que executa o agente de autenticação.

    
por 08.06.2018 / 21:38