Estou trabalhando para ajustar um script que encontrei aqui para meus próprios propósitos.
Em essência, o script verifica algumas condições e, em seguida, executa um dos dois comandos usando sudo. O comando é executado como o usuário cas
.
Como o script não será executado de forma interativa, quero garantir que os comandos sudo sejam executados sem solicitação de senha. Então, adicionei as seguintes linhas ao meu arquivo sudoers:
ALL ALL = NOPASSWD: /usr/bin/systemctl mask sleep.target suspend.target
ALL ALL = NOPASSWD: /usr/bin/systemctl unmask sleep.target suspend.target
Pelo que entendi de como o arquivo sudoers funciona, isso significa que todos os usuários têm permissão para executar os comandos /usr/bin/systemctl mask sleep.target suspend.target
e /usr/bin/systemctl unmask sleep.target suspend.target
sem solicitação de senha.
Em vez disso, o prompt de senha ainda aparece:
cas-desktop :: ~ »sudo /usr/bin/systemctl máscara sleep.target suspend.target
[sudo] senha para cas:
sudo: uma senha é necessária
Eu também tentei sem sudo:
cas-desktop :: ~ » /usr/bin/systemctl mask sleep.target suspend.target
==== AUTENTICATING FOR org.freedesktop.systemd1.manage-unit-files ====
A autenticação é necessária para gerenciar o serviço ou unidade do sistema arquivos.
Autenticando como: Cas (cas)
Senha:
Não tenho certeza do que mais fazer para que isso funcione, então se você tiver uma ideia, por favor me avise.
Execute
sudo -l
e veja se você tem outrassudo
linhas de comando permitidas definidas para seu usuário. Isso exibirá todas as linhas de configuração aplicáveis do sudoers, tanto da configuração principal quanto de quaisquer/etc/sudoers.d/*
arquivos incluídos, se houver.A ordem é importante: a última linha que corresponder ao seu comando será respeitada. Se essa linha for uma
(ALL : ALL) ALL
linha geral sem aNOPASSWD:
tag, será solicitada uma senha. Nesse caso, mova suasNOPASSWD:
linhas marcadas com - para uma posição posterior nosudoers
arquivo.Se a última linha do arquivo sudoers for
@includedir /etc/sudoers.d
, considere mover as linhas de configuração do sudo para um arquivo separado em/etc/sudoers.d/
. Observe que qualquer nome de arquivo nesse diretório que termine~
ou contenha um.
caractere será ignorado .Alternativamente, para permitir isso sem
sudo
, você precisaria escrever umpolkit
arquivo de regras, por exemplo/etc/polkit-1/rules.d/01-local-sleep-suspend.rules
: