Ausführen eines Befehls als Nologin-Benutzer

43

Ich habe vor kurzem meinen Server so eingerichtet, dass meine "virtuellen" suPHP-Benutzer mithilfe dieses Artikels nicht angemeldet werden können

Mein Problem ist jetzt , dass vor , wenn ich einen lief rakeBefehl für meine Ruby on Rails - Anwendung auf dem Server ausgeführt wird , hat ich suin zu gehen www-dataund den Befehl von dort ausführen - natürlich kann ich das nicht mehr , weil die nologin.

Wie kann ich als Root-Benutzer Befehle als andere Benutzer ausführen, auch wenn sie nicht angemeldet sind?

Tischmacher
quelle
Eine Möglichkeit besteht darin, eine Shell für diesen Benutzer zu starten (wobei die Shell explizit angegeben wird): sudo -u www-data bash
Führen Sie
@ cyberx86 Ihre Lösung ist ein Genuss. Könnten Sie sie als Antwort für mich einreichen?

Antworten:

50

Eine Möglichkeit besteht darin, eine Shell für diesen Benutzer zu starten (wobei die Shell explizit angegeben wird):

sudo -u www-data bash 

Dadurch wird eine (Bash-) Shell als angegebener Benutzer gestartet. Anschließend können Sie Ihre Befehle ausführen und sich abmelden (um zur vorherigen Shell zurückzukehren).

cyberx86
quelle
39

Als root können Sie verwenden su -s /bin/sh $user - die -sOption überschreibt die konfigurierte Shell für den Benutzer.

Sergey Vlasov
quelle
1
Das scheint mir immer ein Fehler zu sein.
Funktioniert super für mich, hatte noch nie ein Problem. Beim Ausführen von Skripten mit Bash-Syntax wird / bin / bash anstelle von / bin / sh benötigt
ekerner