1. 程式人生 > >初識Linux(五)--vsftp的安裝及常見錯誤

初識Linux(五)--vsftp的安裝及常見錯誤

安裝:
可以到官方網站去下載
http://vsftpd.beasts.org
也可以用光碟安裝,RedHat 5的安盤裡自帶的,所以我選擇光碟安裝
(1)先把光碟掛載到系統上:
mount /dev/cdrom /mnt
這樣光碟的內容就被掛載到/mnt的裝置上,現在可以通過/mnt訪問光碟上的內容了
(2)在光碟上安裝vsftp,並且啟動vsftp
rpm  -ivh vsftpd*
(3)修改啟動方式,改為系統啟動時,自動啟動
chkconfig vsftpd on
也可以檢視啟動方式
chkconfig --list |grep vsftpd
只要在第2--5為on就能隨機啟動
(4)啟動ftp
service vsftpd start
(5)連線測試
vsftp預設安裝目錄是:/etc/vsftpd
預設有一個ftp目錄:var/ftp
vsftp預設是用允許匿名使用者【anonymous】登陸,允許下載,但是不允許上傳

如果連不上,可能是linux 防火牆的原因
停止防火牆:service iptables stop
開啟防火牆:service iptables start


1)         檔案結構
配置檔名
功能
/usr/sbin/vsftpd
vsftpd的主程式
/etc/rc.d/init.d/vsftpd
啟動指令碼
/etc/vsftpd/vsftpd.conf
主配置檔案
/etc/pam.d/vsftpd
PAM認證檔案
/etc/vsftpd.ftpusers
禁止使用vsftpd的使用者列表檔案
/etc/vsftpd.user_list
禁止或允許使用vsftpd的使用者列表檔案
/var/ftp
匿名使用者主目錄
/var/ftp/pub
匿名使用者的下載目錄
/etc/logrotate.d/vsftpd.log
vsftpd的日誌檔案
2)         配置檔案
/etc/vsftpd/vsftpd.conf
Ø 引數含義
引數
含義
anonymous_enable=YES        是否允許使用匿名賬戶
local_enable=YES        是否允許本地使用者登入
write_enable=YES        是否允許寫入
local_umask=022            本地umask值為022
#anon_upload_enable=YES    匿名使用者是否可上傳檔案
#anon_mkdir_write_enable=YES    匿名使用者是否可建立目錄
dirmessage_enable=YES        進入每個目錄顯示歡迎資訊,在每個目錄下建立.message檔案在裡面寫歡迎資訊
xferlog_enable=YES        上傳/下載檔案時記錄日誌
connect_from_port_20=YES    是否使用20埠傳輸資料(是否使用主動模式)
#chown_uploads=YES        修改匿名使用者上傳的檔案,檔案的擁有者
#chown_username=whoever
#xferlog_file=/var/log/xferlog    日誌檔案
xferlog_std_format=YES        使用標準檔案日誌
#idle_session_timeout=600    會話超時,客戶端連線到ftp但未操作
#data_connection_timeout=120    資料傳輸超時
#nopriv_user=ftpsecure        指定vsftpd服務的執行帳戶,不指定時使用ftp
#async_abor_enable=YES    是否允許客戶端使用sync等命令
#ascii_upload_enable=YES    是否允許上傳/下載二進位制檔案
#ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP service.    登入提示語
#deny_email_enable=YES    拒絕使用banned_email_file引數指定檔案中所列出的e-mail地址進行登入的匿名使用者。即,當匿名使用者使用banned_email_file檔案中所列出的e-mail進行登入時,被拒絕。
#banned_email_file=/etc/vsftpd/banned_emails
#chroot_list_enable=YES        鎖定登陸使用者在其主目錄,將使用者名稱一個一行寫在/etc/vsftpd/chroot_list檔案裡,使用此方法時必須chroot_local_user=YES
#chroot_list_file=/etc/vsftpd/chroot_list
#ls_recurse_enable=YES        是否允許使用ls -R等命令
listen=YES            開啟ipv4監聽
#listen_ipv6=YES        開啟ipv6監聽
pam_service_name=vsftpd    使用pam模組控制,vsftpd檔案在/etc/pam.d目錄下
userlist_enable=YES        與其他中userlist_deny=YES共同控制訪問使用者,詳見userlist_deny=YES引數含義
tcp_wrappers=YES        是否允許tcp_wrappers管理
其他
listen_address=ip address        指定偵聽IP
listen_port=port_value        指定偵聽埠,預設21
chroot_local_user=YES        限制所有的本地使用者在自家目錄
userlist_deny=YES        決定禁止還是隻允許由userlist_file指定檔案中的使用者登入FTP伺服器。此選項在userlist_enable選項啟動後才生效。YES為預設值,禁止檔案中的使用者登入,同時也不向這些使用者發出輸入密碼的提示。NO表示只允許在檔案中的使用者登入FTP伺服器
local_root=/home/ftp        所有使用者的根目錄,對匿名使用者無效
anon_max_rate=value        匿名使用者的最大傳輸速度,單位是Byts/s
local_max_rate=value        本地使用者的最大傳輸速度,單位是Byts/s
download_enable=YES        是否允許下載

 連線資訊
程式碼            含義                    程式碼            含義
110            重新啟動標記應答            120            服務在多久時間內ready
125            資料鏈路埠開啟,準備傳送        150            檔案狀態正常,開啟資料連線埠
200            命令執行成功                202            命令執行失敗
211            系統狀態或是系統求助響應        212            目錄的狀態
213            檔案的狀態                214            求助的資訊
215            名稱系統型別                220            新的聯機服務ready
221            服務的控制連線埠關閉,可以登出        225            資料連結開啟,但無傳輸動作
226            關閉資料連線埠,請求的檔案操作成功    227            進入passive mode
230            使用者登入                250            請求的檔案操作完成
257            顯示目前的路徑名稱            331            使用者名稱稱正確,需要密碼
332            登入時需要賬號資訊            350            請求的操作需要進一部的命令
421            無法提供服務,關閉控制連結        425            無法開啟資料鏈路
426            關閉聯機,終止傳輸            450            請求的操作未執行
451            命令終止:有本地的錯誤            452            未執行命令:磁碟空間不足
500            格式錯誤,無法識別命令            501            引數語法錯誤
502            命令執行失敗                503            命令順序錯誤
504            命令所接的引數不正確            530            未登入
532            儲存檔案需要賬戶登入            550            未執行請求的操作
551            請求的命令終止,型別未知        552            請求的檔案終止,儲存位溢位
553            未執行請求的的命令,名稱不正確


關於ftp使用者連線時出現500 OOPS: cannot change directory:/root報錯
1.   檢視SELinux設定
          # getsebool -a | grep ftp
發現 ftpd_disable_trans –> off   或者      ftp_home_dir–>off

2.   使用setsebool命令開啟
     # setsebool ftpd_disable_trans 1     或者    # setsebool ftp_home_dir 1

3.   檢視當前狀態是否是on的狀態
       # getsebool -a|grep ftp
      此時  ftpd_disable_trans –> on     或者    ftp_home_dir–>on
4. 最後重啟     # service vsftpd restart

另外     setsebool 使用-P引數,無需每次開機都輸入這個命令
# setsebool -P ftpd_disable_trans 1
或者
# setsebool -P ftp_home_dir 1

黑名單
/etc/ftpusers檔案中列出的使用者是禁止使用FTP登入的,如果要使這些使用者通過FTP登入,需要將其登出,即在使用者名稱前面新增#。

可登入,可下載,不可上傳    報錯  553 Could not create file.
setsebool -P allow_ftpd_full_access 1