一般託管在我服務器上的網站我都不提供任何管理方式,因爲這樣比較安全,同時也一直懶得去研究怎麼把sftp限制在家目錄裏,而且不想搭ftp……
所以說該來的總是要來的,因爲各種各樣的原因,今天就設法來搞定這個問題。
事實再一次證明,網上的教程一般都是坑爹的,可能不久以後有別人按我這篇東西操作以後也會這麼想……
言歸正傳,我首先嚐試了rssh,叉這東西各種不靠譜,反正我配置完了能連卻不給看目錄
接下來在各種Google時發現CentOS6以後自帶的OpenSSH版本就已經支持Chroot了(版本4.8以上),然後開始研究自帶的。
我所使用的系統爲CentOS 6.2
下面開始配置Chroot
1.檢查OpenSSH版本
ssh -v
高於4.8就行了,老版本系統OpenSSH版本過低的話就先升級下,升級方法自己Google
2.創建用戶
useradd woodragon
3.配置sshd_config
vim /etc/ssh/sshd_config
找到下面這行在前面加個#將其註釋掉
Subsystem sftp /usr/libexec/openssh/sftp-server
在最後添加如下內容
Subsystem sftp internal-sftp
Match User woodragon
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
注:
Match User woodragon
最後面的就是希望匹配的用戶名,多個用戶名用逗號分隔,將User換成Group來匹配用戶組,同樣逗號分隔
ChrootDirectory
後面的路徑,%u代表用戶名,如果整個換成%h就代表用戶的home路徑
ForceCommand
據說一定要加,我沒試不加會怎麼樣
AllowTcpForwarding no
如果不希望該用戶能使用端口轉發的話就加上,否則刪掉
X11Forwarding no
同上
4.設定Chroot目錄權限
chown root:woodragon /home/woodragon
chown 755 /home/woodragon
這一步非常非常重要,我就是因爲權限沒設對卡了一下午= =
需要被限制的目錄所屬者必須是root,所屬組必須是希望被限制的用戶所在的組如果所屬者沒有設成root,那麼你會發現壓根不讓你登錄,查看secure日誌會有權限錯誤的記錄,比如 fatal: bad ownership or modes for chroot directory XXXXXX如果所屬組設成了root,那麼你會發現雖然能登錄,但是任何文件夾都無法被列出來,不過我沒試設成除了root以外非目標用戶組會有什麼事情最後還有一點非常關鍵的是,如果你的目錄在比較深的地方,那麼從目標文件夾到根目錄中間所有路過的文件夾所屬組都必須是root,否則會發生和上面一樣的事情
5.重啓sshd
service sshd restart
本文轉自:http://iamwd.com/posts/sftp-home-only-under-centos6.html