目标:
给客户分配账号能在特定ip下使用sftp协议连接服务器下载指定文件夹下的所有文件。客户除了下载文件没有其他任何权限。
步骤:
1.新建用户组
groupadd sftpGroup #新建了sftpGroup为名字的用户组
2.新建某个客户的账户
useradd -g sftpGroup -s /bin/false test #在group sftpGroup 下新建了一个无法使用shell的用户test
passwd test
123456
3.给该用户分配一个用户目录
mkdir -p /data/sftp/test #新建目录
usermod -d /data/sftp/test test #给该用户分配一个用户目录
cd /data/sftp
chmod 755 test #test这个用户属于其他用户只有在test下执行加读、执行权限必须这么配
1-x-执行 2-w-写 4-r-读
4.sshd_config配置文件配置sftp服务
4.1使用internal-sftp实现sftp
# Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
#openssh默认使用sftp-server实现sftp这里改成了internal-sftp
4.2其他配置
Match Group sftpGroup #限制sftpGroup用户组(1新建的sftpGroup用户组)
ChrootDirectory /data/sftp/%u #用户允许访问的目录被限制为用户的用户名命名的文件夹
ForceCommand internal-sftp #强制执行 internal-sftp 不能执行别的命令
AllowTcpForwarding no #不允许tcp转发
X11Forwarding no #不允许X11转发
AllowUsers test@xx.xxx.xxx.xx #允许test用户在xx.xxx.xxx.xx的ip内登陆,多用户空格分开
5.重启服务
service sshd restart
6.参考地址
https://blog.csdn.net/wc1695040842/article/details/84937722
https://blog.csdn.net/a351945755/article/details/22661411