Use a NOPASSWDdiretiva
Você pode usar a NOPASSWDdiretiva em seu /etc/sudoersarquivo .
Se seu usuário for chamado usere seu host for chamado, hostvocê poderá adicionar estas linhas a /etc/sudoers:
user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot
Isso permitirá que o usuário userexecute os comandos desejados hostsem inserir uma senha. Todos os outros sudocomandos ed ainda exigirão uma senha.
Os comandos especificados no sudoersarquivo devem ser totalmente qualificados (ou seja, usando o caminho absoluto para a execução do comando), conforme descrito na sudoerspágina de manual . Fornecer um caminho relativo é considerado um erro de sintaxe.
Se o comando terminar com um /caractere à direita 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 userpode executar qualquer comando no diretório /home/someuser/bin/:
user host = (root) NOPASSWD: /home/someuser/bin/
Nota: Sempre use o comando visudopara editar o sudoersarquivo para garantir que você não fique bloqueado no sistema - caso você acidentalmente grave algo incorreto no sudoersarquivo. visudosalvará o arquivo modificado em um local temporário e somente substituirá o sudoersarquivo real se o arquivo modificado puder ser analisado sem erros.
Usando em /etc/sudoers.dvez de modificar/etc/sudoers
Como alternativa à edição do /etc/sudoersarquivo, você pode adicionar as duas linhas a um novo arquivo, por /etc/sudoers.dexemplo /etc/sudoers.d/shutdown. Essa é uma maneira elegante de separar diferentes alterações nos sudodireitos e também deixa o sudoersarquivo original intacto para atualizações mais fáceis.
Nota: Novamente, você deve usar o comando visudopara 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 sejam definidos corretamente.
Se sudoersestá bagunçado
Se você não usou visudopara editar seus arquivos e, em seguida, acidentalmente estragou /etc/sudoersou estragou um arquivo /etc/sudoers.d, será bloqueado sudo.
A solução pode ser corrigir os arquivos usando o pkexecque é uma alternativa sudo.
Para corrigir /etc/sudoers:
pkexec visudo
Para corrigir /etc/sudoers.d/shutdown:
pkexec visudo -f /etc/sudoers.d/shutdown
Se a propriedade e / ou as permissões estiverem incorretas para qualquer sudoersarquivo, o arquivo será ignorado e, sudoportanto, você também poderá ficar bloqueado nessa situação. Novamente, você pode usar pkexecpara 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 pkexecassim para corrigir propriedade e permissões :
pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown