Interdire l'utilisation d'un shell via SSH

À côté ses utilisations les plus communes (shell, transfert de fichiers, etc), SSH est un bon outil qui permet de contrôler l'accès aux branches créées avec Bazaar. C'est couplé avec le Bazaar smart server que je l'utilise afin de savoir qui à le droit ou non de modifier les branches. Pour cela, chaque personne ayant le droit d'écriture doit disposer d'un compte sur la machine serveur. Cependant, il est prudent de limiter l'accès de ses personnes.

En effet, donner un compte utilisateur sur une machine possédant SSH revient généralement à donner l'accès au shell via SSH à cet utilisateur. Dans mon cas, je ne souhaite pas que l'utilisateur puisse avoir accès au shell mais seulement à ce qu'il puisse pusher ses branches via bzr+ssh://. L'idée est de laisser l'utilisateur se connecter puis de le déconnecter tout de suite après. Pour réaliser ceci, on édite alors le fichier /etc/passwd avec les droits d'administrateur. Ne le faites surtout pas si vous ne savez pas sur quoi vous allez tomber, cette manipulation s'avérer dangereuse pour votre système !

Une fois le fichier ouvert, on recherche l'utilisateur qui ne doit pas avoir accès au shell. La ligne doit ressembler à ça :
utilisateur:x:1004:1004:,,,:/home/utilisateur:/bin/bash

Ici on voit que le terminal de l'utilisateur est de type bash. On change alors la valeur /bin/bash (ou autre si elle est différente) par /bin/true. On obtient alors ceci :
utilisateur:x:1004:1004:,,,:/home/utilisateur:/bin/true

Lors de sa tentative de connexion, l'utilisateur aura droit à une déconnexion automatique.
utilisateur@localhost:~$ ssh utilisateur@domaine.tld
Last login: Sat Oct 24 14:05:26 2009 from ....
Connection to domaine.tld closed.


Bien entendu, les commandes utilisant bzr+ssh:// continueront à fonctionner.

Vus : 291
Publié par Respawner : 34