Ich arbeite an der Automatisierung der Erstellung von Subversion-Repositorys und zugehörigen Websites, wie in diesem von mir geschriebenen Blog-Beitrag beschrieben . Ich habe Probleme mit dem Teil, in dem ich dem Benutzer www-data den folgenden Befehl erteile:
svnadmin create /svn/repository
Am Anfang des Skripts wird überprüft, ob es als root oder sudo ausgeführt wird. Nach diesem Befehl muss alles als root ausgeführt werden. Gibt es eine gute Möglichkeit, diesen einen Befehl als WWW-Daten auszuführen und dann zum Beenden zurück zum Stammverzeichnis zu wechseln?
This account is currently not available.
su - www-data -s /bin/bash -c 'your_command'
, um diese Arbeit zu machen. Der Benutzer www-data hat eine Shell,/usr/sbin/nologin
so dass es ohne den-s
Parameter zur Fehlermeldung kommt.Mit 'su' wird wahrscheinlich das Passwort abgefragt, und www-data hat kein Passwort. Ich empfehle den Befehl
sudo
:Voraussetzung ist, dass Ihr Benutzer root ist oder in der sudoers-Datei konfiguriert ist
quelle
Verwendung
su
:quelle
2 Mögliche Ansätze :
1)
sudo
Befehl:In den meisten Fällen haben Sie Zugriff auf den
sudo
Befehl. Die Lösung lautet also einfach:sudo -u target_user target_command
2)
su
Befehl (falls sudo nicht installiert istEx. alpine-linux images
):su - target_user -c 'target_command'
Falls Sie die Fehlermeldung "Dieses Konto ist derzeit nicht verfügbar" erhalten , ist für den Benutzer eine Richtlinie ohne Anmeldung (Shell-Zugriff) in Kraft. Wenn ja, erwägen Sie die Verwendung von:
su - target_user -s /bin/bash -c 'target_command'
(Basierend auf @Petrs wertvollem Kommentar zum
-s
Flag, umwww-data
die Richtlinie für Benutzer ohne Anmeldung zu berücksichtigen )quelle