Alles, was ich tun muss, ist, ein bestimmtes Skript als ein bestimmter Benutzer auszuführen, der die in nologin/false
angegebene Shell hat /etc/passwd
.
Ich würde das Skript als root ausführen und dies sollte als ein anderer Benutzer ausgeführt werden. Laufen:
~# su -c "/bin/touch /tmp/test" testuser
würde funktionieren, aber ich brauche eine gültige Shell für den Testbenutzer. Ich weiß, dass ich das Passwort mit deaktivieren kann passwd -d testuser
und die Shell auf /bin/bash
diese Weise etwas sicherer machen würde, aber ich brauche eine nologin/false
Shell.
Grundsätzlich brauche ich eine Funktion, crontab
wenn Jobs als bestimmter Benutzer ausgeführt werden sollen, unabhängig davon, ob dieser Benutzer eine nologin/false
Shell hat.
ps Ich habe diesen Thread gefunden. Einen Befehl als Nologin-Benutzer ausführen , aber ich habe keine Ahnung, wie concatenate
der Befehl su -s /bin/sh $user
für das Skript ausgeführt werden soll.
root:root -rwsr-x---
?su -s /bin/bash -c 'exec /path/to/your/script &' test
runuser
, möchte ich darauf hinweisen, dass dersu -s SHELL
Parameter den Befehl runuser so gut wie unbrauchbar macht :) Danke Jan!Sie können dies tun,
sudo -u
wenn Sie es installiert haben:quelle
sudo -u apache whoami
?sudo -u
ist wahrscheinlich keine gute Idee für das Ausführen von Befehlen als Nologin-Benutzer, da dadurchSUDO_USER
die Umgebung offengelegt wird, in der der eigentliche Benutzer den Befehl aufruft. Vielleicht überdenke ich es nur.Indem Sie das Skript als Argument für die Ausführung von / bin / sh angeben:
quelle
gerade realisiert :
su -s "/ bin / bash" -c "/ bin / touch / tmp / testuser" testuser
Vielleicht gibt es einen besseren Weg?!
quelle
Tatsächlich ist der beste Weg, dies zu tun, über runuser
Einzelheiten finden Sie auf der Manpage
Dieses Tool wird verwendet, um mit der Situation umzugehen, wie der Entwickler in seinem Bolg sagte
Wann immer ein Dienst als root ausgeführt wird und die UID mithilfe der Shell ändern möchte, sollte er runuser verwenden.
http://danwalsh.livejournal.com/55588.html
Ich habe diese Antwort in vielen Palästen veröffentlicht. Verzeihen Sie mir, wenn Sie das ärgerlich finden
quelle
Verwenden Sie sudo -u, um den Benutzer anzugeben. Verwenden Sie das Flag -i auch, um Umgebungsvariablen des Zielbenutzers festzulegen.
quelle
This account is currently not available.
Verwenden Sie den Befehl su mit den Befehlen -s und -c. Wie nachfolgend dargestellt
quelle