web-dev-qa-db-fra.com

Comment créer un utilisateur sftp pour accéder à un répertoire spécifique uniquement?

Je veux créer des utilisateurs pour sftp avec un accès limité à des dossiers spécifiques

Ma structure de dossiers ressemble à ceci:

/var/www/site1/files/

/var/www/site2/files/

/var/www/site3/files/

Je veux créer sftp user1 pour accéder à /var/www/site1/files/ uniquement pour télécharger des fichiers de site Web à l'aide de filezila et ne peut afficher aucun autre dossier

et de même pour user2 avec un accès limité à /var/www/site2/files/

et pour user3 avec un accès limité à /var/www/site3/files/

1
Ahmed

Vous avez à peu près suivi la chose.
La meilleure façon est de le faire:

  1. Montez chacun des 3 répertoires sur /home répertoires en ajoutant les lignes suivantes dans /etc/fstab:

    /var/www/site1/files/ /home/site1/htdocs/ bind 0 0
    /var/www/site2/files/ /home/site2/htdocs/ bind 0 0
    /var/www/site3/files/ /home/site3/htdocs/ bind 0 0
    
  2. Utilisation mount -a pour lancer instantanément les montures.

  3. Assurez-vous d'avoir ajouté les utilisateurs site1, site2, site3 au même groupe (par exemple, sftpusers ou sftponly). Vous pouvez utiliser ces commandes pour ajouter les utilisateurs aux groupes:

    usermod -aG sftponly site1
    usermod -aG sftponly site2
    usermod -aG sftponly site3
    
  4. Faire le /home/{site1,site2,site3} répertoires de départ pour les utilisateurs correspondants utilisant:

    usermod -d /home/site1 site1
    usermod -d /home/site2 site2
    usermod -d /home/site3 site3
    
  5. Ajoutez ce qui suit dans votre /etc/ssh/sshd_config:

    Match group sftponly
          ChrootDirectory %h
          X11Forwarding no
          AllowTcpForwarding no
    
  6. Enfin, redémarrez le service ssh en utilisant:

    service ssh restart
    

Voir cet article sur Digital Ocean pour plus de détails.

1
Krishna Chalise

Après avoir suivi la réponse de krishna chalise vous devrez peut-être ajuster la propriété et les autorisations.

Par exemple, pour l'utilisateur site1:

chown root:root /home/site1
chmod 755 /home/site1
cd /home/site1
chown site1:sftponly
0
user5174959