一, 设置相关用户,用户组,ssh配置文件
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,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, 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