Erstellen eines UNIX-Kontos, das nur einen Befehl ausführt

12

Gibt es eine Möglichkeit, ein Benutzerkonto in Solaris zu erstellen, mit dem die Benutzer nur einen Befehl ausführen können? Keine Login-Shell oder sonst etwas. Ich könnte es möglicherweise mit /usr/bin/falsein machen /etc/passwdund nur den Benutzer dazu bringen ssh <hostname> <command>, aber gibt es eine schönere Möglichkeit, es zu tun?

Will Dowling
quelle

Antworten:

14

Sie könnten einen erzwungenen Befehl verwenden, wenn die Benutzer nur über ssh eine Verbindung herstellen können. Immer wenn der Benutzer eine Verbindung über ssh mit einem bestimmten Schlüssel und einem bestimmten Benutzernamen herstellt, zwingen Sie ihn, einen Befehl (oder ein Skript oder) auszuführen, den Sie in den .ssh / authorized_keys festgelegt haben. Von den Benutzern ausgegebene Befehle werden ignoriert.

Beispielsweise:

# in .ssh/authorized_keys
command="cd /foo/bar && /path/to/scripts/my_script.sh arg1 arg2",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa public_key
Barthelemy
quelle
Nun, ihr hattet beide recht. Ich habe ein Skript erstellt, das ein Menü in der Eingabeaufforderung bereitstellt und den Befehl für die erzwungene Überprüfung in .ssh / authorized_keys auf dem Server vor dem Schlüssel für den autorisierten Benutzer verwendet. Dies ermöglicht es ihm nun, auf den Server zu ssh und an der Eingabeaufforderung wird ein nettes Menü mit mehreren auszuführenden Befehlen angezeigt. Sonst kann nichts ausgeführt werden. Glückliche Tage!
Will Dowling
1
Bearbeitet; Sie benötigen diese Optionen, um einen erzwungenen Befehl zu sichern: "Keine Portweiterleitung, Keine X11-Weiterleitung, Keine Agentenweiterleitung, Keine Pty".
Tobu
11

Sie können die Shell dieses Benutzers auf ein Skript einstellen, das nur den Befehl ausführt, den Sie zulassen möchten: Immer wenn sich der Benutzer anmeldet, wird der Befehl ausgeführt und der Benutzer abgemeldet. Und da es keine "vollständige Shell" gibt, musst du dich nicht mit dem Benutzer auseinandersetzen, der funky Sachen ausprobiert;)

tante
quelle
0

Ich frage mich, ob Sie dies mit RBAC tun könnten und dem Benutzer eine privilegierte Shell (pfsh, pfcsh oder pfksh) geben und ein Profil für die Befehle erstellen könnten, die der Benutzer ausführen darf.

Schlafwiesel
quelle