如何创建sftp用户只能访问特定目录?

我想为sftp创建用户,对特定文件夹的访问权限有限

我的文件夹结构如下所示:

/var/www/site1/files/ /var/www/site2/files/ /var/www/site3/files/ 

我想创建sftp user1来访问/var/www/site1/files/仅使用filezila上传网站文件而无法查看任何其他文件夹

同样对于访问/var/www/site2/files/

对于访问/var/www/site3/files/

你几乎跟着这件事。
最好的方法是这样做:

  1. 通过在/etc/fstab附加以下行将3个目录中的每个目录挂载到/home目录:

     /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. 使用mount -a立即启动安装。

  3. 确保已将用户site1,site2,site3添加到同一组(例如sftpusers或sftponly)。 您可以使用这些命令将用户添加到组:

     usermod -aG sftponly site1 usermod -aG sftponly site2 usermod -aG sftponly site3 
  4. 使用以下命令为相应的用户创建/home/{site1,site2,site3}主目录:

     usermod -d /home/site1 site1 usermod -d /home/site2 site2 usermod -d /home/site3 site3 
  5. /etc/ssh/sshd_config追加以下内容:

     Match group sftponly ChrootDirectory %h X11Forwarding no AllowTcpForwarding no 
  6. 最后使用以下命令重启ssh服务:

     service ssh restart 

有关详细信息,请参阅Digital Ocean上的这篇文章

遵循krishna chalise的回答后,您可能需要调整所有权和权限。

例如,对于用户site1:

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