Use a NOPASSWD
diretiva
Você pode usar a NOPASSWD
diretiva em seu /etc/sudoers
arquivo .
Se seu usuário for chamado user
e seu host for chamado, host
você 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 user
execute os comandos desejados host
sem inserir uma senha. Todos os outros sudo
comandos ed ainda exigirão uma senha.
Os comandos especificados no sudoers
arquivo devem ser totalmente qualificados (ou seja, usando o caminho absoluto para a execução do comando), conforme descrito na sudoers
pá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 user
pode executar qualquer comando no diretório /home/someuser/bin/
:
user host = (root) NOPASSWD: /home/someuser/bin/
Nota: Sempre use o comando visudo
para editar o sudoers
arquivo para garantir que você não fique bloqueado no sistema - caso você acidentalmente grave algo incorreto no sudoers
arquivo. visudo
salvará o arquivo modificado em um local temporário e somente substituirá o sudoers
arquivo real se o arquivo modificado puder ser analisado sem erros.
Usando em /etc/sudoers.d
vez de modificar/etc/sudoers
Como alternativa à edição do /etc/sudoers
arquivo, você pode adicionar as duas linhas a um novo arquivo, por /etc/sudoers.d
exemplo /etc/sudoers.d/shutdown
. Essa é uma maneira elegante de separar diferentes alterações nos sudo
direitos e também deixa o sudoers
arquivo original intacto para atualizações mais fáceis.
Nota: Novamente, você deve usar o comando visudo
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 sejam definidos corretamente.
Se sudoers
está bagunçado
Se você não usou visudo
para editar seus arquivos e, em seguida, acidentalmente estragou /etc/sudoers
ou estragou um arquivo /etc/sudoers.d
, será bloqueado sudo
.
A solução pode ser corrigir os arquivos usando o pkexec
que é 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 sudoers
arquivo, o arquivo será ignorado e, sudo
portanto, você também poderá ficar bloqueado nessa situação. Novamente, você pode usar pkexec
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
assim para corrigir propriedade e permissões :
pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown