由于采用明文傳輸使用者名和密碼,FTP協定是不安全的。在同一機房中隻要有一台伺服器被攻擊者控制,它就可能擷取到其它伺服器上的FTP密碼,進而控制其它的伺服器。
下面,我就從賬戶設定、SSH設定、權限設定這三個方面來講講如何使用SFTP完全替代FTP。本教程基于CentOS5.4。
本文要實作以下功能:
SFTP要管理3個目錄:
homepage
blog
pay
權限配置如下:
賬戶www,可以管理所有的3個目錄;
賬戶blog,隻能管理blog目錄;
賬戶pay,隻能管理pay目錄。
web伺服器需求:
賬戶blog管理的目錄是一個部落格網站,使用apache伺服器。apache伺服器的啟動賬戶是apache賬戶,組為apache組。
賬戶blog屬于apache組,它上傳的檔案能夠被apache伺服器删除。同樣的,它也能删除在部落格中上傳的檔案(就是屬于apache賬戶的檔案)。
SFTP的賬戶直接使用Linux作業系統賬戶,我們可以用<code>useradd</code>指令來建立賬戶。
首先建立3個要管理的目錄:
建立sftp組和www、blog、pay賬号,這3個賬号都屬于sftp組:
至此賬戶設定完畢。
首先要更新OpenSSH的版本。隻有4.8p1及以上版本才支援Chroot。
CentOS 5.4的源中的最新版本是4.3,是以需要更新OpenSSH。
指定新的源:
執行更新:
更新成功後,設定sshd_config。通過Chroot限制使用者的根目錄。
完成這一步之後,嘗試登入SFTP:
要實作Chroot功能,目錄權限的設定非常重要。否則無法登入,給出的錯誤提示也讓人摸不着頭腦,無從查起。我在這上面浪費了很多時間。
目錄權限設定上要遵循2點:
ChrootDirectory設定的目錄權限及其所有的上級檔案夾權限,屬主和屬組必須是root;
ChrootDirectory設定的目錄權限及其所有的上級檔案夾權限,隻有屬主能擁有寫權限,也就是說權限最大設定隻能是755。
如果不能遵循以上2點,即使是該目錄僅屬于某個使用者,也可能會影響到所有的SFTP使用者。
由于上面設定了目錄的權限是755,是以所有非root使用者都無法在目錄中寫入檔案。我們需要在ChrootDirectory指定的目錄下建立子目錄,重新設定屬主和權限。以homepage目錄為例:
要實作web伺服器與blog賬戶互删檔案的權限需求,需要設定umask,讓預設建立的檔案和目錄權限為775即可。将下面的内容寫入.bashrc中:
至此,我們已經實作了所有需要的功能。
本文轉自yzy121403725 51CTO部落格,原文連結:http://blog.51cto.com/lookingdream/1769233,如需轉載請自行聯系原作者