Centos6下限制用戶只能sftp並出不了家目錄

一般託管在我服務器上的網站我都不提供任何管理方式,因爲這樣比較安全,同時也一直懶得去研究怎麼把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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章