Aller au contenu
Vie du geek le forum entre geek
dokkun

Installer un sftp avec chroot sur debian

Messages recommandés

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×