Probleme beim Ausführen von cd mit sudo als einem anderen Benutzer


12

Ich möchte einen Befehl für eine Shell im Auftrag eines anderen Benutzers ausführen. Der Befehl lautet wie folgt:

sudo -u USER cd /home/USER

Ich bekomme

sudo: cd: command not found

Was ist die richtige Syntax für den Befehl, der an sudo übergeben wird?

Antworten:


14

cdist eine eingebaute Shell . Sie müssen die Shell aufrufen, um die eingebauten Shell-Funktionen auszuführen:

sudo -u USER sh -c 'cd /home/USER'

ODER

sudo -u USER bash -c 'cd /home/USER'

1
Dies ist nicht wirklich nützlich - die Shell wird direkt nach dem beendet cd. OP will wahrscheinlich sudo -i.
Derobert

5

cdist kein externer Befehl, sondern nur eine eingebaute Shell, sudodie nicht ausgeführt werden kann. Der Grund, warum cdnur eine eingebaute Shell existiert, ist, dass ein Prozess das aktuelle Verzeichnis eines anderen Prozesses nicht beeinflussen kann. Daher ist ein Programm, das das aktuelle Verzeichnis ändert und sofort beendet, unbrauchbar. (Fast nutzlos: Ein cdProgramm würde einen Status zurückgeben, der angibt, ob es erfolgreich war.)

Wenn Sie in ein Verzeichnis wechseln und dann Befehle als ein anderer Benutzer ausführen möchten, führen Sie eine Shell aus, die dies alles erledigt.

sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'

1

Ich benutze sudo su - USERNAMEnormalerweise : und tue dann, was du als dieser Benutzer brauchst. Zum Beenden einfach tippenexit


3
Die Protokollierung als USERNAMEund die anschließende Ausführung des Befehls unterscheidet sich von der direkten Ausführung des Befehls alsUSERNAME
Pandya
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.