FTP:file transfer protocol,監聽於tcp21號端口;工做與應用層web
ftp擁有兩個tcp鏈接
命令鏈接:一直打開,監聽tcp21號端口
數據鏈接:按需打開,主動模式監聽於tcp20號端口,被動模式端口隨機
數據傳輸模式:基於源文件的格式傳輸
shell
vsftpd
配置文件目錄:/etc/vsftpd
服務腳本:/etc/init.d/vsftpd
主程序:/usr/sbin/vsftpd
文件目錄:/var/ftp
ftp用戶:
匿名用戶
系統用戶
虛擬用戶vim
/etc/pam.d/vsftpd:經過PAM模塊實現的身份認證安全
[root@localhost ~]# cat /etc/pam.d/vsftpd #%PAM-1.0 session optional pam_keyinit.so force revoke auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include password-auth account include password-auth session required pam_loginuid.so session include password-auth
#deny file=/etc/vsftpd/ftpusers 就是限制哪些用戶不容許使用vsftpd,都在這個文件裏
/etc/vsftpd/ftpusers:如上,這些用戶不容許用ftp,默認爲系統用戶bash
[root@localhost ~]# cat /etc/vsftpd/ftpusers # Users that are not allowed to login via ftp root bin .... nobody
/etc/vsftpd/user_list:一樣是限制哪些用戶能夠使用ftp,須要配置主文件中的userlist_deny=[yes|no]服務器
[root@localhost ~]# cat /etc/vsftpd/user_list root bin .... nobody
/etc/vsftpd/chroot_list:這個文件須要手動創建,意思是在這個文件內的用戶能夠瀏覽其餘用戶家目錄下的內容session
[root@localhost ~]# cat /etc/vsftpd/chroot_list root
.... admin
/etc/vsftpd/vsftpd.conf:主配置文件app
[root@localhost pub]# cat /etc/vsftpd/vsftpd.conf #與服務器環境相關的設置 connect_from_port_20=YES #數據鏈接的端口號 listen_port=21 #命令鏈接的端口號 dirmessage_enable=YES #進入某個目錄時是否顯示歡迎消息,消息文件爲每一個目錄下.message的文件 message_file=.message #上面一個YES才設置 listen=YES #能夠用自帶的腳本啓動 pasv_enable=YES #支持數據鏈接的被動鏈接模式,必定要YES use_localtime=YES #使用本地時間 write_enable=YES #開啓上傳權限 connect_timeout=60 #數據鏈接的主動模式下,發出消息60秒後無答覆,主動斷開 accept_timeout=60 #數據鏈接的被動模式下,發出消息60秒後無答覆,主動斷開 data_connection_timeout=300 #鏈接創建完成後,因爲線路問題,300秒內數據沒法完成傳輸,斷開 idle_session_timeout=600 #用戶無操做超時時間 max_clients=0 #客戶端最大的鏈接數,0不限制 max_per_ip=0 #單個ip的最大鏈接數 pasv_min_port=0 #被動模式的端口,能夠有個區間,主要是爲了防火牆放行 pasv_max_port=0 #0表明不限制 ftpd_banner=Welcome to blah FTP service. #歡迎信息 banner_file=文件路徑 #歡迎信息爲文件中的內容 #與本地用戶相關的設置,就是/etc/passwd裏的用戶 guest_enable=YES #開放這個選項,任何本地帳號都會被假設稱guest guest_username=ftp #指定訪客的身份 local_enable=YES #啓用本地用戶 local_max_rate=0 #本地用戶限速byte/second,0不限速 *chroot_local_user=YES #是否限制本地用戶在本身家目錄下 *chroot_list_enable=YES #是否將列表內用戶限制在家目錄,例外用戶 *chroot_list_file=/etc/vsftpd/chroot_list #列表位置 #這兩個選項是互補的,list_enable的值表明是否對local_user的範圍取反。 #local_user=YES list=YES表明限制本地,不限制列表 #local_user=NO list-YES表明不限制本地,限制列表 #local=YES list=NO表明都限制 #lical=NO list=NO表明都不限制 userlist_enable=YES #是否限制列表內用戶登錄 userlist_deny=YES #對此列表是拒絕仍是容許 #這個deny,假如爲YES表明這個文件內的用戶都被限制,假如爲NO表明只有這個文件內的用戶不被限制 userlist_file=/etc/vsftpd/user_list #列表位置 local_umask=022 #本地用戶建立完文件的umask #匿名用戶相關設置 anonymous_enable=YES #啓用匿名用戶 anon_world_readable_only=YES #僅語序匿名用戶具備下載可讀文件的權限,默認YES anon_other_write_enable=NO #是否容許匿名用戶刪除文件 anon_mkdir_write_enable=YES 是否容許匿名用戶建立目錄 anon_upload_enable=NO #是否容許匿名用戶上傳文件,容許的話上面是YES deny_email_enable=YES #阻擋特殊的郵件地址 banned_email_file=/etc/vsftpd/banned_emails #拒絕郵件地址文件,一行一個郵件地址 no_anon_password=NO #是否不檢查匿名用戶密碼,不檢查的話上面過濾郵件就沒用了 anon_max_rate=0 #匿名用戶限速,bytes/秒 anon_umask=077 #匿名用戶的umask #系統安全設置 ascii_upload_enable=YES #使用ASCII格式上傳文件 ascii_download_enable=YES #使用ASCII格式下載文件 one_process_model=NO #每創建一個鏈接都使用一個進程,耗資源 tcp_wrappers=YES #支持tcp_wrappers xferlog_enable=YES #記錄用戶的操做記錄,記錄到下面的文件 xferlog_file=/var/log/vsftpd.log #日誌文件記錄於哪裏 xferlog_std_format=YES #日誌文件的格式 chown_uploads=YES #用戶上傳完文件,全部者更改 chown_username=用戶名 #更改成誰
/etc/vsftpd/user_list和/etc/vsftpd/ftpusers並不衝突,ftpusers是pam模塊決定的不能登陸的用戶,user_list能夠決定哪些用戶能夠登陸,靠的就是主配置文件中的userlist_deny這個選項,若是是YES就是拒絕表裏的用戶NO就是容許表裏的用戶tcp
新建個ftp服務器,能夠使用匿名用戶登陸,可是隻能下載文件,一個本地管理員登陸時不被限制,其餘本地帳號被限制在本身家目錄測試
[root@localhost vsftpd]# vim vsftpd.conf anonymous_enable=YES #啓用匿名 anon_world_readable_only=YES #匿名只能下載可讀的文件 local_enable=YES #啓用本地 write_enable=YES #本地用戶能夠上傳 xferlog_enable=YES #能夠用軟件分析的log xferlog_file=/var/log/vsftpd.log #存放路徑 dual_log_enable=YES #同時生成ftp本身的log vsftpd_log_file=/var/log/vsftpd.log #存放路徑 connect_from_port_20=YES #端口 xferlog_std_format=YES #xferlog格式 pam_service_name=vsftpd #pam tcp_wrappers=YES #tcpwapper allow_writeable_chroot=YES #鎖定家目錄以後在登陸老是出錯,加上這個 chroot_local_user=YES #鎖定家目錄 chroot_list_enable=YES #不鎖定家目錄的名單 chroot_list_file=/etc/vsftpd/chroot_list #名單位置 userlist_enable=YES #用戶列表 userlist_deny=NO #只有這個列表的用戶才能夠登陸 userlist_file=/etc/vsftpd/user_list #列表位置
user_list列表
[root@localhost vsftpd]# cat user_list anonymous #假如這個列表對應的選項是NO,匿名用戶就沒法登陸了,因此把匿名用戶加在這裏面 admin #下面這兩個用戶均可以登陸 aaa
chroot_list列表
[root@localhost vsftpd]# cat chroot_list aaa #根據上面的選項,這個文件表明哪一個用戶不限制在家目錄
經測試,其餘人都不能夠登陸,匿名用戶和admin用戶都在限制在家目錄,匿名用戶沒法上傳文件。