Notícias
Novos modelos de linguagem da API Serverspace GPT
MA
Michael Anderson
julho 13, 2020
Atualizado janeiro 31, 2025

Direitos de superusuário do Debian (sudo, visudo)

Debian Linux

Informações gerais

Os sistemas operacionais Linux implementam o princípio de diferenciação de privilégios de usuário, o que significa que diferentes contas têm diferentes quantidades de direitos de acesso a diretórios, arquivos e programas. Os direitos máximos são concedidos à conta raiz incorporada. As contas de usuário recém-criadas geralmente sofrem restrições significativas no acesso a arquivos de configuração do sistema, no gerenciamento de serviços e na instalação e exclusão de pacotes de software. Entretanto, não é recomendável trabalhar no sistema operacional com a conta raiz, principalmente por motivos de segurança. Nesse caso, o utilitário de linha de comando sudo vem em socorro.

O comando sudo permite executar comandos individuais com privilégios maiores (por padrão, com direitos de root) usando uma conta sem privilégios. Vamos ver o que é necessário para que esse utilitário funcione.

Instalação e configuração

No sistema operacional Ubuntu, o sudo está ativado por padrão e, no Debian, se o pacote correspondente não tiver sido selecionado durante o processo de instalação, a imagem a seguir provavelmente estará:

sudo
#Output
-bash: sudo: command not found

Portanto, você precisa instalar o pacote que está faltando. Atualize as informações do repositório e instale o sudo:

apt-get update
apt-get install sudo

Estamos aguardando o fim do processo:

Debian superuser rights

Após uma instalação bem-sucedida, será necessário configurar o sudo para determinar quais usuários ou grupos poderão usar o escalonamento de privilégios e até que ponto. Todas essas configurações são armazenadas no arquivo de configuração /etc/sudoers; no entanto, é altamente desaconselhável fazer alterações diretamente nele. Para esses fins, é usado um comando especial:

visudo

que inicia um editor de texto com um arquivo de configuração:

Editor de texto com um arquivo de configuração

Duas linhas são responsáveis pela concessão de direitos:

root    ALL=(ALL:ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

A primeira linha define os direitos para a conta root, a segunda define os direitos para os membros do grupo sudo que foi criado quando o pacote foi instalado (o sinal % na frente do nome significa que o nome pertence a um grupo de usuários).

Dessa forma, temos duas maneiras principais de conceder à conta de usuário o direito de usar o sudo:

Adicionar uma conta de usuário (por exemplo, usuário) ao grupo sudo no servidor:

usermod –a –G sudo user

Depois de alterar a associação do grupo, você precisará fazer login novamente nessa conta para aplicar a nova configuração. Esse método é recomendado nos casos em que o usuário precisa ter direitos totais.

Crie uma nova entrada no arquivo, por exemplo, para a conta de usuário. Adicionamos uma linha semelhante a root:

user ALL=(ALL:ALL) ALL

A adição de uma nova entrada é recomendada nos casos em que a lista de privilégios será ajustada (mais sobre isso adiante). Se tivermos feito alterações no arquivo, precisaremos salvá-las pressionando o atalho de teclado Ctrl-O e sair do editor - Ctrl-X.

Agora você pode verificar a operação correta:

sudo cat /etc/sudoers

O comando sudo solicita a senha do usuário atual (neste caso, usuário) - digite-a e, se tudo for feito corretamente, veremos o conteúdo do arquivo de configuração do sistema.

Ajuste fino

Assim, um usuário comum pode executar comandos com os direitos da conta root sem saber a senha dela. Isso é muito conveniente, mas pode ser inseguro - é possível limitar o intervalo de comandos que podem ser executados usando o sudo? Sim, e o mesmo arquivo de configuração nos ajudará com isso. Iniciamos o visudo novamente e entendemos melhor. Estamos interessados nos parâmetros especificados após o nome de usuário:

Parâmetros especificados após o nome de usuário

Vamos analisá-los em mais detalhes:

  • ALL= (ALL: ALL) ALL - o primeiro parâmetro determina a qual host a configuração é aplicada. Ao usar um servidor dedicado, o parâmetro pode ser deixado inalterado;
  • ALL=(ALL: ALL)ALL - os parâmetros entre colchetes determinam a autoridade de qual usuário (primeiro parâmetro) e/ou grupo (segundo parâmetro) o comando será executado. Por padrão, o sudo executa o comando como root, mas, ao iniciar com a opção -u, você pode especificar uma conta diferente e, com a opção -g, pode especificar outro grupo cujos privilégios serão usados na inicialização;
  • ALL=(ALL: ALL)ALL - o terceiro parâmetro determina a quais arquivos e comandos essas configurações pertencem.

Com base no exposto acima, se necessário, determine a lista de comandos permitidos, substitua o último parâmetro ALL pelo que precisamos, listando os comandos separados por vírgulas. Por exemplo, a linha:

user    ALL=(ALL:ALL) /sbin/shutdown -r, /bin/cat

dá ao usuário o direito de usar o sudo para reiniciar o servidor com sudo /sbin/shutdown -r e visualizar arquivos usando sudo /bin/cat. Outros comandos por meio do sudo não serão executados. Por exemplo, ao tentar desligar um servidor com um comando:

sudo /sbin/shutdown -h

Obtenha a resposta:

Sorry, user user is not allowed to execute '/sbin/shutdown -h' as root on debian10.

Útil

Você pode ver a lista de privilégios executando sudo -l (a lista do usuário atual será exibida) ou sudo -l -U user (a lista de privilégios do usuário será exibida):

The list of user privileges

A composição do sudo inclui o comando sudoedit, que inicia um editor de texto com o arquivo especificado imediatamente com privilégios elevados, ou seja, em vez do comando:

sudo nano /etc/network/interfaces

Pode ser executado:

sudoedit /etc/network/interfaces

Se precisar trabalhar no modo de privilégio elevado por um longo período e for inconveniente digitar sudo para cada comando, você poderá executar uma instância do interpretador de comandos por meio do sudo:

sudo bash

Se você continuar a trabalhar nele, todos os comandos serão executados com direitos elevados. Quando terminar, saia do interpretador com o comando:

exit

Avaliação:
5 fora de 5
Аverage rating : 5
Avaliado por: 1
CEP 01311-930 São Paulo Avenida Paulista, nº 1765, 7º andar, Cj. 72, CV 10172, Bela Vista
+ 55 11 5118-1047
ITGLOBAL.COM BR LTDA
Usamos cookies para melhorar sua experiência no Serverspace. Ao continuar a navegar em nosso site, você concorda com o Uso de Cookies e com a Política de Privacidade.