Création d'un compte UNIX qui n'exécute qu'une seule commande

13

Existe-t-il un moyen de créer un compte utilisateur dans Solaris qui permet aux utilisateurs d'exécuter une seule commande? Pas de shell de connexion ni rien d'autre. Je pourrais éventuellement le faire avec /usr/bin/falsein /etc/passwdet simplement amener l'utilisateur à le faire ssh <hostname> <command>, mais y a-t-il une meilleure façon de le faire?

Will Dowling
la source

Réponses:

15

Vous pouvez utiliser une commande forcée si les utilisateurs ne peuvent se connecter que via ssh. Essentiellement, chaque fois que l'utilisateur se connecte via ssh avec une certaine clé et un certain nom d'utilisateur, vous le forcez à exécuter une commande (ou un script ou) que vous avez déterminée dans le .ssh / authorized_keys. Les commandes émises par les utilisateurs seront ignorées.

Par exemple:

# 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
la source
Eh bien, vous aviez raison tous les deux. Ce que j'ai fait a été créé un script qui fournit un menu à l'invite et a utilisé la commande de vérification forcée dans .ssh / authorized_keys sur le serveur devant la clé pour l'utilisateur autorisé. Cela lui permet maintenant de ssh vers le serveur et à l'invite est donné un joli menu avec plusieurs commandes à exécuter. Rien d'autre ne peut être exécuté. Jours heureux!
Will Dowling
2
Édité; vous avez besoin de ces options pour sécuriser une commande forcée: "no-port-forwarding, no-X11-forwarding, no-agent-forwarding, no-pty".
Tobu
11

Vous pouvez définir le shell de cet utilisateur sur un script exécutant simplement la commande que vous souhaitez autoriser: chaque fois que l'utilisateur se connecte, la commande est exécutée, puis l'utilisateur est déconnecté. Et comme il n'y a pas de "shell complet", vous n'avez pas à vous occuper de l'utilisateur qui essaie des trucs funky;)

tante
la source
0

Je me demande si vous pourriez le faire avec RBAC et donner à l'utilisateur un shell privilégié (pfsh, pfcsh ou pfksh) et créer un profil pour les commandes que les utilisateurs seraient autorisés à exécuter.

somnolence
la source