sudo script na minha pasta $ HOME / bin

1

Eu tenho um script na minha pasta $HOME/bin que deve ser executado com sudo .

Se eu correr

sudo <nameofthescript>

Eu obtenho

sudo: <nameofthescript>: command not found

Qual é a maneira mais preferível de adicionar esse script ao $PATH de sudo ?

Devo movê-lo em /usr/local/sbin ?

Devo criar uma pasta /root/bin ?

    
por ceccoemi 11.04.2018 / 13:12

2 respostas

1

sudo configura um PATH limitado, por isso não encontrará seu script local. Você pode configurá-lo para não env_reset para um determinado usuário e assim por diante, mas talvez a coisa mais simples seja escrever seu próprio script de mysudo de uma linha:

#!/bin/sh
exec sudo -s PATH="$PATH" exec "$@"

e, em seguida, diga mysudo somecommand ... em vez de sudo somecommand ... . Ele pedirá ao sudo para rodar um shell, definir o PATH de volta para o que ele era e então executar o comando encontrado no caminho original.

    
por 11.04.2018 / 14:25
0

PATH é uma variável de ambiente em sistemas operacionais como o Linux, Windows, que possui um conjunto específico de diretórios onde os programas executáveis estão localizados. De acordo com sua pergunta, seu script executável é colocado sob o diretório $HOME/bin . Portanto, se você deseja executar um script que não esteja no PATH, é necessário fornecer um caminho estrutural completo para permitir que o sistema operacional atinja o arquivo para executá-lo. Por exemplo,

sudo $HOME/bin/<nameofthescript>

Se você não quiser dar o caminho completo para o arquivo o tempo todo, você pode colocar esse caminho no ambiente real usando o comando abaixo. Consedendo, você manteve seu script no diretório $HOME/bin .

PATH=$PATH:$HOME/bin

O comando acima irá adicionar seu diretório bin ao caminho do ambiente e, em seguida, você pode usar <nameofscript> de qualquer lugar no sistema. Além disso, isso só funcionará até o momento em que o seu bash estiver rodando, se você tentar o mesmo no novo terminal, o seu PATH será alterado para o padrão. Para torná-lo permanente, você precisa adicionar a linha abaixo no arquivo $HOME/.profile ou $HOME/.bashrc .

export PATH=$PATH:$HOME/bin

Para permitir que apenas o usuário raiz execute o <nameofscript> de qualquer lugar, você pode colocar no diretório /sbin ou /usr/sbin .

    
por 11.04.2018 / 13:50