Linux.general : compte utilisateur
Posté par zigfrid75 () le 26 mars 2008bonjour a tous,
question a 2 balles. est il possible de n'autoriser a un user que d'utiliser certainne commande et seulement ces commandes. pour etre plus precis je voudrais que ce user n'ai le droit que de lancer un script et rien d'autre. pas de mkdir, pas de ls enfin juste lancer le script.
est ce possible ? si oui comment proceder ?
> Lire le message (14 commentaires, moyenne: 1,9).
Vous avez demandé le commentaire #916755.



Avec ssh
Truc que j'avais vu il ya quelques temps, mais je n'arrive pas a retrouver les references... Juste une piste donc.
Avec ssh, tu peux forcer le shell d'un utilisateur a la connexion. Par consequent, si au lieu de forcer un shell standard, tu donnes le chemin de ton script a la place et ferme la connexion, seul ce script sera execute.
Maintenant a toi de retrouver comment faire, moi je ne sais pas :o)
[^]Re: Avec ssh
Avec ssh, tu peux forcer le shell d'un utilisateur a la connexion.
Aucune trace de ça dans le man 5 sshd_config.
Le seul truc qui pourrait s'approcher de ce que tu décris serait de
forcer la variable d'environnement SHELL (voir AcceptEnv dans man 5 sshd_config), mais :
1/ je suis pas sur que ça outrepasse vraiment le shell par défaut de l'utilisateur.
2/ Ce serait plus à l'initiative de l'utilisateur qui se connecte, et faire confiance à l'utilisateur c'est aller dans le mur :)
Par contre, changer le shell de l'utilisateur se fait très bien à coup de chsh en tant que root.
Donc à priori tu peux très bien faire:
chsh -s <chemin du script> <user>
Toutefois cette modification sera globale au système, et non juste pour les connexions ssh.
[^]Re: Avec ssh
En cherchant un peu plus...
man sshd, section LOGIN PROCESS
=> ssh execute le fichier ~/.ssh/rc s'il existe. Il suffit donc de mettre dans ce fichier:
/path/vers/le/script/kivabien
exit
et zouplaboum, la connexion se fermera apres execution du script
C'est vrai que je me suis plante, ce n'est pas le shell par defaut qui est change...
[^]Re: Avec ssh
et zouplaboum, la connexion se fermera apres execution du script
C'est vrai que je me suis plante, ce n'est pas le shell par defaut qui est change...
Ok, j'ai matté la page de man en question, par contre je suis pas sur que le comportement que tu décris soit bon.
En effet, je lis:
7. Changes to user's home directory.
8. If ~/.ssh/rc exists, runs it; else if /etc/ssh/sshrc exists,
runs it; otherwise runs xauth. The ``rc'' files are given the
X11 authentication protocol and cookie in standard input.
9. Runs user's shell or command.
Je vois plus le point 8. comme une étape intermédiaire te permettant d'éxecuter des actions avant de lancer le shell.
Le lancement du shell ne semble pas avoir pour condition la (non) execution du script.
Donc, à mon avis, dans ton exemple, le shell de l'utilisateur sera lancé après le script.
On doit toujours pouvoir gruger en mettant /bin/true comme shell à l'utilisateur.
Après, j'pense que pour être sur il faudrait tester et j'avoue avoir la flemme :)
[^]Re: Avec ssh
Tu a jete l'esprit dans mon trouble...
Donc avec un ~/.ssh/rc contenant
fortuneexit
et en me logant via ssh, j'ai bien une jolie fortune et la connexion ferme aussitot. Ca permet donc de ne pas changer le shell par defaut.
[^]Re: Avec ssh
Le serveur SSH va exécuter fortune mais ça ne ferme pas la connexion. Le script ~/.ssh/rc est exécuté mais pas "sourcé" par ton shell. Ton exit va juste te faire sortir du script rc, ensuite la connection ssh va continuer.
Par contre je pense qu'en mettant comme shell /bin/false (ou /sbin/nologin sur certaines distributions), tu va exécuter le script rc puis un shell qui quitte tout de suite.
Etienne
[^]Re: Avec ssh
Ca a pourtant ete teste et approuve par moi meme ce matin.
La connexion ssh s'arrete, alors que je peux me connecter sans souci (ie sans changer le shell par defaut) en dehors de ssh.
Apres, je suis peut etre dans un cas special, mais j'en doute.
[^]Re: Avec ssh
Bein testé et desapprouvé à l'instant:
[binarym@gco]:~% echo "uname -a\nexit\n" > .ssh/rc
[binarym@gco]:~% ssh localhost
binarym@localhost's password:
Linux gco 2.6.18-5-amd64 #1 SMP Sat Dec 22 20:43:59 UTC 2007 x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Mar 27 12:31:21 2008 from localhost
Linux gco 2.6.18-5-amd64 #1 SMP Sat Dec 22 20:43:59 UTC 2007 x86_64 GNU/Linux
[binarym@gco]:~% exit
Connection to localhost closed.
[^]Re: Avec ssh
man sshd
/authorized
à condition que l'utilisateur s'authentifie par clef, on peut forcer la commande à exécuter dans ~/.ssh/authorized_keys
(exemple d'utilisation, uucp sur ssh)