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.