0. 我们需要创建一个用户组,专门用于sftp用户,每台Linux服务器建立一次sftp 用户组即可。
groupadd sftpusers
1、在用户组sftpusers 下创建用户 sftp1,并禁止ssh登录,不创建家目录
useradd -s /sbin/nologin -G sftpusers -M sftp1
2、设置用户密码
passwd sftp1
xxxxxxx
3、创建sftp根目录,所有sftp用户都将在该目录下活动,首次创建即可
mkdir /data/data/sftpusers
4、设置目录权限,目录的权限设定有两个要点:
目录开始一直往上到系统根目录为止的目录拥有者都只能是root
目录开始一直往上到系统根目录为止都不可以具有群组写入权限
chown root:root /data/data/sftpusers
chmod 755 /data/data/sftpusers
注意:/data 的权限也应该是755权限
chmod 755 /data
5、设置sftpusers的用户目录权限
mkdir /data/data/sftpusers/sftp1
chown root:sftp1 /data/data/sftpusers/sftp1
chmod 755 /data/data/sftpusers/sftp1
6、配置sshd_config
vi /etc/ssh/sshd_config
7、修改如下内容,并保存退出,首次修改即可
#注释掉这行
#Subsystem sftp /usr/libexec/openssh/sftp-server
添加这行:
Subsystem sftp internal-sftp #指定使用sftp服务使用系统自带的internal-sftp,如果不添加,用户无法通过sftp登录。
#添加在配置文件末尾
Match Group sftpusers 属于用户组 sftpusers 都能访问自己的目录,多个组之间用逗号分割
ChrootDirectory /data/data/sftpusers/%u #用chroot将指定用户的根目录
#这里的%u指的是账号名,/data/data/sftpusers/%u 含义是:/data/data/sftpusers/sftp1
ForceCommand internal-sftp #指定sftp命令
X11Forwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
AllowTcpForwarding no
8、赋予用户上传文件的权限
在/data/data/sftpusers/sftp1目录下新建一个data/目录
在ChrootDirectory 根目录下创建子目录data,将data的owner设置为sftpusers ,这样sftpusers用户就可以上传数据到data中了
chown sftp1:sftpusers-R data/
9、重启:systemctl restart sshd.service
查看状态:systemctl status sshd.service
测试:lftp -p22 -u sftp1,xxxxxxx sftp://192.168.xx.xx
10、若要再创建第二个sftp用户,则需要重复1、2、5、8、9
上一篇:linux限制IP访问