一, 設置相關用戶,用戶組,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
