Problemas com PATH ao executar comandos com su

Publicado por Danilo Almeida em 13/04/2020

[ Hits: 1.580 ]

 


Problemas com PATH ao executar comandos com su



O que fazer se, mesmo num shell como root, você não consegue rodar ferramentas de administrador? Em sistemas Debian isso pode ter a ver com a forma que o PATH é setado.

Acessando as Ferramentas de Superusuário no Debian

Se você tentou executar uma ferramenta de administrador no Debian, pode ter recebido uma mensagem de erro sugerindo que a ferramenta não se encontra no PATH. Por exemplo:

# dpkg -i /home/danilo/Downloads/firmware-realtek_20190114-2_all.deb

Saída:

dpkg: aviso: 'ldconfig' não foi encontrado em PATH ou não é executável
dpkg: aviso: 'start-stop-daemon' não foi encontrado em PATH ou não é executável
dpkg: erro: 2 programas esperados não foram encontrados em PATH ou não são executáveis
Ao checar o PATH, você descobre que o diretório das ferramentas de administrador, /sbin, não consta:

# echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Note que neste caso, o dpkg não é a ferramenta que não foi encontrada, mas sim "ldconfig" e "start-stop-daemon", que foram chamados por "dpkg". O dpkg consta no PATH do usuário não administrador. A solução para isso é rodar a ferramenta LOGADO como usuário root. Fazemos isso acrescentando um traço ('-') como parâmetro do comando su:

su -

# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# dpkg -i /home/danilo/Downloads/firmware-realtek_20190114-2_all.deb
A seleccionar pacote anteriormente não seleccionado firmware-realtek.
(Lendo banco de dados ... 185785 ficheiros e directórios actualmente instalados.)
A preparar para desempacotar .../firmware-realtek_20190114-2_all.deb ...
A descompactar firmware-realtek (20190114-2) ...
Configurando firmware-realtek (20190114-2) ...
update-initramfs: deferring update (trigger activated)
A processar 'triggers' para initramfs-tools (0.133+deb10u1) ...
update-initramfs: Generating /boot/initrd.img-4.19.0-8-amd64


Isso acontece porque o arquivo /etc/profile é quem determina a inclusão de /sbin etc no PATH. E esse arquivo só é lido durante o login. Se você apenas executar su não estará logando como root, mas apenas executando uma seção interativa como tal, ignorando a configuração em /etc/profile.

Referência: manual do su

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

PHPMailer - Validação de campos, e-mail e domínio para formulário de contato e envio

Conheça o Succi Linux

Explicação para qualquer comando Linux

Verificando os dispositivos USB plugados no micro

OCS Inventory no CentOS 6.5 - Para inventário de rede

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts