新建目录、用户、组
mkdir -p /opt/sftp
然后新建用户组和用户,并制定该用户的宿主目录、登陆权限、属组
groupadd anger #新建用户组
useradd -d /opt/sftp -g anger -s /bin/false anger #新建用户,-d指定宿主目录,-g指定属组 -s绑定可以使用的shell
passwd anger #配置用户密码
目录赋权限
chown root.anger -R /opt/sftp #赋予属主为root,属组为anger,并递归
chmod 755 -R /opt/sftp #赋予属主可读可写可执行,属组和其他用户可读可执行
cd /opt
chmod a+w sftp #允许所有用户写入,不然普通用户无法上传文件
修改ssh配置文件
vim /etc/ssh/sshd_config
#在文件末尾添加下面的配置,如果有相同配置,一定要注释掉之前的,不然ssh会启动失败
Subsystem sftp internal-sftp -l INFO -f local5 #开启sftp,并配置输出日志
Match User anger #匹配用户
ChrootDirectory /opt/sftp #限制目录,不能切换到其他目录
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp #指定sftp命令
配置系统日志的配置文件
vim /etc/rsyslog.conf
#在文件末尾添加
auth,authpriv.*,local5.* /var/log/sftp.log
重启服务
systemctl restart sshd #重启ssh服务
systemctl restart rsyslog #重启系统日志服务
到此为止,所有配置完成,anger用户只能通过sftp方式访问服务器,不可以进行ssh登陆,而且被限制在宿主目录中,如果想实现只可上传不能下载,可以把目录的属组r(读取)权限去掉,这样用户就无法看到目录内容,但是可以上传文件,日志文件存储在/var/log/sftp.log当中,包括访问记录、信息等。