-
背景,作用、
系统:centos
公司需要新建一个sftp账户,只允许访问和操作对应的目录文件。其他文件夹则不显示。 -
创建用户
adduser sftpuser
-
给新建的用户设置密码
passwd sftpuser
输入密码,回车,确认密码。
-
禁止该用户登录 SSH
usermod -s /bin/false sftpuser
因为我们只想这个用户作用于ftp工具,所以禁用SSH登录。
-
设置该用户的主目录
usermod -d /data/wwwroot/test/ sftpuser
这样用户登入的时候就会直接跳到该目录,但是用户还是可以访问其他目录,需要做一下限制。(注意这里的目录根据自己的需求选择,但是目录所属必须是root,下面会讲到。)
-
修改sshd_config
vi /etc/ssh/sshd_config
找到 Subsystem sftp 这一行,修改成
Subsystem sftp internal-sftp UsePAM yes Match User sftpuser ForceCommand internal-sftp ChrootDirectory /data/wwwroot/test/
同时将sftpuser换成自己的用户,/data/wwwroot/test/换成该用户的主目录。
如果有多个用户需要做此操作的话,重复复制这段,将用户名和目录换成对应的就行,例如:Subsystem sftp internal-sftp UsePAM yes Match User sftpuser ForceCommand internal-sftp ChrootDirectory /data/wwwroot/test/ Subsystem sftp internal-sftp UsePAM yes Match User sftpuser1 ForceCommand internal-sftp ChrootDirectory /data/wwwroot/test1/ Subsystem sftp internal-sftp UsePAM yes Match User sftpuser2 ForceCommand internal-sftp ChrootDirectory /data/wwwroot/test2/
最后保存退出。重启sshd服务。
/etc/init.d/sshd restart
好了,到此该用户登入后只会限制在自己的主目录下,也看不到别的目录。
注意:用户登录后可能会发现以下问题
-
显示一片空白,可能登入不上去,或者登上去但是没有目录显示。
因为ChrootDirectory设置的目录开始往上到系统根目录只能属于root用户。
ChrootDirectory设置的目录开始往上到系统根目录为止都不可以具有群组写入权限(最大权限 755)
所以/data/wwwroot/test/该目录往上所属都只能是root用户,这点需要注意一下。 -
用户不能做编辑上传等操作
这是因为当前用户并没有权限操作。
所以只需要在data/wwwroot/test/下新建一个新的目录供这个用户进行操作。mkdir /data/wwwroot/test/upload chown -R sftpuser:root /data/wwwroot/test/upload
这样用户就可以在upload目录下进行操作了。