Führen Sie den Befehl als Linux-Systembenutzer aus (shell = / bin / false)

29

Ich habe in Ubuntu 11.04 ( adduser --system) einen "System" -Benutzer erstellt, um bestimmte Cron-Jobs auszuführen, aber manchmal möchte ich Dinge testen, indem ich manuell Befehle als dieser Benutzer ausführe. Wie geht das am einfachsten?

sufunktioniert nicht, weil der Benutzer /bin/falseals Shell hat (was für Cron in Ordnung ist). Ich habe die Shell manuell geändert /bin/bash, um meine Tests durchzuführen und sie dann wieder zu ändern, aber ich frage mich, ob es einen einfacheren Weg gibt.

EMP
quelle

Antworten:

41

Ich benutze su - targetuser -s /bin/bashaus einer Root-Shell.

Für die direkte Befehlsausführung verwenden Sie -c:

su - targetuser -s /bin/bash -c "/bin/echo hello world" 
dmourati
quelle
Das funktioniert, danke! Wie habe ich die Option -s verpasst?
EMP
3
Sie können auch die Option -c "your_command_here" verwenden, um den gewünschten Befehl zu übergeben, statt auf die Shell zu warten, und ihn dann bei einer neuen Eingabeaufforderung eingeben.
Dmourati
2

Benutze sudo. Dies funktioniert auch dann, wenn der Benutzer keine echte Shell hat.

Eirescot
quelle