Sudo

#unix

O comando sudo (SUperuser DO) fornece a um usuário comum permissão de execução para comandos restritos ao usuário root. Dessa forma torna-se possível, por exemplo, instalar programas sem a necessidade de se logar como root.

Configuração

O arquivo de configuração do sudo é /etc/sudoers e existe o comando visudo para editar o arquivo, já que o arquivo vem com permissão somente de leitura:

$ ls -l /etc/sudoers
-r--r----- 1 root root 349 2007-01-24 15:51 /etc/sudoers

E é necessário mudar a permissão para editá-lo e para usar o comando sudo o arquivo de configuração deve ter as mesmas permissões iniciais, além disso o próprio comando visudo verifica a sintaxe do arquivo indicando se houver erros.

Digite visudo como usuário root no terminal e insira a seguinte linha, com as devidas alterações:

user host = NOPASSWD: /end/do/comando

No qual:

  • user é o usuário que terá, permissão para executar o comando, há ainda a possibilidade de informar o grupo ao qual o usuário pertence, neste caso adicione %, como no exemplo que é colocado no grupo admin:
%admin ALL=NOPASSWD: ALL
  • host nome do computador onde o comando poderá ser executado (ALL para todos);
  • NOPASSWD evita que o usuário tenha que confirmar sua própria senha ao executar o comando através do sudo (o contrário é PASSWD);
  • /end/do/comando é a localização do comando, ou pode ser usado a palavra ALL para todos os comandos (tome cuidado com isso).

Saia normalmente do arquivo, caso haja erro o visudo verifica o arquivo e informa do erro de sintaxe e é só teclar e e <ENTER> para editar novamente e corrigir o erro.

Com tudo isso feito somente falta só um teste, como você deve saber o sudo vem antes do comando:

$ sudo command

Resolução de problemas

Caso apareca uma mensagem de erro semelhante a:

$ sudo pwd
sudo: unable to resolve host myhostname

Basta colocar o myhostname no /etc/hosts, como no exemplo abaixo:

127.0.0.1 myhostname