如何创建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/
你几乎跟着这件事。
最好的方法是这样做:
-
通过在
/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
-
使用
mount -a
立即启动安装。 -
确保已将用户site1,site2,site3添加到同一组(例如sftpusers或sftponly)。 您可以使用这些命令将用户添加到组:
usermod -aG sftponly site1 usermod -aG sftponly site2 usermod -aG sftponly site3
-
使用以下命令为相应的用户创建
/home/{site1,site2,site3}
主目录:usermod -d /home/site1 site1 usermod -d /home/site2 site2 usermod -d /home/site3 site3
-
在
/etc/ssh/sshd_config
追加以下内容:Match group sftponly ChrootDirectory %h X11Forwarding no AllowTcpForwarding no
-
最后使用以下命令重启ssh服务:
service ssh restart
有关详细信息,请参阅Digital Ocean上的这篇文章
遵循krishna chalise的回答后,您可能需要调整所有权和权限。
例如,对于用户site1:
chown root:root /home/site1 chmod 755 /home/site1 cd /home/site1 chown site1:sftponly