ftp(文件傳輸協議)服務默認使用TCP協議的20、21端口與客戶端進行通訊。20端口用於創建數據鏈接,並傳輸文件數據;21端口用於創建控制鏈接,並傳輸ftp控制指令。linux
ftp數據鏈接分爲 主動模式和被動模式;數據庫
客戶端與服務器創建數據鏈接之後,就能夠根據從控制鏈接中發送的ftp命令進行上傳和下載文件。傳輸過程當中是否進行字符轉換,分爲文本模式和二進制模式。使用二進制模式筆文本模式更有效率。大多數ftp客戶端能夠根據文件類型自動選擇文件傳輸模式,無需用戶手工指定。vim
ftp用戶類型分爲: 1.匿名用戶; 2.本地用戶; 3.虛擬用戶。
接下來咱們就在linux環境中搭建ftp服務緩存
[root@localhost ~]# ifconfig ens33 //肯定本機IP地址(建議靜態IP地址) [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# setenforce 0 //關閉防火牆、SELinux
[root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# rm -rf * [root@localhost yum.repos.d]# vim a.repo //本身編寫一個yum配置文件,必須以「repo」結尾,內容以下: [a] //yum倉庫ID baseurl=file:///mnt //使用本地系統鏡像做爲YUM源 gpgcheck=0 //不查公鑰 [root@localhost ~]# yum clean all //清楚YUM緩存(避免出錯) [root@localhost ~]# mount /dev/cdrom /mnt //掛載系統盤 [root@localhost ~]# yum -y install vsftpd //安裝FTP服務
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf //FTP服務的配置文件
FTP服務配置文件一些經常使用的配置選項參數: 匿名用戶經常使用參數: anonymous_enable=YES:是否容許匿名訪問 anon_umask=022:設置匿名用戶所上傳文件的默認權限掩碼值 anon_root=/vat/ftp:設置匿名用戶的宿主目錄(默認爲/var/ftp) anon_upload_enable=YES:是否容許匿名用戶上傳文件 anon_mkdir_write_enable=YES:是否容許匿名用戶有建立目錄的寫入權限 anon_other_write_enable=YES:是否容許匿名用戶有其餘寫入的權限(例如更名、修改、刪除等) 本地用戶經常使用參數: local_enable=YES:是否容許本地系統用戶訪問 local_umask=022:設置本地用戶所上傳文件的默認權限掩碼值 local_root=/var/ftp:設置本地用戶的ftp根目錄(默認爲用戶的宿主目錄) chroot_local_user=YES:是否將ftp本地用戶禁錮在宿主目錄中 local_max_rate=0:限制本地用戶的最大傳輸速率(0爲無限制),單位是字節/秒(B/s) allow_writeable_chroot=YES:容許被限制用戶的主目錄具備寫權限 全局配置經常使用參數: listen=YES:是否以獨立的運行方式監聽服務 listen_address=0.0.0.0:設置監聽ftp服務的IP地址 listen_port=21:設置監聽ftp服務的端口號 write_enable=YES: 啓用任何形式的寫入權限(好比上傳、刪除文件等)都須要開啓此項 download_enable=YES:是否容許下載文件(好比創建僅限於瀏覽、上傳的ftp服務器時可將其設置 爲"NO") xferlog_enable=YES:啓用xferlog日誌,默認記錄到/var/log/xferlog xferlog_std_format=YES: 啓用標準的xferlog日誌格式 connect_from_port_20=YES:容許服務器主動模式 pasv_enable=NO:禁止被動模式鏈接;默認容許被動模式鏈接 pam_service_name=vsftpd:設置用於用戶認證的PAM文件位置(/etc/pam.d/目錄中對應的文件名) userlist_enable=YES:是否啓用user_list用戶列表文件 max_clients=0:最多容許多少客戶端同時鏈接(0爲無限制) max_per_ip=0 對來自同一個IP地址的客戶端,最多容許多少個併發鏈接(0爲無限制) tcp_wrappers=YES:是否啓用TCP_Wrappers主機訪問控制 虛擬用戶經常使用參數: guest_username=test:指定映射的系統用戶名稱; guest_enable=YES:是否啓用虛擬用戶; allow_writeable_chroot=容許被限制用戶的主目錄具備寫權限(此項必須寫入,不然可能會報錯) anon_world_readable_only=NO:容許用戶下載目錄內容 anon_other_write_enable=YES:容許匿名用戶有其餘寫入權限,如重命名、覆蓋及刪除文件等; user_config_dir=/etc/vsftpd/vusers_dir:指定虛擬用戶獨立的配置文件目錄;
經常使用的配置差很少就這些(配置文件嚴格區分大小寫)服務器
[root@localhost ~]# chown ftp /var/ftp/pub //匿名用戶默認登陸的文件夾是/var/ftp/pub目錄、匿名用戶對應系統用戶ftp;因此將ftp系統用戶做用目錄的屬組
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf ……………… //省略部份內容,填寫如下內容 anon_upload_enable=YES //容許匿名用戶上傳文件 anon_mkdir_write_enable=YES anon_other_write_enable=YES //容許匿名用戶具備寫入權限 [root@localhost ~]# systemctl restart vsftpd //重啓FTP服務
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf ……………… //省略部份內容,添加如下內容 allow_writeable_chroot=YES // 容許被限制用戶的主目錄具備寫權限 chroot_local_user=YES //將用戶禁錮在宿主目錄
[root@localhost ~]# useradd xiaozhang [root@localhost ~]# passwd xiaozhang [root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# vim /etc/vsftpd/123.txt //添加如下內容 benet 123456 benet1 123456 //奇數行爲用戶名、偶數行爲密碼(一行一個,不容許有空格)
[root@localhost ~]# cd /etc/vsftpd/ [root@localhost vsftpd]# db_load -T -t hash -f 123.txt vusers.db //使用db_load工具建立用戶名、密碼的數據庫文件
[root@localhost ~]# vim /etc/pam.d/vsftpd.vu //必須建立一個以「vu」結尾的文本文件,填寫如下內容: auth required pam_userdb.so db=/etc/vsftpd/vusers account required pam_userdb.so db=/etc/vsftpd/vusers //指定用戶類型、用戶屬性和驗證使用的模塊、db數據庫文件
[root@localhost ~]# useradd -d /var/ftproot -s /sbin/nologin xiaoli [root@localhost ~]# chmod 755 /var/ftproot/ //修改用戶宿主目錄的權限(這就是虛擬用戶登陸訪問的目錄)
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf ……………… //省略部份內容,修改、添加如下內容 pam_service_name=vsftpd.vu //設置用於用戶認證的PAM文件位置 userlist_enable=YES //啓用user_list用戶列表文件 tcp_wrappers=YES //啓用TCP_Wrappers主機訪問控制 guest_username=xiaoli //來賓用戶對應的系統用戶 guest_enable=YES //啓動來賓用戶 allow_writeable_chroot=YES //禁錮在宿主目錄 user_config_dir=/etc/vsftpd/vusers_dir //指定虛擬用戶獨立的配置文件目錄
[root@localhost ~]# mkdir /etc/vsftpd/vusers_dir [root@localhost ~]# vim /etc/vsftpd/vusers_dir/benet anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES [root@localhost ~]# vim /etc/vsftpd/vusers_dir/benet1 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES //須要手動建立目錄及配置文件 [root@localhost ~]# systemctl restart vsftpd //重啓FTP服務
自行測試!!!併發
實驗完成!!!app