Das Bash-Profil funktioniert für Benutzer, aber nicht für Sudo


9

Ich habe mein .profile so geändert, dass es einen Ordner enthält, wenn ein Flash-Laufwerk angeschlossen ist. Wenn der Befehl als Benutzer ausgeführt wird, funktioniert er einwandfrei, sagt mir jedoch, dass der Scrip von sudo ausgeführt werden muss (das ist, was ich will). Wenn ich jedoch versuche, es mit sudo auszuführen, erhalte ich den Befehl "Befehl nicht gefunden".

Ich habe einen Symlink (Flash) in meinem Ordner / var / www, der auf mein / media / flash-Laufwerk verweist. (Vergiss dieses Setup, da es nur für Entwickler ist)

Dies ist das .profile meines Benutzers:

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

Wenn ich versuche, als Sudo zu laufen, bekomme ich:

sudo: script: command not found    

irgendwelche Ideen?

Antworten:


3

Wenn Sie das Skript ausführen, während sudoSie versuchen, auf root zuzugreifen. So wird $HOME/.profilestattdessen /root/.profilenicht auf Sie zugegriffen.

So machen Sie die Änderungen , was immer Sie in tat $HOME/.profilezu /root/.profile. Zu erstellen /root/.profile. Verwenden Sie die folgenden Befehle.

sudo su
cd /root
touch .profile

Versuchen Sie nach dem Vornehmen der Änderungen, das Skript auszuführen.

oder bearbeiten $HOME/.bashrcund fügen Sie die folgende Zeile hinzu

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

Hoffe das hilft.


Ich habe versucht, "alias sudo = 'sudo env PATH = $ PATH $ @'", aber ich bekomme "env: wp: Berechtigung verweigert"
user564448

Entschuldigung, "wp" ist das Skript
user564448

Versuchen Sie den anderen Schritt, den ich erwähnt habe.
Devav2

1
Lesen Sie es hier, das Sie verwenden solltensudo su -p
devav2

2

Sie können den Wert von $PATHbei der Verwendung beibehalten sudo. Verwenden Sie visudodiese Option, $PATHum der Liste der zu behaltenden Variablen hinzuzufügen . Eine Zeile wie die folgende in /etc/sudoerssollte den Trick tun:

Defaults env_keep += "PATH"

1

das ist das verhalten von sudo in ubuntu ..

Führen Sie beispielsweise den folgenden Befehl aus

echo 'echo $PATH' | sh

und als dieser

echo 'echo $PATH' | sudo sh 

Sie sehen, die Ausgabe ist anders! Um unterschiedliche Pfade zu vermeiden, geben Sie Folgendes in Ihr ~ / .bashrc ein

alias sudo='sudo env PATH=$PATH'

Nachdem ich den Alias ​​sudo = 'sudo env PATH = $ PATH' in meine .bashrc eingefügt habe, erhalte ich "env: wp: Berechtigung verweigert"
user564448

-1

Sie können Ihre Datei auch in ein von sudoers verwendetes Verzeichnis verschieben:

    sudo mv $HOME/bash/script.sh /usr/sbin/ 
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.