Probleme beim Ausführen von CD mit sudo als anderer Benutzer

Probleme beim Ausführen von CD mit sudo als anderer Benutzer

Ich möchte einen Befehl in einer Shell im Namen 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 an sudo zu übergebenden Befehl?

Antwort1

cdist einShell integriert. Sie müssen die Shell aufrufen, um Shell-Builtins auszuführen:

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

ODER

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

Antwort2

cdist kein externer Befehl, sondern nur ein in die Shell integriertes Befehlselement und sudokann daher nicht ausgeführt werden. Der Grund, warum cdes nur als in die Shell integriertes Befehlselement 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 wird, nutzlos. (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 all diese Aufgaben erledigt.

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

Antwort3

Ich verwende normalerweise: sudo su - USERNAMEund mache dann, was du als dieser Benutzer tun musst. Zum Beenden gib einfach einexit

verwandte Informationen