Frage Befehl als Linux "system" user ausführen (shell = / bin / false)


Ich habe einen "System" -Benutzer in Ubuntu 11.04 (adduser --system) zum Ausführen bestimmter Cron-Jobs, aber manchmal möchte ich Dinge testen, indem ich Befehle manuell als diesen Benutzer ausführe. Was ist der einfachste Weg, dies zu tun?

su funktioniert nicht, weil der Benutzer hat /bin/false als seine Schale (was für Cron in Ordnung ist). Ich habe die Shell manuell auf geändert /bin/bash um meine Tests zu machen und dann wieder zurück zu ändern, aber ich frage mich, gibt es einen einfacheren Weg?


25
2018-05-28 03:02


Ursprung




Antworten:


ich benutze su - targetuser -s /bin/bash aus einer Root-Shell.

Für direkte Befehlsausführung verwenden -c:

su - targetuser -s /bin/bash -c "/bin/echo hello world" 

36
2018-05-28 03:38



Das funktioniert, danke! Wie habe ich die Option -s vermisst? - EMP
Sie können auch die Option -c "your_command_here" verwenden, um den Befehl, den Sie ausführen möchten, im Gegensatz zu dem Warten auf die Shell zu übergeben und dann an einer neuen Eingabeaufforderung einzugeben. - dmourati


Verwenden Sie Sudo. Dies funktioniert auch, wenn der Benutzer keine echte Shell hat.


2
2018-05-28 03:36