Versions
2014/04/28 : creation
2014/08/01 : typo
Contactez-nous
Kitpages
17 rue de la Frise
38000 Grenoble
tel : 04 58 00 33 81
Installer un sftp avec chroot sur debian
Introduction
Ce tutoriel explique pas à pas comment installer un serveur sftp sur debian wheezy avec les droits d'accès qui vont bien sur les répertoires.
Installation de base
SFTP se base sur ssh. Il faut installer quelques packages :
# basic ssh packages apt-get install ssh openssh-server
Création du groupe unix sftp_chroot
Ce groupe contiendra la liste des users qui peuvent se connecter en sftp
addgroup sftp_chroot
Configuration sshd_config
Evolutions à faire dans /etc/ssh/sshd_config
# Vérifier qu'on a bien : Subsystem sftp /usr/lib/openssh/sftp-server # ajouter à la fin du fichier : Match Group sftp_chroot ChrootDirectory /home/%u ForceCommand internal-sftp AllowTcpForwarding no # pensez à relancer le serveur ssh : /etc/init.d/ssh restart
Créer un compte sftp
Créer un user unix
Créer un user unix classique
useradd testuser --gid sftp_chroot --groups sftp_chroot -m --shell /bin/false
droits d'accès sur le home directory
Pour empêcher le sftp de remonter dans l'arborescence, on peut jouer avec les droits d'accès
# base directory given to root only chown root /home/testuser chmod go-w /home/testuser # create a writable directory mkdir /home/testuser/writeable chown testuser:sftp_chroot /home/testuser/writeable chmod ug+rwX /home/testuser/writeable
Le script qui fait tout pour vous
Voilà un petit script bash qui fait tout pour vous.
N'utilisez le qu'une fois que vous avez compris ce que vous faites. Et si ça casse tout chez vous, je plaide non coupable :-).
#/bin/bash # author : Philippe Le Van, twitter: @plv USER_NAME=$1 SFTP_GROUP_NAME=sftp_chroot if [ "x$USER_NAME" == "x" ]; then echo "you have to provide a user name" exit; fi getent group $SFTP_GROUP_NAME > /dev/null 2&>1 if [ $? -ne 0 ]; then echo "group $SFTP_GROUP_NAME does not exist."; echo "see this (french) tutorial : http://www.kitpages.fr/fr/cms/193/installer-un-sftp-chroote-sur-debian"; exit; fi getent passwd $USER_NAME > /dev/null 2&>1 if [ $? -eq 0 ]; then echo "user already exists"; exit; fi useradd $USER_NAME --gid $SFTP_GROUP_NAME --groups $SFTP_GROUP_NAME -m --shell /bin/false echo "user created"; # base directory given to root only chown root /home/$USER_NAME chmod go-w /home/$USER_NAME # create a writable directory mkdir /home/$USER_NAME/writeable chown $USER_NAME:$SFTP_GROUP_NAME /home/$USER_NAME/writeable chmod ug+rwx /home/$USER_NAME/writeable echo "access right ok"; echo "change password"; passwd $USER_NAME
Références et conclusion
Pour écrire cet article, je me suis inspiré du message suivant :
en adaptant un peu la recette et en créant le script.
Commentaires
Ajouter un commentaire