說(shuō)明
默認(rèn)SFTP基于系統(tǒng)用戶. 一般通過(guò)xshell連接的用戶都可以連接到sftp.但是這種用戶基本可以操作任何用戶,權(quán)限方面沒(méi)有限制.
改文章即提供SFTP相關(guān)權(quán)限的控制的設(shè)置.
系統(tǒng)環(huán)境
ssh-version
ssh -V
OpenSSH_7.2p2 Ubuntu-4ubuntu2.2, OpenSSL 1.0.2g 1 Mar 2016
保證OpenSSH版本至少4.8p1,因?yàn)榕渲脵?quán)限需要版本添加的新配置項(xiàng) ChrootDirectory 來(lái)完成拒担。
Ubuntu版本
cat /proc/version
Linux version 4.4.0-97-generic (buildd@lcy01-33) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #120-Ubuntu SMP Tue Sep 19 17:28:18 UTC 2017
cat /etc/issue
Ubuntu 16.04.3 LTS \n \l
操作步驟
切換到ROOT用戶
創(chuàng)建SFTP用戶組
groupadd sftpusers
創(chuàng)建用戶
useradd -s /bin/false -G sftpusers user
/bin/fasle指定用戶沒(méi)有登錄shell的權(quán)限
設(shè)置用戶密碼
passwd passwd
-
配置ssh權(quán)限
vim /etc/ssh/sshd_config
4.1. 修改以下內(nèi)容
#Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp
4.2. 在尾部添加權(quán)限
# 匹配用戶組抗果,如果要匹配多個(gè)組芹务,多個(gè)組之間用逗號(hào)分割 Match Group sftpusers # 指定登陸用戶到自己的用戶目錄 # 開(kāi)放Story ChrootDirectory /data/test # 指定 sftp 命令 ForceCommand internal-sftp # 這兩行,如果不希望該用戶能使用端口轉(zhuǎn)發(fā)的話就加上沿彭,否則刪掉 X11Forwarding no AllowTcpForwarding no
為什么實(shí)用 internal-sftp 而不用默認(rèn)的 sftp-server喝峦,這是因?yàn)椋?br> 這是一個(gè)進(jìn)程內(nèi)的 sftp 服務(wù),當(dāng)用戶 ChrootDirectory 的時(shí)候跟啤,將不請(qǐng)求任何文件乃沙;
更好的性能,不用為 sftp 再開(kāi)一個(gè)進(jìn)程诗舰。
-
修改數(shù)據(jù)目錄權(quán)限
假設(shè)目錄為/data/test
5.1./data/test
必須為root用戶, 且目錄權(quán)限為755
5.2./data/test
的上層目錄/data
也必須為root用戶, 且目錄權(quán)限為755
操作如下chown -R root:root /data chmod -R 755 /data
5.3. 添加上傳目錄
mkdir /data/test/upload chown -R test:sftpusers /data/test/upload chmod -R 755 /data/test/upload
重啟SSH服務(wù)
service sshd start