introduction
Certains scénarios vous obligent à créer des utilisateurs avec un accès en lecture et en écriture à un seul répertoire via FTP uniquement. Cet article vous montrera comment créer de tels utilisateurs. Ils ne pourront pas naviguer en dehors de leur répertoire personnel, se connecter au serveur via SSH ou exécuter des commandes shell.
Configurer le groupe et le service SFTP
-
Créez un groupe sftpusers.
sudo groupadd sftpusers
-
Mettez en commentaire la désactivation de l'accès SFTP à partir du fichier de configuration sshd.
sudo sed -i "s/Subsystem sftp \/usr\/lib\/openssh\/sftp-server/#Subsystem sftp \/usr\/lib\/openssh\/sftp-server/" /etc/ssh/sshd_config
-
Ouvrez le fichier de configuration sshd sudo nano /etc/ssh/sshd_config
, ajoutez-le ci-dessous et quittez (Ctrl + X -> Y -> Appuyez sur Entrée) .
#enable sftp
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %h #set the home directory
ForceCommand internal-sftp
X11Forwarding no
AllowTCPForwarding no
PasswordAuthentication yes
-
Redémarrez ssh.
sudo service ssh restart
Création d'utilisateurs
Répétez le processus ci-dessous pour chaque utilisateur SFTP uniquement que vous souhaitez ajouter au serveur.
# create user
sudo adduser sftpuser1
# prevent ssh login & assign SFTP group
sudo usermod -g sftpusers sftpuser1
sudo usermod -s /bin/nologin sftpuser1
# chroot user (so they only see their directory after login)
sudo chown root:sftpuser1 /home/sftpuser1
sudo chmod 755 /home/sftpuser1
sudo mkdir /home/sftpuser1/uploads
sudo chown sftpuser1:sftpuser1 /home/sftpuser1/uploads
sudo chmod 755 /home/sftpuser1/uploads
Vous pouvez accélérer la création d'utilisateurs en encapsulant ci-dessus dans une fonction et en l'ajoutant à votre profil bash en (1) exécutant sudo nano ~/.bash_profile
; (2) en y ajoutant l'extrait ci-dessous; (3) en cours d'exécution source ~/.bash_profile
.
Après cela, la création d'un nouvel utilisateur SFTP devient aussi simple que d'exécuter la commande create_sftp_user
avec un nom d' utilisateur comme paramètre.
# usage: create_sftp_user <username>
function create_sftp_user() {
# create user
sudo adduser $1
# prevent ssh login & assign SFTP group
sudo usermod -g sftpusers $1
sudo usermod -s /bin/nologin $1
# chroot user (so they only see their directory after login)
sudo chown root:$1 /home/$1
sudo chmod 755 /home/$1
sudo mkdir /home/$1/uploads
sudo chown $1:$1 /home/$1/uploads
sudo chmod 755 /home/$1/uploads
}
Testez pour vous assurer que l'utilisateur que vous avez créé peut se connecter au serveur via SFTP ( Remarque : connectez-vous en utilisant SFTP et non FTP) .
Écrit par Lami Adabonyan