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