Ubuntu如何搭建FTP服務(wù)器
安裝vsftpd
安裝前確保21端口沒(méi)有被占用,用命令查看:lsof -i:21
被占用用命令干掉進(jìn)程:kill -9 21
安裝
- 先更新apt軟件包列表:sudo apt-get update
- 安裝vsftpd:sudo apt-get install vsftpd
- 檢測(cè)是否安裝:vsftpd -version
- 設(shè)置FTP服務(wù)開(kāi)機(jī)自啟動(dòng)(應(yīng)該是默認(rèn)的,可不設(shè)):sudo systemctl enable vsftpd
- 啟動(dòng)FTP服務(wù):sudo sysemctl start vsftpd
查看vsftpd的安裝包相關(guān)信息:dpkg -s vsftpd
如相關(guān)的文件位置
/etc/ftpusers #禁止vsftpd的用戶列表文件 /etc/init.d/vsftpd #啟動(dòng)腳本 /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd #安全策略 /etc/vsftpd.conf #配置文件

網(wǎng)絡(luò)環(huán)境不支持IPv6時(shí),在/etc/vsftpd.conf配置文件中,將listen_ipv6=YES修改為listen_ipv6=NO。
網(wǎng)卡配文件:/etc/netplan
安裝完成后
vsftpd的配置文件
| 配置文件 | 說(shuō)明 |
|---|---|
| /etc/vsftpd/vsftpd.conf | 主配置文件 |
| /usr/sbin/vsftpd | vsftpd的主程序 |
| /etc/rc.d/init.d/vsftpd | 啟動(dòng)腳本 |
| /etc/pam.d/vsftpd | PAM認(rèn)證文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止訪問(wèn)的用戶來(lái)自/etc/vsftpd/ftpusers文件中的用戶) |
| /etc/ftpusers | 禁止使用vsftpd的用戶列表文件。記錄不允許訪問(wèn)FTP服務(wù)器的用戶名單,管理員可以把一些對(duì)系統(tǒng)安全有威脅的用戶賬號(hào)記錄在此文件中,以免用戶從FTP登錄后獲得大于上傳下載操作的權(quán)利,而對(duì)系統(tǒng)造成損壞。(注意:linux-4中此文件在/etc/目錄下) |
| /etc/vsftpd/user_list | 禁止或允許使用vsftpd的用戶列表文件。這個(gè)文件中指定的用戶缺省情況(即在/etc/vsftpd/vsftpd.conf中設(shè)置userlist_deny=YES)下也不能訪問(wèn)FTP服務(wù)器,在設(shè)置了userlist_deny=NO時(shí),僅允許user_list中指定的用戶訪問(wèn)FTP服務(wù)器。(注意:linux-4中此文件在/etc/目錄下) |
| /etc/vsftpd/chroot_list | 主要功能是可以將某些賬號(hào)的使用者 chroot 在制定目錄下; |
| /var/ftp | 匿名用戶主目錄;本地用戶主目錄為:/home/用戶主目錄,即登錄后進(jìn)入自己家目錄 |
vsftpd.conf參數(shù)
/etc/vsftpd/vsftpd.conf 本身就是一個(gè)挺詳細(xì)的配置文件,且使用『 man 5 vsftpd.conf 』則可以得到完整的參數(shù)說(shuō)明;
這里依舊先對(duì) vsftpd.conf 內(nèi)的常用參數(shù)作說(shuō)明。
- 與服務(wù)器環(huán)境較相關(guān)的設(shè)定值
| 參數(shù)設(shè)定值 | 默認(rèn)值 | 作用 |
|---|---|---|
| connect_from_port_20=YES|NO | YES | 指定FTP使用20端口進(jìn)行數(shù)據(jù)傳輸 |
| listen_port=21 | 21 | 設(shè)置FTP服務(wù)器建立連接所監(jiān)聽(tīng)的端口 |
| dirmessage_enable=YES|NO | YES | 如果啟動(dòng)選項(xiàng),第一次進(jìn)入目錄時(shí),若有.message這個(gè)檔案,則會(huì)出現(xiàn)此檔案的內(nèi)容,通常這個(gè)檔案會(huì)放置歡迎話語(yǔ),或是對(duì)該目錄的說(shuō)明; |
| message_file=.message | .message | 設(shè)置目錄消息文件,可將要顯示的信息寫(xiě)入該文件。默認(rèn)值為.message |
| listen=YES|NO | YES | 設(shè)置vsftpd服務(wù)器是否以standalone模式運(yùn)行 |
| pasv_enable=YES|NO | YES | 是否使用PASV工作模式(被動(dòng)莫模式) |
| use_localtime=YES|NO | NO | vsftpd使用本機(jī)時(shí)間作為vsftpd時(shí)間; 默認(rèn)為顯示格林威治時(shí)間(GMT); |
| write_enable=YES|NO | YES | 允許登陸用戶有寫(xiě)權(quán)限;屬于全局設(shè)置,默認(rèn)值為YES。 |
| connect_timeout=60 | 60 | PORT 方式下建立數(shù)據(jù)連接的超時(shí)時(shí)間,單位為秒 |
| accept_timeout=60 | 60 | 建立FTP連接的超時(shí)時(shí)間,單位為秒 |
| data_connection_timeout=120 | 300 | 建立FTP數(shù)據(jù)連接的超時(shí)時(shí)間,單位為秒 |
| idle_session_timeout=300 | 300 | 多長(zhǎng)時(shí)間不對(duì)FTP服務(wù)器進(jìn)行任何操作,則斷開(kāi)該FTP連接,單位為秒 |
| max_clients=0 | 0 | vsftpd允許的最大連接數(shù),默認(rèn)值為0,表示不受限制 |
| max_per_ip=0 | 0 | 設(shè)置每個(gè)IP允許與FTP服務(wù)器同時(shí)建立連接的數(shù)目,默認(rèn)值為0,表示不受限制 |
| pasv_min_port=0, pasv_max_port=0 | pasv_min_port:0 pasv_max_port:0 | 在PASV工作模式下,數(shù)據(jù)連接可以使用的端口范圍的最小端口,0 表示任意端口; 在PASV工作模式下,數(shù)據(jù)連接可以使用的端口范圍的最大端口,0 表示任意端口; |
| ftpd_banner=文字說(shuō)明 | NULL | 用來(lái)定義歡迎話語(yǔ)的字符串,而ftpd_banner 則是字符串的形式 |
| banner_file=/path/file | NULL | 用來(lái)定義歡迎話語(yǔ)的字符串,banner_file是檔案的形式 |
- 與實(shí)體用戶較相關(guān)的設(shè)定值
| 參數(shù)設(shè)定值 | 默認(rèn)值 | 作用 |
|---|---|---|
| guest_enable=YES|NO | NO | 啟用虛擬用戶 |
| guest_username=ftp | ftp | 用來(lái)映射虛擬用戶 |
| local_enable=YES|NO | YES | 控制是否允許本地用戶登入,YES 為允許本地用戶登入,NO為不允許 |
| local_max_rate=0 | 0 | 本地用戶使用的最大傳輸速度,單位為B/s,0 表示不限制速度 |
| chroot_local_user=YES|NO | NO | 用于指定用戶列表文件中的用戶是否允許切換到上級(jí)目錄 |
| chroot_list_enable=YES|NO | NO | 設(shè)置是否啟用chroot_list_file配置項(xiàng)指定的用戶列表文件 |
| chroot_list_file=/etc/vsftpd.chroot_list | 用于指定用戶列表文件, 該文件用于控制用戶可以切換到用戶家目錄的上級(jí)目錄 | |
| userlist_enable=YES|NO | NO | 是否啟用vsftpd.user_list文件 |
| userlist_deny=YES|NO | YES | 決定vsftpd.user_list文件中的用戶是否能夠訪問(wèn)FTP服務(wù)器; 設(shè)置為YES,則vsftpd.user_list文件中的用戶不允許訪問(wèn)FTP; 若設(shè)置為NO,則只有vsftpd.user_list文件中的用戶才能訪問(wèn)FTP; |
| userlist_file=/etc/vsftpd/user_list | NO | 控制用戶訪問(wèn)FTP的文件,里面寫(xiě)著用戶名稱(chēng)。一個(gè)用戶名稱(chēng)一行 |
與匿名用戶登錄相關(guān)的設(shè)定值
| 參數(shù)設(shè)定值 | 默認(rèn)值 | 作用 |
|---|---|---|
| anonymous_enable=YES|NO | YES | 控制是否允許匿名用戶登入,YES 為允許匿名登入,NO 為不允許 |
| anon_world_readable_only=YES|NO | YES | 如果設(shè)為YES,則允許匿名登入者下載可閱讀的文件 |
| anon_other_write_enable=YES|NO | NO | 允許匿名登入者擁有上傳或者建立目錄之外的權(quán)限;如,刪除或者重命名; anon_upload_enable=NO,則匿名用戶不能上傳文件,但可刪除或重命名已經(jīng)存在的文件; anon_mkdir_write_enable=NO,則匿名用戶不能上傳或者新建文件夾,但可以刪除或者重命名已經(jīng)存在的文件夾; |
| anon_mkdir_write_enable=YES|NO | NO | 允許匿名登入者有新增目錄的權(quán)限,只有在write_enable=YES時(shí),此項(xiàng)才有效; 匿名用戶必須要有對(duì)上層目錄的寫(xiě)入權(quán); |
| anon_upload_enable=YES|NO | NO | 允許匿名登入者有上傳文件(非目錄)的權(quán)限,只有在write_enable=YES時(shí),此項(xiàng)才有效; 匿名用戶必須要有對(duì)上層目錄的寫(xiě)入權(quán); |
| deny_email_enable=YES|NO | NO | 啟動(dòng)這項(xiàng)功能,則必須提供一個(gè)檔案/etc/vsftpd/banner_emails,內(nèi)容為email address; 若是使用匿名登入,則會(huì)要求輸入email address; 若輸入的email address 在此檔案內(nèi),則不允許進(jìn)入; |
| banned_email_file=/etc/vsftpd/banned_emails | /etc/vsftpd.banned_emails | 用來(lái)輸入email address,只有在deny_email_enable=YES時(shí),才會(huì)使用到此文件; 若是使用匿名登入,則會(huì)要求輸入email address,若輸入的email address 在此檔案內(nèi),則不允許進(jìn)入; |
| no_anon_password=YES|NO | NO | 啟動(dòng)這項(xiàng)功能,則使用匿名登入時(shí),不會(huì)詢(xún)問(wèn)密碼 |
| anon_max_rate=0 | 0 | 設(shè)置匿名登入者使用的最大傳輸速度,單位為B/s,0 表示不限制速度 |
| anon_umask=077 | 077 | 設(shè)置匿名登入者新增或上傳檔案時(shí)的umask 值 |
與 vsftpd 系統(tǒng)安全相關(guān)的設(shè)定值
| 參數(shù)設(shè)定值 | 默認(rèn)值 | 作用 |
|---|---|---|
| ascii_download_enable=YES|NO | NO | 設(shè)置是否啟用ASCII 模式下載數(shù)據(jù) |
| ascii_upload_enable=YES|NO | NO | 設(shè)置是否啟用ASCII 模式上傳數(shù)據(jù) |
| one_process_model=YES|NO | YES | |
| tcp_wrappers=YES|NO | YES | 設(shè)置vsftpd是否與tcp wrapper相結(jié)合來(lái)進(jìn)行主機(jī)的訪問(wèn)控制; 啟用,則vsftpd會(huì)檢查/etc/hosts.allow 中的配置,來(lái)決定請(qǐng)求連接的主機(jī),是否允許訪問(wèn)該FTP服務(wù)器; |
| xferlog_enable=YES|NO | YES | 是否啟用上傳/下載日志記錄; 啟用,則上傳與下載的信息將被完整紀(jì)錄在xferlog_file 所定義的文件中; |
| xferlog_file=/var/log/xferlog | /var/log/vsftpd.log | 設(shè)置日志文件名和路徑 |
| xferlog_std_format=YES|NO | NO | 啟用,則日志文件將會(huì)寫(xiě)成xferlog的標(biāo)準(zhǔn)格式,如同wu-ftpd 一般 |
| dual_log_enable=YES|NO, vsftpd_log_file=/var/log/vsftpd.log | /var/log/vsftpd.log | 編寫(xiě)vsftpd樣式日志文件的文件的名稱(chēng); 僅當(dāng) 設(shè)置了選項(xiàng)xferlog_enable并且未設(shè)置xferlog_std_format時(shí), 才會(huì)寫(xiě)入此日志; 或,如果已設(shè)置選項(xiàng)dual_log_enable,則會(huì)寫(xiě)入; 如果設(shè)置了 syslog_enable,則不會(huì)寫(xiě)入此文件,而是將輸出發(fā)送到系統(tǒng)日志; |
| nopriv_user=nobody | vsftpd在完全沒(méi)有特權(quán)的情況下使用的用戶名; 這應(yīng)該是專(zhuān)用用戶,而不是任何人 | |
| pam_service_name=vsftpd | /etc/pam.d/vsftpd | 設(shè)置PAM使用的名稱(chēng) |
綜合案例 - 本地用戶模式
創(chuàng)建FTP用戶
# 創(chuàng)建FTP用戶主目錄 sudo mkdir /home/uftp # 添加FTP用戶uftp,指定用戶主目錄和所用shell sudo useradd -d /home/uftp -s /bin/bash uftp # 設(shè)置uftp的密碼 sudo passwd uftp # 輸入密碼: # 再次輸入密碼: # 將uftp用戶的Shell修改為/sbin/nologin,它不允許用戶登錄系統(tǒng) sudo usermod -s /bin/nologin uftp
# 更改/home/uftp/目錄的擁有者為uftp。
sudo chown -R uftp:uftp /home/uftp/

