sftp多用户不同权限配置过程

mkdir -pv /opt/ftpsite/{admin,user1,user2}
groupadd sftpadmins
groupadd sftpusers

useradd -g sftpadmins -s /sbin/nologin -d /opt/ftpsite/ admin
passwd admin
123456

useradd -g sftpusers -s /sbin/nologin -d /opt/ftpsite/ user1
passwd user1
111111

useradd -g sftpusers -s /sbin/nologin -d /opt/ftpsite/ user2
passwd user2
222222

[注意:不要使用 echo "PASSWORD" | passwd --stdin USERNAME 这种方式设定密码,经测试有bug]


vim /etc/ssh/sshd_config
Port 35021
Subsystem sftp internal-sftp
Match Group sftpadmins
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

Match Group sftpusers
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no
说明1: ChrootDirectory %h ,表示用户通过sftp登录后就把根目录切换到它自己的家目录
说明2: 以上为经过修改的配置

sftp -oPort=35021 admin@192.168.56.23
输入密码进行登录


三个用户先测试登录成功,但因为目录都是root用户的,所以没有写入权限

接下来修改用户权限如下
[root]# ll -d /opt/ftpsite
drwxr-xr-x 5 root root 4096 5月  11 10:59 /opt/ftpsite
说明:用户的家目录属主必须是root,且权限最高755

[root]# cd ftpsite/
[root]# ll
drwxrwx--- 2 admin  sftpadmins 4096 5月  12 15:10 admin
dr-xrwx--- 2 user1 sftpadmins 4096 5月  12 12:15 user1
dr-xrwx--- 2 user2 sftpadmins 4096 5月  12 15:11 user2


sftp目录结构 /opt/ftpsite/{admin,user1,user2}

用户名: admin   密码: 123456
sftp -oPort=35021 admin@192.168.56.23
可以在{admin,user1,user2}目录读写

用户名: user1    密码: 111111
sftp -oPort=35021 user1@192.168.56.23
可以列出所有目录,但只能进入bmcoop1目录读取,其他目录拒绝查看/进入

用户名: user2    密码: 222222
sftp -oPort=35021 user2@192.168.56.23
可以列出所有目录,但只能进入bmcoop2目录读取,其他目录拒绝查看/进入

使用FileZilla连接时,格式如下
主机: sftp://192.168.56.23
用户名: user2
密码:  222222
端口: 35021