Il arrive souvent d'avoir besoins de donner des autorisations à un utilisateur sur un serveur sans que cet utilisateur n'ai trop de droits, par exemple naviguer dans le système de fichiers. sudo à ses limites.
La solution est de chrooter la connexion ssh de l'utilisateur en lui donnant une liste de commandes restreinte.
Pour cela on va utiliser un petit script qui permet de créer cet environnement (il est bien sur possible de le créer à la main mais bon on est toujours un peu faineant nous les admins).
Télécharger le script suivant http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/make_chroot_jail.sh.html
Ce script date un peu mais il fait ce qu'on lui demande et c'est le principal.
Donnez les droits d'exécution sur ce script. Et exécutez le simplement comme ceci :
# make_chroot_jail.sh toto
Ce qui va créer la prison dans le répertoire /home/jail et l'utilisateur toto aura son homedirectory dans /home/jail/home/toto
Suffit ensuite de modifier le fichier /etc/ssh/sshd_config pour autoriser l'utilisateur à se connecter (si jamais vous restreignez les accès avec AllowUsers ou AllowGroup).
La liste des applications disponibles se trouve dans la variable APPS, voici par exemple pour Debian :
elif [ "$DISTRO" = DEBIAN ]; then
APPS="/bin/bash /bin/cp /usr/bin/dircolors /bin/ls /bin/mkdir /bin/mv /bin/rm /bin/rmdir /bin/sh /bin/su /usr/bin/groups /usr/bin/id /usr/bin/rsync
/usr/bin/ssh /usr/bin/scp /sbin/unix_chkpwd /usr/bin/touch /bin/cat"
Donc pour rajouter des commandes, il suffit de les rajouter dans cette variable et de faire :
# make_chroot_jail.sh update
NB : il faut déconnecter les utilisateurs pour faire cette mise à jour