本文對安裝部分不作描述 使用xinetd 管理vsftpd(必定要安裝xinetd) 像FTP這樣的訪問壓力比較小的服務,使用xinetd方式是比較合適的,首先應該告訴vsftpd,從如今開始能夠不用監聽端口了,打開配置文件/etc/vsftpd/vsftpd.conf,找到 "listen=YES" 將"listen=YES"改成"listen=NO",表示沒必要監聽端口, 接下來須要告訴xinetd和FTP服務器有關的信息。爲此,在/etc/xinetd.d 目錄下創建文件vsftpd,包含下面這些內容 service ftp { socket_type = stream wait = no user = root server = /usr/sbin/vsftpd #server字段填寫的是vsftpd服務器的啓動腳本所在地路徑。 log_on_success += DURATION disable = no } 如今從新啓動xinetd,使其配置生效 /etc/xinetd.d/xinetd restart 查看22端口的狀況,能夠看到xinetd已經接管了這個端口 netstat -tulnp | grep 22 或者 lsof -i:22 設置匿名用戶登陸 vsftp 服務器默認配置爲容許匿名用戶登陸,匿名用戶叫作anonymous 這個用戶在本地被映射爲ftp 打開 /etc/vsftpd/vsftpd.conf,應該能夠看到這些 # Allow anonymous FTP? (Beware - allowed by default if you comment this out). anonymous_enable=YES 另外一個比較有用的選項是anno_max_rate,用於限制匿名用戶的傳輸速率,在寬帶資源並不很是充裕的狀況下,能夠考慮「委屈」一下 anonymous,這個選項後面的數值單位是bytes/秒,若是設置爲0 將不受限制,例如將匿名用戶傳輸的速率限制爲20KB/s,那麼能夠這樣設置 naon_max_rate=20000 而後記得重啓FTP服務器,使其生效。 設置本地用戶登陸 在一個網店內部,FTP更多的狀況下被配置爲向受權用戶開放。爲此,用戶應該在服務器上擁有本身的賬號。vsftpd 把這樣的用戶稱之爲「本地用戶」 (local users),這和其餘FTP服務器所說的「真實用戶(real users)」 是一回事。 要開啓vsftpd 的這個功能,只要簡單的取消配置文件中local_enable=YES前的註釋符號#,若是在vsftpd.conf配置文件中找不到這一行,那就手動填上,當本地用戶登陸到FTP上,所處的目錄就是在服務器上的主目錄,沒有理由限制用戶在本身的目錄中建立、刪除或是修改數據,在配置文件中取消write_enable=YES前的註釋符號#能夠打開本地用戶的上傳權限(若沒有,則手動添加) # Uncomment this to allow local users to log in. local_enable=YES # # Uncomment this to enable any form of FTP write command. write_enable=YES 重啓生效 處於安全性的開考慮,有一些用戶是不能被容許經過FTP登陸的,例如root用戶。vsftpd將一些系統用戶整理在/etc/vsftpd/ftpusers 中,經過cat命令查看這個文件獲得以下信息 [root@mail ~]# cat /etc/vsftpd/ftpusers # Users that are not allowed to login via ftp root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody 這是一張黑名單,全部被列入其中的用戶都不能經過FTP登陸進來,固然,儘管FTP的本意是組織外部FTP用戶接觸本地的系統信息,但管理員也能夠簡單地把那些「看不順眼」的帳戶放進去,這樣就能夠實現限制某些用戶登陸FTP的功能了 限制用戶在本地目錄中 登陸到FTP的用戶能夠在服務器上處處瀏覽,查看普通的或是敏感的文件。這顯然是任何一個管理員都不肯見到的事情。幸運的是,vsftpd提供了chroot(change root改變根目錄)系統調用,使其餘目錄在使用者不可見,也不可訪問 要開啓這個選項,應該在/etc/vsftpd/vsftpd.conf找到chroot_root_user關鍵字,並修改爲下面這樣 chroot_local_user=YES 這樣當用戶試圖進入一個系統目錄是,vsftpd會提示失敗,並委婉的拒絕這一請求 ftp> cd /etc/ 550 Filed to change directory. 相似的,管理員還能夠指定下面這個選項,經過一個配置文件制定有哪些用戶應該受到限制 chroot_list_enable=YES 配置文件經過chroot_list_file選項指定,下面這條設置將配置完呢間指定爲/etc/vsftpd/vsftpd.chroot_list chroot_list_file=/etc/vsftpd/vsftpd.chroot_list /etc/vsftpd/vsftpd.chroot_list的格式應該和/etc/vsftpd/ftpusers 同樣,每行一個用戶 使用虛擬用戶、 虛擬用戶基於這樣一種可以實現方式:全部非匿名用戶的均被視爲訪客(guest),並被映射爲一個特定的用戶:用guest_username選項指定。管理員能夠爲每個用戶設置主目錄,並賦予相應的權限。虛擬用戶很是適合那些須要爲不一樣用戶提供FTP空間的站點。WEB 主機託管經常採用這樣的方法:用戶在本地編輯好網頁,而後經過FTP上傳到服務器上——首先要經過虛擬用戶身份驗證。 例如:一項任務,幷包括下面這些需求 禁用匿名用戶 爲用戶jcsmith和culva添加FTP虛擬用戶 將他們的口令分別設置爲jc123和cu123 將jcsmith的FTP主目錄設置爲/home/ftp/jcsmith,賦予它只讀權限 將culva的FTP主目錄設置爲/home/ftp/culva,賦予它上傳文件和創建目錄的權限 建立虛擬用戶的數據庫文件 建立數據庫文件須要DB這個工具,db工具經過讀取一個特定格式的文本文件在建立數據庫文件,這個用戶應該爲每一個用戶預留2行,第一行是用戶名,第二行是口令,在本例中,在主目錄下創建文件login_user(文件名寧肯以任取),包含下面這些內容 jcsmith jc123 culva cu123 運行db_load 命令,經過~/login_user(由-f選項指定)建立數據庫文件/etc/vsftpd_login.db(yum install db* -y) db_load -T -t hash -f /home/lewis/login_user /etc/vsftpd_login.db -T選項知道db_load命令經過文本文件建立數據庫,「-t hash」則指定了建立數據庫的方式:這裏使用了一種被稱做「哈希表(Hash table)」 的數據結構,最後修改這個數據庫問價你的權限,使其只對root用戶可見 chmod 600 /etc/vsftpd_login.db 配置PAM驗證 /etc/pam.d/vsftpd 是vsftpd默認使用的PAM驗證文件,編輯這個文件,加入下面這兩行 auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login account required /lib/security/pam_userdb.so db=/etc/vsftpd_login 在/etc/pam.d/vsftpd 中本來就有的一些配置會干擾這裏的設置。將其餘全部的行都註釋掉。 事實上,vsftpd使用的PAM文件是用配置文件(/etc/vsftpd/vsftpd.conf)中的pam_service_name=指定的。若是感到/etc/pam.d/vsftpd設置起來太麻煩。也可使用本身喜歡的名字在/etc/pam.d/下新建一個文件,而後把pam_service_name指向它。下面這條配置將vsftpd的PAM驗證文件設置爲/etc/pam.d/my_vsftpd pam_service_name=my_vsftpd 建立本地用戶映射 下面設置將登陸進來的jcsmith和culva映射爲一個指定的非特權用戶。編輯vsftpd的配置文件/etc/vsftpd/vsftpd.conf,修改(或者添加) guest_username=ftp 這樣jcsmith和culva 在登陸到FTP服務器後。就只有FTP用戶的權限了,下面在配置文件中/etc/vsftpd/vsftpd.conf全部可能影響到的行 anonymous_enable=NO ##不容許匿名用戶登陸 local_enable=YES ##容許本地用戶登陸 chroot_local_user=YES ##將用戶限制在主目錄中 pam_service_name=vsftpd ##指定PAM驗證文件(在/etc/pam.d/中) guest_enable=yes ##激活訪客(guest)身份 guest_username=ftp ##設置登陸用戶應該被映射成本地用戶 其中local_enable=YES 和 guest_enable=YES 用於開啓虛擬用戶登陸。前者告訴vsftpd容許本地用(在本例中是jcsmith和culva)登陸到服務器;後者用於將全部的登陸用戶視爲訪客(guest)。訪客最終被映射爲guest_username所指定的bending用戶(在本例中是FTP) 設置用戶目錄和權限 到目前爲止已經能夠用jcsmith和culva這兩個帳戶登陸FTP服務器了,但他們還只能擁有相同的目錄(/home/ftp)和權限。下面來完成最後的兩個任務 將jcsmith的FTP主目錄設置爲/home/ftp/jcsmith,賦予它只讀權限 將culva的FTP主目錄設置爲/home/ftp/culva,賦予它上傳文件和創建目錄的權限 首先爲這兩個用戶創建各自的主目錄。在本例中,虛擬用戶登陸後自動被映射爲本地的ftp用戶,因此應該把這些目錄的屬主設置爲ftp用戶 mkdir /home/ftp/culva chown ftp /home/ftp/culva/ mkdir /home/ftp/jcsmith chwon ftp /home/ftp/jcsmith/ 接下來爲兩個用戶設置不一樣的目錄和權限。vsftpd使用「user_config_dir=」這一選項來指定存放用戶配置的目錄。這裏首先創建 mkdir /etc/vsftpd_user_conf 而後在/etc/vsftpd/vsftpd.conf中將user_config_dir選項指向它。如今配置文件中項管的行看起來像下面這樣 anonymous_enable=NO ##不容許匿名用戶登陸 local_enable=YES ##容許本地用戶登陸 chroot_local_user=YES ##將用戶限制在主目錄中 pam_service_name=vsftpd ##指定PAM驗證文件(在/etc/pam.d/中) guest_enable=yes ##激活訪客(guest)身份 guest_username=ftp ##設置登陸用戶應該被映射成本地用戶 user_config_dir=/etc/vsftpd_user_conf ##存放用戶配置文件的目錄 最後在/etc/vsftpd_user_conf目錄降低了jcsmith和culva這兩個文本文件,分別存放和jcsmith和culva有關的配置。jcsmith的內容很是簡單,只有一行 local_root=/home/ftp/jcsmith ##這行指定了jcsmith在FTP服務器上的主目錄 culva的配置文件以下 write_enable=YES ##打開vsftpd的全局寫權限 anon_upload_enable=YES ##打開文件上傳權限 anon_mkdir_write_enable=YES ##打開創建目錄的權限 local_root=/home/ftp/culva 至此就完成了FTP虛擬用戶的設置,做爲工做的最後一步,重啓服務器老是必須的 service vsftpd restart