o perfil do bash funciona para o usuário, mas não para o sudo

9

Modifiquei meu .profile para incluir uma pasta se uma unidade flash estiver conectada. Ao executar o comando como usuário, ele funciona bem, mas informa que o script deve ser executado pelo sudo (é isso que eu quero). No entanto, quando tento executá-lo com o sudo, recebo "comando não encontrado"

Eu tenho um link simbólico (flash) na minha pasta / var / www, apontando para minha unidade / media / flash. (esqueça essa configuração, pois é apenas para dev)

este é o perfil do meu usuário:

# set PATH so it includes flash scripts
if [ -d "/var/www/flash/scripts" ] ; then
    PATH="/var/www/flash/scripts:$PATH"
fi

ao tentar executar como sudo eu recebo:

sudo: script: command not found    

alguma ideia?

user564448
fonte

Respostas:

3

Quando você executa o script, sudovocê está tentando acessar a raiz. Portanto, seu $HOME/.profileacesso não /root/.profileserá acessado.

Então, fazer as mudanças que sempre que você fez em $HOME/.profilepara /root/.profile. Para criar /root/.profile. Use os seguintes comandos.

sudo su
cd /root
touch .profile

depois de fazer as alterações, tente executar o script.

ou edite $HOME/.bashrce adicione a seguinte linha

alias sudo='sudo env PATH=$PATH $@'

Espero que isto ajude.

devav2
fonte
Eu tentei "alias sudo = 'sudo env PATH = $ PATH $ @'", mas recebo "env: wp: Permissão negada"
user564448
desculpe, "wp" é o script
user564448
Tente o outro passo que eu mencionei.
Devv2
1
Leia-o aqui, você deve usarsudo su -p
devav2
2

Você pode preservar o valor $PATHao usar sudo. Use visudopara adicionar $PATHà lista de variáveis ​​a serem mantidas. Uma linha como a seguinte em /etc/sudoersdeve fazer o truque:

Defaults env_keep += "PATH"
Dennis Kaarsemaker
fonte
1

esse é o comportamento do sudo no ubuntu ..

por exemplo, execute o seguinte comando

echo 'echo $PATH' | sh

e que este

echo 'echo $PATH' | sudo sh 

você vê que a saída é diferente! Para evitar caminhos diferentes, coloque o seguinte em seu ~ / .bashrc

alias sudo='sudo env PATH=$PATH'
Christopher Jahnke
fonte
Depois de colocar o pseudônimo sudo = 'sudo env PATH = $ PATH' no meu .bashrc, recebo "env: wp: Permissão negada"
user564448
-1

Você também pode mover seu arquivo em um diretório usado pelo sudoers:

    sudo mv $HOME/bash/script.sh /usr/sbin/ 
LeGilles
fonte