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.

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" 

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.

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.