Se você conferiu este artigo sobre o superusuário root, decerto já sabe que ele goza de privilégios absolutos no sistema Linux, estando abaixo somente do próprio root dentro da hierarquia. Em complemento ao assunto, abordarei em mais detalhes o comando sudo, utilizado por usuários de nível administrativo.
Retomando o que expliquei no referido artigo, há duas maneiras de executar aplicações que requerem privilégios administrativos no Linux, sendo elas representadas pelos comandos su e sudo. No caso deste último, tópico central do conteúdo, ele permite que o usuário rode um programa como outro user — root, por exemplo.
Esse recurso do sudo faz do comando crucial para as distribuições baseadas em Linux e, sem ele, deixamos de fazer várias coisas importantes, como a instalação de um servidor ou realizar processos de segurança de rede. Na prática, é como usufruir dos privilégios do root somente quando necessário.
Agora que iniciamos o tema, que tal aprender um pouco sobre o uso do comando sudo? Acompanhe o restante do artigo!
Entendendo as diferenças entre os comandos su e sudo
Começando pelo comando su, este faz parte das configurações usuais do Linux e a sua função é, simplesmente, para fazer o login como outro usuário, inclusive o root, permanecendo no diretório em que a navegação parou. Ao digitarmos su –, o sistema redireciona o usuário para o seu diretório home.
Logo, considerando que o comando su efetua a troca de usuários e, eventualmente, o root é acionado sempre que necessário, devemos ligar a sirene para essa prática. Por quê?
A razão é simples: acessar as credenciais root (compartilhando a sua senha) é uma exposição perigosa, sobretudo em ambientes corporativos — não por acaso, os sistemas baseados no Debian, por padrão, vêm com o root desabilitado.
Vamos supor que o servidor de uma empresa do ramo financeiro tenha sido invadido e, fatalmente, alguém da equipe estava logado como root. Eis que a companhia passa a correr o risco de ser destruída, pois, o invasor tomando posse do root, ele tem poder para fazer o que bem entender com o sistema.
Obviamente, as chances de um caso como esse acontecer numa organização desse nível são remotas, visto que o departamento de TI é muito bem preparado. Mas as consequências do uso irresponsável do comando su pode levar a desastres de grandes proporções.
A segurança do comando sudo
Como vimos acima, o root user, devido aos privilégios ilimitados e irrestritos, concede ao usuário poderes que geralmente extrapolam as necessidades. Por isso, o uso do root, em si, deve ser restrito a administradores de sistemas com longa experiência, ou seja, profissionais que sabem muito bem o que estão fazendo.
No entanto, isso não significa que o usuário comum do Linux fique impedido de obter privilégios avançados. Posso afirmar que a falta de permissões administrativas arruinaria o próprio Linux, afinal seria como escolher entre ser um sistema que oferece inúmeros recursos, mas frágil em termos de segurança, ou fornecer segurança e inúmeras restrições.
Graças ao comando sudo tal dilema está fora de cogitação. Como ele não exerce a troca de usuário, como o comando su ou su –, e sim a possibilidade de utilizar o Linux com um user com altos privilégios administrativos que não seja o root. Sendo assim, cada membro da equipe que tenha credencial sudo configura a sua própria senha.
O controle e a blindagem que o sudo coloca ao nosso alcance traz um enorme impacto à Segurança da Informação. Entre os especialistas em administração de sistemas em geral, optar pelo sudo é seguir as melhores práticas de gerenciamento.
Com a importância do sudo e suas diferenças em relação ao comando su tiradas a limpo, vamos aprender a configurar usuários sudo?
Configurando usuários sudo
O primeiro ponto a chamar atenção na criação de sudo user é a configuração do arquivo /etc/sudoers, pois a falta desta pode comprometer a instalação. Como fazê-lo? Primeiramente, digite o seguinte comando: sudo visudo.
Por meio dessa linha de comando, conseguimos alterar o conteúdo do arquivo em questão e, assim, configurar o sudo. Como a modificação ocorre? O comando visudo abrirá um editor de texto que validará a sintaxe peculiar do arquivo sudoers — no Ubuntu, por exemplo, é aberto o GNU nano.
Se você acaba de fazer o procedimento, certamente deparou-se com as seguintes linhas:
Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" root ALL=(ALL:ALL) ALL %admin ALL=(ALL) ALL %sudo ALL=(ALL:ALL) ALL #includedir /etc/sudoers.d
Observe as linhas em destaque. Elas se referem aos privilégios do usuário (no caso, o root), onde o recorrente termo ALL é usado para definir a aplicação das regras para todos os hosts, usuários, grupos e comandos, respectivamente. Já as outras duas linhas (iniciadas por %) se referem a privilégios concedidos a grupos.
Portanto, ao editar o arquivo sudoer, inserimos o nome do usuário sudo acompanhado dos parâmetros acima. Exemplo: user ALL=(ALL:ALL) ALL. Muito fácil, não é mesmo? Agora, vejamos algumas ideias úteis de configuração.
4 ideias de configuração para utilizar o sudo no Linux
Há diferentes maneiras de se configurar usuários sudo que atendem a diversas necessidades. Para elucidar melhor as capacidades do comando sudo, listei quatro exemplos práticos de configuração do arquivo etc/sudoer que ajudam a aprimorar o controle e a segurança do ambiente.
Ative o comando sudo em um pseudo-terminal (PTY)
Utilizar um PTY costuma ser uma prática interessante para evitar que invasores executem malware usando o sudo. Mas para que o comando fique disponível em seu PTY, é necessário inserir a seguinte linha no arquivo sudoer:
Defaults use_pty
Emita orientações aos usuários sudo
O administrador do sistema pode disparar mensagens de orientação aos usuários sudo para quaisquer finalidades. Um bom exemplo: emitir alertas e instruções relativos aos cuidados com o uso da senha.
Com o parâmetro lecture, é possível regular a frequência e, até mesmo, customizar o recado. Antes de prosseguirmos, crie um arquivo de texto contendo uma frase qualquer e guarde-o em algum diretório (docs/lecture/msg.txt, por exemplo). Agora, insira as linhas:
Defaults lecture=”always” Defaults lecture_file="/docs/lecture/msg.txt"
Observação: a opção “always” fará com que a mensagem seja exibida sempre, mas você pode substituí-la por “once”, para exibir somente na primeira vez em que o comando sudo for acionado, ou “never”, para não emiti-la em nenhuma situação.
Exibir mensagem quando a senha está incorreta
Por padrão, o terminal retorna a mensagem “sorry, try again” quando o usuário sudo erra a senha. Você pode customizar o recado usando o parâmetro badpass_message:
Defaults badpass_message=“Senha incorreta! Tente novamente.”
Aumente as tentativas de login
No caso acima, se o sudoer está configurado no modo padrão, o usuário tem direito a três tentativas para acertar a senha. Contudo, o parâmetro passwd_tries permite editar esse limite. Exemplo:
Defaults psswd_tries=4
Rodando scripts com sudo users
A execução de um shell script ou aplicação por meio do comando sudo, em função da política de segurança padrão do Linux, só é feita mediante existência dos comandos nos diretórios especificados na terceira linha do arquivo etc/sudoers. Vamos revisá-la?
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Se o comando que você pretende acionar não está presente nessa linha, o terminal retornará a seguinte mensagem de erro: command not found (comando não encontrado). Supondo que o script esteja no diretório home/user22/bin/, modificaríamos o secure_path da seguinte maneira:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/user22/bin/"
Substitua o diretório usado como exemplo pelo seu próprio diretório e tente, então, rodar algum script nele armazenado. O shell script foi executado normalmente sem a mensagem de erro, certo?
O presente conteúdo chegou ao fim e espero que ele tenha sido útil em seus estudos. Nele, destrinchamos um pouco o sudo desde o conceito até as configurações, tendo em vista apresentar uma introdução a esse poderoso comando do Linux. Ficou com alguma dúvida? Deixe-a nos comentários.
Entretanto, sendo o seu objetivo aprimorar os conhecimentos acerca dos processos e comandos do Linux, convido-o a visitar a página Profissionais Linux. Ali, você encontrará os conteúdos dos quais necessita. Até a próxima!