天天看點

Linux 限制SFTP使用者隻能通路某個目錄

1. 建立使用者并設定密碼

​> ​

​​

​useradd​

​​ ​

​suser​

​> ​

​​

​passwd​

​​ ​

​suser   ​

​​

​//​

​​ ​

​輸入密碼​

2. 設定sshd配置檔案

​> ​

​​

​cd​

​​ ​

​/etc/ssh/​

​> ​

​​

​cp​

​​ ​

​sshd_config sshd_config.back      ​

​​

​//​

​​ ​

​備份​

​> ​

​​

​vi​

​​ ​

​sshd_config​

​//​

​​ ​

​注釋該行 不注釋的話會報錯​

​#Subsystem      sftp    /usr/libexec/openssh/sftp-server    ​

​Subsystem ​

​​

​sftp​

​​ ​

​internal-​

​​

​sftp​

​Match User suser​

​ChrootDirectory ​

​​

​/var/opt/sftp​

​X11Forwarding no​

​AllowTcpForwarding no​

​ForceCommand internal-​

​​

​sftp​

3. 重新開機sshd服務

​> service sshd restart​

​其實我到這一步,已經成功實作了Linux 限制SFTP使用者隻能通路某個目錄,我的需求是隻允許test使用者通路mnt這個目錄。​

4. 建立目錄并設定權限

​> ​

​​

​mkdir​

​​ ​

​/var/opt/sftp​

​> ​

​​

​chown​

​​ ​

​-R root:suser ​

​​

​/var/opt/sftp​

​> ​

​​

​chmod​

​​ ​

​-R 750 ​

​​

​/var/opt/sftp​

至關重要的是:

ChrootDirectory設定的目錄權限及其所有的上級檔案夾權限,屬主和屬組必須是root;

ChrootDirectory設定的目錄權限及其所有的上級檔案夾權限,隻有屬主能擁有寫權限,也就是說權限最大設定隻能是755。

注意:由于權限是755,導緻非root使用者都無法在目錄中寫入檔案,是以需要在ChrootDirectory指定的目錄下建立子目錄,重新設定屬主和權限。

如:

​> ​

​chown​

 ​

​suser:suser ​

​​

​/var/opt/sftp/testdir​

​> ​

​chmod​

 ​

​-R 755 ​

​​

​/var/opt/sftp/testdir​

5. 測試一下

​> ​

​sftp​

 ​

​-oPort=22 [email protected]

常見問題:

1. 登陸時報錯:Write failed: Broken pipe, Couldn't read packet: Connection reset by peer