1. Visão geral
No Linux, alguns comandos só podem ser executados pelo usuário root. Por padrão, esse superusuário tem acesso a todos os comandos e recursos do nosso sistema.
No entanto, executar tarefas sensíveis sem restrições é perigoso. Por exemplo, um erro intencional ou acidental pode quebrar todo o sistema. Como resultado, o Linux incentiva o uso de sudo. Este é um comando que fornece a um usuário normal os privilégios de um superusuário que são necessários para executar tarefas administrativas. Ao trabalhar com sudo, podemos encontrar o erro 'Username não está no arquivo sudoers. Este incidente será relatado.”
Neste tutorial, discutiremos as diferentes abordagens usadas para corrigir esse erro.
2. Razões para o erro
Primeiro, vamos notar que às vezes não precisamos corrigir esse erro, como se o administrador do sistema restringisse intencionalmente nosso acesso como medida de segurança. Esta restrição causa o problema que enfrentamos agora. Nesse caso, teremos que trabalhar com as permissões que o administrador definiu para nós.
Em contraste, se tivermos controle genuíno sobre o nosso sistema, podemos corrigir esse problema.
Então vamos começar por reproduzir o erro:
$ sudo ls
[sudo] password for francis:
francis is not in the sudoers file. This incident will be reported.
Acima, “francis não está no arquivo sudoers” simplesmente significa que o usuário francis não está presente no arquivo sudoers. Este é um arquivo que define privilégios de usuário e grupo de usuários para tarefas relacionadas ao sudo. Além disso, “Este incidente será relatado” declara que o Linux cria um relatório dessa operação com falha. Este relatório registra o que aconteceu durante este incidente sudo.
3. Adicionando o nome de usuário ao arquivo Sudoers
Nosso principal objetivo aqui é adicionar o usuário diretamente ao arquivo sudoers. Portanto, precisamos mudar para o usuário root, já que o franque não pode executar nenhuma tarefa administrativa:
$ su root
Password:
Uma vez que fizemos a mudança, vamos editar o arquivo de sudoers usando nano. Este é um editor de texto que nos permite editar arquivos a partir da linha de comando:
# nano /etc/sudoers
Agora o arquivo sudoers está pronto para edição.
Vamos adicionar uma linha sob a especificação de privilégio de usuário. Seu objetivo é conceder ao usuário do sistema os privilégios de superusuário mencionados:
# User privilege specification
root ALL=(ALL:ALL) ALL
francis ALL=(ALL:ALL) ALL
Agora, o francis pode executar tarefas que exigem acesso root.
Pouco depois de fazer a mudança, precisamos salvar essas alterações e sair do editor de texto. Para fazer isso, vamos pressionar as teclas do teclado CTRL + X para sair, Y para salvar e Enter para enviar. Finalmente, podemos sair da sessão de raiz.
4. Adicionar o nome de usuário ao grupo sudo
Como na solução acima, é importante que primeiro mudemos para o rootusuário root:
$ su root
Password:
O comando su nos permite executar tarefas com as permissões de outro usuário, que neste caso é root.
Em seguida, mostraremos o conteúdo do arquivo sudoers. Vamos nos concentrar nas linhas que declaram os privilégios dos usuários, bem como os dos grupos de usuários:
# cat /etc/sudoers
...
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
...
Como mostrado acima, o usuário root e os membros dos grupos administrador e sudo têm privilégios de superusuário. Então, novamente, o grupo sudo está presente, já que estamos em uma distribuição baseada no Debian. Em uma distribuição Linux baseada no Red Hat, encontraremos o grupo de usuários de roda. É o equivalente ao grupo de usuários sudo para distribuições baseadas em Red Hat.
Agora, como estamos operando no Debian, vamos adicionar nosso usuário ao grupo sudo:
# usermod -aG sudo francis
Aqui, o comando usermod nos permite modificar os atributos do nosso usuário. Em particular, usamos a opção -G para declarar que gostaríamos de atualizar as informações do grupo para o nosso grupo de francis do usuário. Além disso, a opção -a garante que outros grupos associados a esse usuário não sejam excluídos no processo. Como resultado, o franquete agora pode executar tarefas administrativas com o sudo. Nas distros Red Hat, a substituição de sudo por roda fornece resultados semelhantes.
Quando passarmos, sairemos da rootsessão de usuário root:
# exit
exit
Agora estamos de volta à nossa sessão de usuário anterior.
5. Conclusão
Neste artigo, explicamos brevemente o significado do erro do Linux “O nome do usuário não está no arquivo sudoers. Este incidente será relatado.” Então demonstramos duas soluções aplicáveis para resolver este problema.