OpenSSH從4.8p1開始支援ChrootDirectory的功能
可以設定使用者的根目錄 就不會像以前隨便一個使用者登入後連系統根目錄都可以瀏覽
嗯 以後SFTP可以取代FTP了 也不用搞被動模式的port 讚
【設定方式】
修改/etc/ssh/sshd_config:
Subsystem sftp internal-sftp
設定:
#單一使用者
Match user 帳號
ChrootDirectory /路徑
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp
#群組
Match group 群組
ChrootDirectory /your_path
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp
特別要注意的是使用者根目錄的權限
當初就是這個權限沒搞好 設定一直起不來 還以為裝錯版本
還傻傻地去官網抓最新版下來編譯安裝 結果還是一樣
重點來了
假設有個帳號myacc 家目錄是/home/myacc
/home 的權限是 root的
/home/myacc是myacc的
Match區塊的設定必須把ChrootDirectory的根目錄設定為root權限的目錄,也就是要設定成:
ChrootDirectory /home
這樣又會有另一個問題,通常使用者會有好幾位,預設的家目錄都是在/home下面
如果每個人的ChrootDirectory都設為/home
那麼其他人的家目錄都會被看見
存取的問題可以用設定權限來解決
如果要讓使用者登入只看到自己的目錄
那就要再多設一層目錄,也就是:
/home/myacc_sftp/myacc
/home/myacc2_sftp/myacc2
.....etc
其中/home/myacc_sftp /home/myacc2_sftp的權限是root,設定檔就變成:
ChrootDirectory /home/myacc_sftp
ChrootDirectory /home/myacc2_sftp
.....etc