Direitos de superusuário do Debian (sudo, visudo)
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á:
-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 install sudo
Estamos aguardando o fim do processo:
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:
que inicia um editor de texto com um arquivo de configuração:
Duas linhas são responsáveis pela concessão de direitos:
%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:
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:
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:
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:
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:
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:
Obtenha a resposta:
Ú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):
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:
Pode ser executado:
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:
Se você continuar a trabalhar nele, todos os comandos serão executados com direitos elevados. Quando terminar, saia do interpretador com o comando: