On le trouve partout. Voici comment créer des partages sftp en chroot.
Dans le fichier /etc/ssh/sshd_config
:
# on utilise le sftp interne d'openssh # car la commande /usr/lib/openssh/sftp-server ne sera pas disponible dans le chroot Subsystem sftp internal-sftp Match group sftp ChrootDirectory %h X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
MAJ 17/06/2010 : Attention à la syntaxe ! Les commentaires doivent commencer en début de ligne uniquement, et il ne doit pas y avoir d’espace en fin de la ligne ForceCommand internal-sftp
.
Il suffit ensuite de créer des utilisateurs appartenant au groupe sftp, et le tour est joué.
On teste par :
sftp user@myserver.com
Problème si on veut utiliser la commande rsync pour transférer des fichiers, car la commande rsync n’est pas disponible dans le chroot.
En premier lieu, on autorise d’autres commandes que “internal-sftp” en commentant la ligne :
#ForceCommand internal-sftp
Ensuite, on crée l’arborescence suivante dans le dossier chroot :
bin/ bin/bash bin/rsync lib/ lib/libncurses.so.5 lib/ld-linux.so.2 lib/libacl.so.1 lib/libpopt.so.0 lib/libattr.so.1 lib/i686 lib/i686/cmov lib/i686/cmov/libdl.so.2 lib/i686/cmov/libc.so.6
Il s’agit des commandes bash
et rsync
, ainsi que toutes leurs librairies (que l’on peut obtenir à l’aide de la commande ldd
)
Note : l’utilisateur doit avoir /bin/bash
comme shell par défaut.
Note 2 : le dossier du chroot doit appartenir à root, bien que ça soit le dossier de l’utilisateur. Pour permettre à l’utilisateur d’écrire dedans, il faut créer un sous dossier où il a les droit. C’est une contrainte importante, mais nécessaire à la sécurité d’un chroot, vous dirons les programmeurs d’OpenSSH.
Références :