一、添加用户和用户组
sudo adduser -g groupname -d userhome -s /sbin/nologin username # 添加用户,指定主目录,禁止ssh登录
sudo usermod -a -G groupname username # 把用户添加到sftp的用户组
sudo passwd username # 配置sftp用户密码
二、修改主目录所有者及权限
配置sftp的坑:
1、由 ChrootDirectory 指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是 root
2、由 ChrootDirectory 指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限(最大权限 755)
所以执行下面的操作
sudo chown root:groupname userhome # 修改主目录所有者
sudo chmod 750 userhome # 修改主目录读写权限
三、修改配置文件
sudo vim /etc/ssh/sshd_config # 修改配置文件
配置内容:
# 注意这段的5个配置位置要在前面
UseDNS no
AddressFamily inet
PermitRootLogin yes
SyslogFacility AUTHPRIV
PasswordAuthentication yes
Subsystem sftp internal-sftp
UsePAM yes
# 单一用户配置方式,可以为不同用户配置不同主目录
Match User username
X11Forwarding yes
AllowTcpForwarding yes
ForceCommand internal-sftp
ChrootDirectory userhome
# 用户组配置方式,用户组的所有用户都能登录访问
Match Group groupname
X11Forwarding yes
AllowTcpForwarding yes
ForceCommand internal-sftp
ChrootDirectory userhome
修改完成后重启sshd服务
sudo systemctl restart sshd.service # 重启sshd服务
四、新建可操作目录
上面的操作完成后登录sftp时根目录是没有读写权限的,需要在根目录新建目录并授权给sftp用户
sudo mkdir userhome/files # 新建目录
sudo chown -R username:groupname userhome/files # 修改目录所有者
sudo chmod -R 750 userhome/files # 修改目录权限
五、测试
执行以下操作确认配置结果
sftp username@localhost # 测试配置结果
> cd files
> mkdir test
> rmdir test
六、删除用户(谨慎操作)
sudo chown -R username:groupname userhome # 修改用户主目录权限以备删除
sudo userdel -r username # 删除用户相关信息,包括用户组和主目录