Use a diretiva NOPASSWD
Você pode usar a diretiva NOPASSWD
no seu /etc/sudoers
arquivo .
Se seu usuário for chamado de user
e seu host for chamado de host
, você poderá adicionar essas linhas a /etc/sudoers
:
user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot
Isso permitirá que o usuário user
execute os comandos desejados em host
sem inserir uma senha. Todos os outros sudo
comandos ainda exigirão uma senha.
Os comandos especificados no arquivo sudoers
deve ser totalmente qualificado (por exemplo, usando o caminho absoluto para o comando a ser executado), conforme descrito na sudoers
. Fornecer um caminho relativo é considerado um erro de sintaxe.
Se o comando terminar com um caractere /
final e apontar para um diretório, o usuário poderá executar qualquer comando nesse diretório (mas não em nenhum subdiretório). No exemplo a seguir, o usuário user
pode executar qualquer comando no diretório /home/someuser/bin/
:
user host = (root) NOPASSWD: /home/someuser/bin/
Observação: Sempre use o comando visudo
para editar o arquivo sudoers
para garantir que você não se bloqueie fora do sistema - apenas para o caso de você acidentalmente escrever algo incorreto no arquivo sudoers
. visudo
salvará seu arquivo modificado em um local temporário e somente sobrescreverá o arquivo sudoers
real se o arquivo modificado puder ser analisado sem erros.
Usando /etc/sudoers.d
em vez de modificar /etc/sudoers
Como alternativa à edição do arquivo /etc/sudoers
, você pode adicionar as duas linhas a um novo arquivo em /etc/sudoers.d
, por exemplo, %código%. Essa é uma maneira elegante de separar diferentes alterações para os direitos /etc/sudoers.d/shutdown
e também deixa o arquivo sudo
original inalterado para facilitar as atualizações.
Nota: Mais uma vez, você deve usar o comando sudoers
para editar o arquivo para garantir que você não se bloqueie fora do sistema:
sudo visudo -f /etc/sudoers.d/shutdown
Isso também garante automaticamente que o proprietário e as permissões do novo arquivo estejam definidos corretamente.
Se visudo
estiver confuso
Se você não usou sudoers
para editar seus arquivos e acidentalmente errou visudo
ou confundiu um arquivo em /etc/sudoers
, então você será bloqueado de /etc/sudoers.d
.
A solução poderia ser corrigir os arquivos usando sudo
que é uma alternativa para pkexec
.
Para corrigir sudo
:
pkexec visudo
Para corrigir /etc/sudoers
:
pkexec visudo -f /etc/sudoers.d/shutdown
Se a propriedade e / ou as permissões estiverem incorretas para qualquer arquivo /etc/sudoers.d/shutdown
, o arquivo será ignorado por sudoers
, para que você também fique bloqueado nessa situação. Novamente, você pode usar sudo
para corrigir isso.
As permissões corretas devem ser assim:
$ ls -l /etc/sudoers.d/shutdown
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown
Use pkexec
desse modo para corrigir propriedade e permissões :
pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown