在向服務器上傳文件時,現在我們很多都是拿服務器的登錄用戶,通過第3方工具(wincp,xftp等)直接上傳的,這些用戶可以進入服務器的大部分目錄,下載擁有可讀權限的文件,直接拿用戶做sftp還是存在風險的,尤其是向第3方人員或服務提供sftp服時,所以在提供專用的sftp用戶有必要做好權限的控制
現在對sftp用戶的控制方法,一般就是把訪問目錄限定在用戶加目錄下,翻看了一些網上資料和自身實踐後,具體方法如下(需root執行):
1、建立sftp用戶和相關用戶組,以psftp用戶爲例
groupadd p2psftp
mkdir /hsdata/
useradd -d /hsdata/psftp -g p2psftp -s /bin/false psftp
passwd psftp
chown root /hsdata/psftp
chmod 750 /hsdata/psftp
說明:psftp家目錄的屬主必須是root,屬組必須是p2psftp(在後面的ssh中使用是的p2psftp),該家目錄的最高可設置權限爲755,如果高於該權限,會導致sftp連接不上
2、建立sftp目錄
cd /hsdata/psftp
mkdir upload
chmod a+w upload -R upload
upload目錄可以用於上傳和下載文件
說明:必須在psftp目錄的下級目錄中纔可以上傳下載,在同級目錄中不行
3、修改ssh配置(ssh版本必須在4.8以上)
cd /etc/ssh/
cp sshd_config sshd_config.bak
vim sshd_config,修改內容如下:
#Subsystem sftp /usr/libexec/openssh/sftp-server(這行需註釋)
新增如下內容(最好在配置文件的結尾添加)
Subsystem sftp internal-sftp
Match Group p2psftp
ChrootDirectory /hsdata/psftp
ForceCommand internal-sftp
修改保存後重啓服務
service sshd restart
centos7.X版本重啓則執行
/bin/systemctl restart sshd.service
如果出現如下報錯
把Subsystemz這塊的配置放到配置文件的最後。在重啓