配置vsftpd
編輯vsftpd.conf文件
命令如下:
# 在編輯之前先完成vsftpd.conf的備份 sudo cp vim /etc/vsftpd.conf /etc/vsftpd.conf.bak # 編輯vsftpd.conf文件 sudo vim /etc/vsftpd.conf
禁止匿名登錄FTP服務(wù)器,僅允許本地用戶登錄:
#禁止匿名登錄FTP服務(wù)器。 anonymous_enable=NO #允許本地用戶登錄FTP服務(wù)器。 local_enable=YES
在行首添加#注釋掉以下參數(shù),關(guān)閉監(jiān)聽(tīng)I(yíng)Pv6 sockets,開(kāi)啟IPv4(ipV4和ipV6不能同時(shí)被監(jiān)聽(tīng)):
# 啟用IPv4 listen=YES # 關(guān)閉監(jiān)聽(tīng)I(yíng)Pv6 sockets #listen_ipv6=YES
取消注釋write_enable設(shè)置以允許對(duì)文件系統(tǒng)進(jìn)行更改,例如上傳和刪除文件:
# 取消注釋write_enable write_enable=YES

開(kāi)啟FTP的被動(dòng)模式,設(shè)置數(shù)據(jù)傳輸?shù)亩丝诜秶海ㄌ砑釉?code>/etc/vsftpd.conf文件的最后)
# 開(kāi)啟被動(dòng)模式。 pasv_enable=YES #設(shè)置被動(dòng)模式下,建立數(shù)據(jù)傳輸可使用的端口范圍的最小值。 #建議您把端口范圍設(shè)置在一段比較高的范圍內(nèi),例如50000~50010,有助于提高訪問(wèn)FTP服務(wù)器的安全性。 pasv_min_port=50000 #設(shè)置被動(dòng)模式下,建立數(shù)據(jù)傳輸可使用的端口范圍的最大值。 pasv_max_port=50010
配置chroot
為防止FTP用戶訪問(wèn)其主目錄之外的任何文件:(添加在/etc/vsftpd.conf文件的最后)
# 全部用戶被限制在主目錄 chroot_local_user=YES # 啟用例外用戶名單 chroot_list_enable=YES # (default follows) # 指定例外用戶列表文件,列表中用戶不被鎖定在主目錄 chroot_list_file=/etc/vsftpd.chroot_list
默認(rèn)情況下,為了防止安全漏洞,啟用chroot后,如果用戶鎖定的目錄可寫(xiě),則vsftpd將拒絕上傳文件,在vsftpd配置文件中添加以下指令。
allow_writeable_chroot=YES
重啟FTP服務(wù)使配置生效
# 重啟FTP服務(wù) sudo systemctl restart vsftpd # 查詢(xún)FTP服務(wù)狀態(tài) sudo systemctl status vsftpd
配置防火墻
如果正在運(yùn)行UFW防火墻,則需要允許FTP通信。
要打開(kāi)端口21(FTP命令端口),端口20(FTP數(shù)據(jù)端口)和50000-50010(被動(dòng)端口范圍),請(qǐng)運(yùn)行以下命令
sudo ufw allow 20:21/tcp sudo ufw allow 50000:50010/tcp
如果遠(yuǎn)程管理ftp服務(wù)器,要讓他可以登錄:
usermod -s /bin/bash uftp
綜合案例 - 匿名用戶模式
1.主要是在配置文件中打開(kāi):
# 啟用匿名用戶模式 anonymous_enable=YES
2.備份本地用戶模式的配置文件
3.上傳匿名用戶模式配置文件:rz
在vsftpd.conf文件中添加匿名用戶相關(guān)配置:
# 監(jiān)聽(tīng)ipv4,啟用獨(dú)立模式 listen=YES # 啟用匿名用戶模式 anonymous_enable=YES # 允許寫(xiě)操作 write_enable=YES # 允許匿名用戶上傳文件 anon_upload_enable=YES # 允許匿名用戶創(chuàng)建目錄 anon_mkdir_write_enable=YES # 允許匿名用戶修改或刪除目錄 anon_other_write_enable=YES # 表示上傳下載文件的掩碼 anon_umask=077 # 設(shè)置用戶的家目錄,登錄之后自動(dòng)切換到各自用戶的家目錄 local_root=/srv/ftp/upload # 全部用戶被限制在主目錄 chroot_local_user=YES ? # 開(kāi)啟被動(dòng)模式。 pasv_enable=YES #設(shè)置被動(dòng)模式下,建立數(shù)據(jù)傳輸可使用的端口范圍的最小值。 #建議您把端口范圍設(shè)置在一段比較高的范圍內(nèi),例如50000~50010,有助于提高訪問(wèn)FTP服務(wù)器的安全性。 pasv_min_port=50000 #設(shè)置被動(dòng)模式下,建立數(shù)據(jù)傳輸可使用的端口范圍的最大值。 pasv_max_port=50010
在/srv/ftp目錄下創(chuàng)建upload目錄并完成賦權(quán)操作:
sudo mkdir /srv/ftp/upload sudo chown -R :ftp /srv/ftp/upload# 設(shè)置upload目錄的權(quán)限為775 sudo chmod 775 /srv/ftp/upload
重啟服務(wù)
# 重啟服務(wù) sudo service vsftpd restart # 查看服務(wù)狀態(tài) sudo service vsftpd status
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
windows?server?2016搭建FTP服務(wù)器圖文教程
這篇文章主要為大家詳細(xì)介紹了windows?server?2016搭建FTP服務(wù)器圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
Windows Server 2008 R2 ent下FTP服務(wù)搭建教程
這篇文章主要為大家詳細(xì)介紹了Windows Server 2008 R2 ent下FTP服務(wù)搭建教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
FTP 分類(lèi)賬戶設(shè)置經(jīng)驗(yàn)談
我校建立FTP是在2003年,經(jīng)過(guò)一段時(shí)間的摸索,F(xiàn)TP服務(wù)在我校已經(jīng)很成熟,不但方便了老師、服務(wù)了教學(xué),還極大地促進(jìn)了學(xué)校日常管理工作。2009-06-06
教你如何架設(shè)辦公室FTP服務(wù)器以Serv-U為例
Scrv-U是Windows平臺(tái)上最流行的FTP服務(wù)器軟件,下面就以現(xiàn)在局域網(wǎng)中最流行的FTP服務(wù)器軟件Serv-U為例,向您講解一下如何架設(shè)FTP服務(wù)器2013-12-12
Win2003 防火墻導(dǎo)致Serv-U FTP不能正常登錄的解決方法(FEAT 211-Extension suppor
FTP出問(wèn)題211-Extension supported 停止的解決方法Windows 2003,開(kāi)啟了系統(tǒng)防火墻,系統(tǒng)的安全性提高了很多。但是使用Serv-U架設(shè)的FTP服務(wù)器就會(huì)出現(xiàn)以下問(wèn)題,FTP客戶端在登錄成功后,發(fā)出FEAT命令后停下來(lái)了2011-12-12
Win10搭建FTP服務(wù)器實(shí)現(xiàn)局域網(wǎng)內(nèi)訪問(wèn)
這篇文章主要為大家詳細(xì)介紹了Win10搭建FTP服務(wù)器實(shí)現(xiàn)在局域網(wǎng)內(nèi)訪問(wèn),文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08

