Pesquisa de site

Como executar scripts Shell com comando Sudo no Linux


sudo é uma poderosa ferramenta de linha de comando que permite que um “usuário autorizado” execute um comando como outro usuário (o superusuário por padrão), conforme definido por uma política de segurança. Na maioria, senão em todos os sistemas Linux, a política de segurança é orientada pelo arquivo /etc/sudoers.

Leia também: 10 configurações úteis de Sudoers para definir ‘sudo’ no Linux

Portanto, para executar um script ou programa shell como root, você precisa usar o comando sudo. No entanto, o sudo apenas reconhece e executa comandos que existem nos diretórios especificados no secure_path no /etc/sudoers, a menos que um comando esteja presente em o secure_path, você irá combater um erro como o mostrado abaixo.

Isso acontecerá mesmo que o script exista em um diretório na variável de ambiente PATH, porque quando um usuário invoca sudo, PATH é substituído por PATH. forte>caminho_seguro.

echo  $PATH
ls  -l
sudo proconport.sh 80

No cenário acima, o diretório /home/aaronkilik/bin está na variável de ambiente PATH e estamos tentando executar o script /home/aaronkilik/bin /proconport.sh (encontra processos escutando em uma porta) com privilégios de root.

Então encontramos o erro “sudo: proconport.sh: comando não encontrado ”, pois /home/aaronkilik/bin não está no sudo secure_path > conforme mostrado na próxima captura de tela.

Para corrigir isso, precisamos adicionar o diretório que contém nossos scripts no sudo secure_path usando o comando visudo editando o arquivo /etc/sudoers do seguinte modo.

sudo visudo

Atenção: Este método tem sérias implicações de segurança, especialmente em servidores rodando na Internet. Dessa forma, corremos o risco de expor nossos sistemas a vários ataques, pois um invasor que conseguir obter acesso a um diretório inseguro (sem privilégios de superusuário) que foi adicionado ao secure_path, pode executar um script/programa malicioso com o comando sudo.

Por motivos de segurança, verifique o seguinte artigo do site sudo que explica uma vulnerabilidade relacionada ao secure_path: https://www.sudo.ws/sudo/alerts/secure_path.html

De preferência, podemos fornecer o caminho absoluto para um script enquanto o executamos com sudo:

sudo ./proconport.sh 80

É isso! Você pode seguir uma lista de artigos sobre o comando sudo:

  1. Como executar o comando ‘sudo’ sem inserir uma senha no Linux
  2. Como manter a sessão de tempo limite da senha ‘sudo’ por mais tempo no Linux
  3. Como corrigir “O nome de usuário não está no arquivo sudoers. Este incidente será relatado” no Ubuntu
  4. Deixe o Sudo insultá-lo quando você inserir a senha incorreta

Se você tiver alguma dúvida ou opinião sobre este artigo, compartilhe conosco através do formulário de comentários abaixo.