Linux Mint.
Ok, das wird ernsthaft grundlegend sein, aber aus irgendeinem Grund verstehe ich falsch, wie das funktioniert.
Wenn ich die folgenden Befehle eingebe, funktioniert alles einwandfrei:
cd home/user/folder1/folder1/
sudo openvpn --auth-nocache --config /home/user/folder2/folder2/config-file.ovpn
Ich gebe das sudo Passwort ein und alles ist gut.
Wenn ich diese Befehle in eine Skriptdatei lege, erhalte ich nichts als "Befehl nicht gefunden".
Ich habe die Skriptdatei in einem Ordner abgelegt und dem Pfad sowohl das Skript- als auch die OPVN-Ordner hinzugefügt.
Ich habe ein neues Skript (ohne die Pfade) im selben Ordner wie die ovpn-Dateien erstellt, habe es von dort ausgeführt und bin fehlgeschlagen.
sudo opvn-script.sh
[sudo] password for <user>:
sudo: opvn-script.sh: command not found
Was ich nicht verstehe ist, dass die Skriptdatei selbst nicht gefunden werden kann, da sie automatisch vervollständigt wird, nachdem ich die ersten Zeichen eingegeben und die Tabulatortaste gedrückt habe. openvpn kann nicht 'nicht gefunden' werden, da ich die Befehle direkt ausführen kann.
Die Skriptdatei wird als ausführbar markiert.
echo $PATH
Zeigt beide Ordner im Pfad an.
Was zum Teufel ist übrig?
opvn-script.sh
ist im PATH für den aktuellen Benutzer, aber nicht für root. Versuchen:sudo /path/to/opvn-script.sh
sudo /path/to/opvn-script.sh
für dich. Ein anderer könnte nur sein, sich zu bewegenopvn-script.sh
an eine geeignete Stelle im aktuellen Pfad von root.Antworten:
Betrachten Sie diese Fehlermeldung:
Dies ist aufgetreten, nachdem Sie das Kennwort eingegeben haben, und weist darauf hin, dass das Skript unter dem Pfad des neuen Benutzers (root) nicht gefunden wurde.
Eine Lösung ist:
Wenn das funktioniert, dann beweg dich
opvn-script.sh
an einen geeigneten Ort irgendwo auf dem Pfad von root.Stellen Sie aus Sicherheitsgründen sicher, dass die Berechtigungen so festgelegt sind, dass nur Root-Benutzer Änderungen vornehmen können (Schreiben).
opvn-script.sh
.quelle
Ah, ich glaube ich sehe es. (Natürlich aus der Ferne schwer zu sagen, und ich habe keine Linux-Box zur Hand.)
Wenn Sie einen Befehl über sudo ausführen, z
Es gibt eine potenzielle Sicherheitslücke - prüfen Sie beispielsweise, ob jemand Ihr Skript bearbeitet und hinzugefügt hat
vi /etc/passwd
dazu. ich glaube Linux ändert den Pfad, um dies zu verhindern.Um dies zu überprüfen, schreiben Sie ein Skript, das nur widerhallt
$PATH
und starte es von sudo. Wenn der Pfad nicht Ihren Erwartungen entspricht, haben Sie Ihr Problem gefunden.quelle
Der Pfad zum Skript war nicht im SUDO-Benutzerprofil. Das Skript wurde in einen SUDO-Pfad verschoben
quelle