le profil bash fonctionne pour l'utilisateur mais pas sudo


9

J'ai modifié mon .profile pour inclure un dossier si un lecteur flash est branché. Lors de l'exécution de la commande en tant qu'utilisateur, cela fonctionne bien mais me dit que le script doit être exécuté par sudo (c'est ce que je veux). Cependant, quand j'essaye de l'exécuter avec sudo j'obtiens "commande non trouvée"

J'ai un lien symbolique (flash) dans mon dossier / var / www pointant vers mon lecteur / media / flash. (peu importe que cette configuration soit juste pour le dev)

c'est le profil de mon utilisateur:

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

en essayant de courir comme sudo j'obtiens:

sudo: script: command not found    

des idées?

Réponses:


3

Lorsque vous exécutez le script lorsque sudovous essayez d'accéder à root. Donc, vous $HOME/.profilene serez pas accédé à la place /root/.profile.

Alors faire les changements que jamais vous avez fait dans $HOME/.profileà /root/.profile. Pour créer /root/.profile. Utilisez les commandes suivantes.

sudo su
cd /root
touch .profile

après avoir effectué les modifications, essayez d'exécuter le script.

ou modifiez $HOME/.bashrcet ajoutez la ligne suivante

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

J'espère que cela t'aides.


J'ai essayé "alias sudo = 'sudo env PATH = $ PATH $ @'" mais j'obtiens "env: wp: Autorisation refusée"
user564448

Désolé, "wp" est le script
user564448

Essayez l'autre étape que j'ai mentionnée.
devav2

1
Lisez-le ici, vous devez l'utilisersudo su -p
devav2

2

Vous pouvez conserver la valeur de $PATHlors de l'utilisation sudo. Utilisez visudopour ajouter $PATHà la liste des variables à conserver. Une ligne comme la suivante /etc/sudoersdevrait faire l'affaire:

Defaults env_keep += "PATH"

1

c'est le comportement de sudo dans ubuntu ..

par exemple exécuter la commande suivante

echo 'echo $PATH' | sh

et que celui-ci

echo 'echo $PATH' | sudo sh 

vous voyez que la sortie est différente! pour éviter des chemins différents, mettez ce qui suit dans votre ~ / .bashrc

alias sudo='sudo env PATH=$PATH'

Après avoir mis l'alias sudo = 'sudo env PATH = $ PATH' dans mon .bashrc, je reçois "env: wp: Autorisation refusée"
user564448

-1

Vous pouvez également déplacer votre fichier dans un répertoire utilisé par sudoers:

    sudo mv $HOME/bash/script.sh /usr/sbin/ 
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.