Dieser Benutzer ist derzeit nicht verfügbar, kann jedoch ein Skript von diesem Benutzer ausführen

21

Ich habe einen speziellen Benutzer in / etc / passwd erstellt mit:

secure:x:2000:2000:secure:/bin:/usr/sbin/nologin

Ich möchte die Anmeldung dieses Benutzers nicht zulassen (über Konsole, ssh, ftp, auf irgendeine Weise).

Er dient nur zum Ausführen eines Skripts über:

sudo su secure -c '/home/someuser/secure.script'

Aber es gibt mir This user is currently not available.. Wie richte ich es ein, damit das Skript auf diese Weise ausgeführt werden kann, ohne dass sich dieser Benutzer (Konsole, ssh, ftp, ...) beim System anmeldet?


Ich habe festgestellt, dass /usr/sbin/nologinder Computer bei der Eingabe über die Befehlszeile mit antwortet This account is currently not available..

Peter
quelle
Über sudo sufinden unix.stackexchange.com/questions/218169/...
Kusalananda

Antworten:

26

Dies ist ein typischer Anwendungsfall für sudo.

Sie mischen, sudowas die Ausführung von Befehlen als anderer Benutzer ermöglicht und in hohem Maße konfigurierbar ist (Sie können selektiv angeben, welcher Benutzer welchen Befehl als welcher Benutzer ausführen kann) und suwelcher zu einem anderen Benutzer wechselt, wenn Sie das Kennwort kennen (oder root sind). suLäuft immer die eingeschriebene Shell /etc/passwd, auch wenn sie su -cbenutzt wird. Aus diesem Grund suist nicht kompatibel mit /usr/sbin/nologin.

Du solltest benutzen

sudo -u secure /home/someuser/secure.script

Wie sudokonfigurierbar können Sie steuern, wer diesen Befehl verwenden kann und ob er / sie ein Kennwort eingeben muss, um ihn auszuführen. Sie müssen bearbeiten /etc/sudoersverwenden , visudodies zu tun. (Seien Sie vorsichtig, wenn Sie / etc / sudoers bearbeiten, und verwenden Sie immer visudo, um dies zu tun. Die Syntax ist nicht trivial und ein Fehler kann Sie von Ihrem Root-Konto ausschließen.)

Diese Zeile in sudoers ermöglicht es jedem in der Gruppe somegroup, den Befehl wie folgt auszuführen secure:

%somegroup    ALL=(secure) /home/someuser/secure.script

Auf diese Weise kann jeder in der Gruppe somegroupden Befehl ausführen, secureohne ein Kennwort einzugeben:

%somegroup    ALL=(secure) NOPASSWD: /home/someuser/secure.script

So können Sie user1den Befehl ausführen, secureohne ein Kennwort einzugeben:

user1    ALL=(secure) /home/someuser/secure.script
cg909
quelle
13

Ich habe herausgefunden, dass das Hauptproblem " /usr/sbin/nologin" in ist. /etc/passwd Wenn ich su in diesem Fall ausführen möchte, muss es -s /bin/bashinnen sein, also zum Beispiel:su -s /bin/bash -c '/home/someuser/secure.script' secure

Peter
quelle
1
Ja, suverwendet standardmäßig die in / etc / passwd geschriebene Shell. Mit sukönnen Sie sich als Benutzer eines anderen Benutzers anmelden. nologindruckt die Meldung "Dieser Benutzer ist derzeit nicht verfügbar." und Ausgänge. sudoverwendet keine Shell, um einen Befehl auszuführen, daher funktioniert auch die Verwendung von sudowithout su. Weitere Informationen finden Sie in meiner Antwort sudo.
CG909
2

suverwendet die in angegebene Shell /etc/passwd.

Sie brauchen nicht zu verwenden sumit sudo.

Deshalb nicht mischen sumit sudo: verwenden sudo -u secure '/home/someuser/secure.script'.

Strg-Alt-Delor
quelle
-2

Dies ist möglicherweise nicht zu 100% relevant für die Frage, kann jedoch jemandem helfen, der eine ähnliche Warnmeldung erhalten hat This user is currently not available

1) Erkundigen Sie sich bei Ihrem Hosting-Unternehmen, ob Sie Shell-Zugriff erhalten haben.

2) Wenn Sie CWP7 verwenden: Setzen Sie Shell Access auf ON Bildbeschreibung hier eingeben

ShapCyber
quelle
2
1) Shell - Zugang ist eindeutig als die Frage spricht über laufen su, sudound alle möglichen anderen Dinge. 2) In der Frage gibt es keinen Hinweis darauf, dass sich die betreffende Installation hinter einem Web-Control-Panel in irgendeiner Form befindet.
Philip Kendall
1
Ja (außer es ist eine Q & A-Site, kein Forum). Aber ein Teil nützlich zu sein , ist sicherzustellen , dass Ihre Antwort auf die Frage tatsächlich relevant ist, und ich glaube nicht , dass diese Antwort ist tatsächlich relevant: das Plakat klar Shell - Zugriff hat bereits, so wie wäre es auf über ein Bedienfeld drehen (die evtl. gar nicht vorhanden) das problem lösen?
Philip Kendall
3
@ShapCyber: Beachten Sie, dass diese Frage sich mit jemandem befasst, der manuell einen neuen, speziellen Benutzer erstellt hat. Die Antworten in diesem "Thread" (Frage) sollten die Situation in dieser Frage ansprechen. Wenn Sie auf ein anderes Problem gestoßen sind, für das dies eine Lösung darstellt, müssen Sie Ihre eigene neue Frage stellen und selbst beantworten.
Jeff Schaller
1
Was @ JeffSchaller sagte, ist richtig. Und ich würde Sie, ShapCyber, ermutigt wirklich zu tun bitte fragen und selbst beantworten Sie eine Frage mit dem Problem und Lösung , die Sie (detailliert genug , nützlich zu sein) auftreten; Fügen Sie dann einen Kommentar zu dieser Frage hinzu, um einen Link zu Ihrer Frage zu erstellen. So können Sie zukünftigen Lesern im Rahmen der Einrichtung dieser Website am besten helfen. :)
Wildcard
2
@ShapCyber ​​Aus diesem Grund empfehlen wir Ihnen, eine neue Frage zu öffnen, damit die Suche die richtige Antwort für ihr Problem findet.
Jeff Schaller