在RHEL4配置ftp服務詳細的五個步驟
Ftp在每個操作系統(tǒng)上都是必不可少的,在RHEL4上也不例外,RHEL4配置ftp服務是一個繁瑣的過程,下面把這個過程拆分成五大步驟進行講解:
一、RHEL4配置ftp服務的基本配置
RHEL4自帶的ftp服務是vsftp,即very secure ftp。ftp配置文件是/etc/vsftpd/vsftpd.conf
chkconfig --list vsftpd可以看到 說明在run level 5時,ftp服務是隨著系統(tǒng)自動啟動的
service vsftpd start/stop/restart可以啟動、停止、重啟ftp服務。
配置文件中做如下設置
anonymous_enable=YES 允許匿名用戶登錄
anon_upload_enable=YES 允許匿名用戶上載文件,此項有效還有一個前提,即write_enable=YES
anon_mkdir_write_enable=YES 允許匿名用戶創(chuàng)建新目錄
anon_root=/ftpbase/public 指定匿名用戶的根目錄
anon_other_write_enable=YES 允許匿名用戶刪除文件
local_enable=YES 允許本地用戶登錄
chroot_local_user=YES 本地用戶限制在家目錄
local_umask=002 本地用戶新增文件的umask值,取002是因為下面要增加的普通用戶都屬于ftp這個組,為了使這些用戶可以完全控制ftpbase目錄下的文件
anon_umask=002 匿名用戶新增文件的umask值
在系統(tǒng)中添加用戶
useradd -g ftp -d /ftpbase -c "Ftp user 1" ftpuser1
useradd -g ftp -d /ftpbase -c "Ftp user 2" ftpuser2
設置ftpuser1和ftpuser2的密碼
passwd ftpuser1
passwd ftpuser1
建立目錄
mkdir /ftpbase
mkdir /ftpbase/public
chown -R ftp:ftp /ftpbase
chown -R ftp:ftp /ftpbase/public
service vsftpd restart重啟服務,之后就可以連接RHEL4上的ftp服務器了
二、RHEL4配置ftp服務的權限相關的若干問題
有了上面的設置之后其實還有權限相關的問題未解決
這里需要說一下的是對于目錄而言,x權限表示的是可進入目錄。
默認情況下匿名用戶登錄ftp后使用的系統(tǒng)用戶名是ftp。public目錄的權限設為755之后,匿名用戶登錄總是失敗,報“500 OOPS: vsftpd: refusing to run with writable anonymous root”,此信息指出匿名用戶對根目錄不能有寫權限,也就是只要public目錄有u+w的權限,那么就都會報這個錯,因此public目錄的u權限中不可以有w。經檢驗使匿名用戶可以看到此目錄下的文件,并可下載,但不可刪除的最小權限是504。有點奇怪的是為什么不是500,即other用戶為什么也一定要有r權限才能確保匿名用戶可以看到public下的內容。這里public目錄的權限設成575,以便于屬于ftp組的普通用戶可以控制此目錄。
public下再建子目錄upload,upload目錄權限設為775,使普通用戶和匿名用戶都有upload下的所有文件控制權限。
三、RHEL4配置ftp服務的PASV模式和防火墻
在dos控制臺下使用windows自帶的ftp命令連接RHEL4上的FTP沒有問題,使用CuteFtp連接則連不上,后發(fā)現(xiàn)CuteFtp客戶端在全局設置里使用了PASV模式來連接ftp服務器,改為PORT模式就可以正常連上了。
為了使用PASV模式,在/etc/vsftpd/vsftpd.conf中新增pasv_enable=YES一行并重啟vsftpd,但是客戶端使用PASV模式依然連不上服務器。發(fā)現(xiàn)是RHEL4的防火墻問題,PASV模式不僅需要客戶端去連接服務器的控制端口(默認是21),還需要通過服務器返回的數(shù)據端口號去連接數(shù)據端口,這樣RHEL4的防火墻必須允許客戶端訪問服務器提供的數(shù)據端口。
在/etc/vsftpd/vsftpd.conf中新增兩行,把數(shù)據連接端口限制在55000~56000
pasv_min_port=55000
pasv_max_port=56000
在/etc/sysconfig/iptables中新增一行,允許客戶端對55000~56000端口的訪問
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 55000:56000 -j ACCEP
重啟iptables和vsftpd服務即可
另外,windows自帶的ftp工具是不支持PASV模式的,連接時就沒有PASV選項可選。連接上之后使用ls等命令之后會有提示“200 PORT command successful. Consider using PASV.”,使用quote pasv命令服務器會返回“227 Entering Passive Mode (144,24,17,4,220,74)”的提示,但是事實上客戶端并有把連接改為PASV模式,使用ls命令后還是會返回提示的。
四、RHEL4配置ftp服務的禁止為ftp而專設的用戶從遠程登錄操作系統(tǒng)
新增的用戶ftpuser1和ftpuser2是專為ftp登錄而設的,需要禁止遠程使用telnet和ssh等登錄,在/etc/passwd文件中把
ftpuser1:x:501:50:FTP User 1 for test:/ftpbase:/bin/bash
ftpuser2:x:502:50:FTP User 2 for test:/ftpbase:/bin/bash
修改為
ftpuser1:x:501:50:FTP User 1 for test:/ftpbase:/sbin/nologin
ftpuser2:x:502:50:FTP User 2 for test:/ftpbase:/sbin/nologin
五、RHEL4配置ftp服務的中文顯示問題
ftp正常使用后通過客戶端上傳了幾個中文文件,但是使用telnet工具或ssh工具登錄后中文字符顯示為亂碼,很多顯示為問號“?”,本地登錄后顯示中文是沒有問題的。
RHEL4默認的編碼方式是UTF-8,安裝時使用中文為默認語言則/etc/sysconfig/i18n中的第一行為LANG="zh_CN.UTF-8",把這一行改為LANG="zh_CN"后重啟機器之后即可。必須注意的是客戶端連接工具中的相關設置也必須更改,以SecureCRT為例,Session Option->Terminal->Appearance->Character必須設為default或者none,如果是UTF-8的話,那么還是會顯示亂碼。也有改成LANG="zh_CN.18030"的做法。
已上是RHEL4配置ftp服務的五大步驟,筆者對其進行了詳細的講解,對于在RHEL4配置ftp服務中所遇到的問題幾乎都已解決,希望可以幫助大家完成RHEL4配置ftp服務。
【編輯推薦】