Ubuntu如何搭建FTP服務器
安裝vsftpd
安裝前確保21端口沒有被占用,用命令查看:lsof -i:21
被占用用命令干掉進程:kill -9 21
安裝
- 先更新apt軟件包列表:sudo apt-get update
- 安裝vsftpd:sudo apt-get install vsftpd
- 檢測是否安裝:vsftpd -version
- 設(shè)置FTP服務開機自啟動(應該是默認的,可不設(shè)):sudo systemctl enable vsftpd
- 啟動FTP服務:sudo sysemctl start vsftpd
查看vsftpd的安裝包相關(guān)信息:dpkg -s vsftpd
如相關(guān)的文件位置
/etc/ftpusers #禁止vsftpd的用戶列表文件 /etc/init.d/vsftpd #啟動腳本 /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd #安全策略 /etc/vsftpd.conf #配置文件
網(wǎng)絡(luò)環(huán)境不支持IPv6時,在/etc/vsftpd.conf
配置文件中,將listen_ipv6=YES
修改為listen_ipv6=NO
。
網(wǎng)卡配文件:/etc/netplan
安裝完成后
vsftpd的配置文件
配置文件 | 說明 |
---|---|
/etc/vsftpd/vsftpd.conf | 主配置文件 |
/usr/sbin/vsftpd | vsftpd的主程序 |
/etc/rc.d/init.d/vsftpd | 啟動腳本 |
/etc/pam.d/vsftpd | PAM認證文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止訪問的用戶來自/etc/vsftpd/ftpusers文件中的用戶) |
/etc/ftpusers | 禁止使用vsftpd的用戶列表文件。記錄不允許訪問FTP服務器的用戶名單,管理員可以把一些對系統(tǒng)安全有威脅的用戶賬號記錄在此文件中,以免用戶從FTP登錄后獲得大于上傳下載操作的權(quán)利,而對系統(tǒng)造成損壞。(注意:linux-4中此文件在/etc/目錄下) |
/etc/vsftpd/user_list | 禁止或允許使用vsftpd的用戶列表文件。這個文件中指定的用戶缺省情況(即在/etc/vsftpd/vsftpd.conf中設(shè)置userlist_deny=YES)下也不能訪問FTP服務器,在設(shè)置了userlist_deny=NO時,僅允許user_list中指定的用戶訪問FTP服務器。(注意:linux-4中此文件在/etc/目錄下) |
/etc/vsftpd/chroot_list | 主要功能是可以將某些賬號的使用者 chroot 在制定目錄下; |
/var/ftp | 匿名用戶主目錄;本地用戶主目錄為:/home/用戶主目錄,即登錄后進入自己家目錄 |
vsftpd.conf參數(shù)
/etc/vsftpd/vsftpd.conf
本身就是一個挺詳細的配置文件,且使用『 man 5 vsftpd.conf
』則可以得到完整的參數(shù)說明;
這里依舊先對 vsftpd.conf
內(nèi)的常用參數(shù)作說明。
- 與服務器環(huán)境較相關(guān)的設(shè)定值
參數(shù)設(shè)定值 | 默認值 | 作用 |
---|---|---|
connect_from_port_20=YES|NO | YES | 指定FTP使用20端口進行數(shù)據(jù)傳輸 |
listen_port=21 | 21 | 設(shè)置FTP服務器建立連接所監(jiān)聽的端口 |
dirmessage_enable=YES|NO | YES | 如果啟動選項,第一次進入目錄時,若有.message這個檔案,則會出現(xiàn)此檔案的內(nèi)容,通常這個檔案會放置歡迎話語,或是對該目錄的說明; |
message_file=.message | .message | 設(shè)置目錄消息文件,可將要顯示的信息寫入該文件。默認值為.message |
listen=YES|NO | YES | 設(shè)置vsftpd服務器是否以standalone模式運行 |
pasv_enable=YES|NO | YES | 是否使用PASV工作模式(被動莫模式) |
use_localtime=YES|NO | NO | vsftpd使用本機時間作為vsftpd時間; 默認為顯示格林威治時間(GMT); |
write_enable=YES|NO | YES | 允許登陸用戶有寫權(quán)限;屬于全局設(shè)置,默認值為YES。 |
connect_timeout=60 | 60 | PORT 方式下建立數(shù)據(jù)連接的超時時間,單位為秒 |
accept_timeout=60 | 60 | 建立FTP連接的超時時間,單位為秒 |
data_connection_timeout=120 | 300 | 建立FTP數(shù)據(jù)連接的超時時間,單位為秒 |
idle_session_timeout=300 | 300 | 多長時間不對FTP服務器進行任何操作,則斷開該FTP連接,單位為秒 |
max_clients=0 | 0 | vsftpd允許的最大連接數(shù),默認值為0,表示不受限制 |
max_per_ip=0 | 0 | 設(shè)置每個IP允許與FTP服務器同時建立連接的數(shù)目,默認值為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=文字說明 | NULL | 用來定義歡迎話語的字符串,而ftpd_banner 則是字符串的形式 |
banner_file=/path/file | NULL | 用來定義歡迎話語的字符串,banner_file是檔案的形式 |
- 與實體用戶較相關(guān)的設(shè)定值
參數(shù)設(shè)定值 | 默認值 | 作用 |
---|---|---|
guest_enable=YES|NO | NO | 啟用虛擬用戶 |
guest_username=ftp | ftp | 用來映射虛擬用戶 |
local_enable=YES|NO | YES | 控制是否允許本地用戶登入,YES 為允許本地用戶登入,NO為不允許 |
local_max_rate=0 | 0 | 本地用戶使用的最大傳輸速度,單位為B/s,0 表示不限制速度 |
chroot_local_user=YES|NO | NO | 用于指定用戶列表文件中的用戶是否允許切換到上級目錄 |
chroot_list_enable=YES|NO | NO | 設(shè)置是否啟用chroot_list_file配置項指定的用戶列表文件 |
chroot_list_file=/etc/vsftpd.chroot_list | 用于指定用戶列表文件, 該文件用于控制用戶可以切換到用戶家目錄的上級目錄 | |
userlist_enable=YES|NO | NO | 是否啟用vsftpd.user_list文件 |
userlist_deny=YES|NO | YES | 決定vsftpd.user_list文件中的用戶是否能夠訪問FTP服務器; 設(shè)置為YES,則vsftpd.user_list文件中的用戶不允許訪問FTP; 若設(shè)置為NO,則只有vsftpd.user_list文件中的用戶才能訪問FTP; |
userlist_file=/etc/vsftpd/user_list | NO | 控制用戶訪問FTP的文件,里面寫著用戶名稱。一個用戶名稱一行 |
與匿名用戶登錄相關(guān)的設(shè)定值
參數(shù)設(shè)定值 | 默認值 | 作用 |
---|---|---|
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時,此項才有效; 匿名用戶必須要有對上層目錄的寫入權(quán); |
anon_upload_enable=YES|NO | NO | 允許匿名登入者有上傳文件(非目錄)的權(quán)限,只有在write_enable=YES時,此項才有效; 匿名用戶必須要有對上層目錄的寫入權(quán); |
deny_email_enable=YES|NO | NO | 啟動這項功能,則必須提供一個檔案/etc/vsftpd/banner_emails,內(nèi)容為email address; 若是使用匿名登入,則會要求輸入email address; 若輸入的email address 在此檔案內(nèi),則不允許進入; |
banned_email_file=/etc/vsftpd/banned_emails | /etc/vsftpd.banned_emails | 用來輸入email address,只有在deny_email_enable=YES時,才會使用到此文件; 若是使用匿名登入,則會要求輸入email address,若輸入的email address 在此檔案內(nèi),則不允許進入; |
no_anon_password=YES|NO | NO | 啟動這項功能,則使用匿名登入時,不會詢問密碼 |
anon_max_rate=0 | 0 | 設(shè)置匿名登入者使用的最大傳輸速度,單位為B/s,0 表示不限制速度 |
anon_umask=077 | 077 | 設(shè)置匿名登入者新增或上傳檔案時的umask 值 |
與 vsftpd 系統(tǒng)安全相關(guān)的設(shè)定值
參數(shù)設(shè)定值 | 默認值 | 作用 |
---|---|---|
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é)合來進行主機的訪問控制; 啟用,則vsftpd會檢查/etc/hosts.allow 中的配置,來決定請求連接的主機,是否允許訪問該FTP服務器; |
xferlog_enable=YES|NO | YES | 是否啟用上傳/下載日志記錄; 啟用,則上傳與下載的信息將被完整紀錄在xferlog_file 所定義的文件中; |
xferlog_file=/var/log/xferlog | /var/log/vsftpd.log | 設(shè)置日志文件名和路徑 |
xferlog_std_format=YES|NO | NO | 啟用,則日志文件將會寫成xferlog的標準格式,如同wu-ftpd 一般 |
dual_log_enable=YES|NO, vsftpd_log_file=/var/log/vsftpd.log | /var/log/vsftpd.log | 編寫vsftpd樣式日志文件的文件的名稱; 僅當 設(shè)置了選項xferlog_enable并且未設(shè)置xferlog_std_format時, 才會寫入此日志; 或,如果已設(shè)置選項dual_log_enable,則會寫入; 如果設(shè)置了 syslog_enable,則不會寫入此文件,而是將輸出發(fā)送到系統(tǒng)日志; |
nopriv_user=nobody | vsftpd在完全沒有特權(quán)的情況下使用的用戶名; 這應該是專用用戶,而不是任何人 | |
pam_service_name=vsftpd | /etc/pam.d/vsftpd | 設(shè)置PAM使用的名稱 |
綜合案例 - 本地用戶模式
創(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服務器,僅允許本地用戶登錄:
#禁止匿名登錄FTP服務器。 anonymous_enable=NO #允許本地用戶登錄FTP服務器。 local_enable=YES
在行首添加#注釋掉以下參數(shù),關(guān)閉監(jiān)聽IPv6 sockets,開啟IPv4(ipV4和ipV6不能同時被監(jiān)聽):
# 啟用IPv4 listen=YES # 關(guān)閉監(jiān)聽IPv6 sockets #listen_ipv6=YES
取消注釋write_enable
設(shè)置以允許對文件系統(tǒng)進行更改,例如上傳和刪除文件:
# 取消注釋write_enable write_enable=YES
開啟FTP的被動模式,設(shè)置數(shù)據(jù)傳輸?shù)亩丝诜秶海ㄌ砑釉?code>/etc/vsftpd.conf文件的最后)
# 開啟被動模式。 pasv_enable=YES #設(shè)置被動模式下,建立數(shù)據(jù)傳輸可使用的端口范圍的最小值。 #建議您把端口范圍設(shè)置在一段比較高的范圍內(nèi),例如50000~50010,有助于提高訪問FTP服務器的安全性。 pasv_min_port=50000 #設(shè)置被動模式下,建立數(shù)據(jù)傳輸可使用的端口范圍的最大值。 pasv_max_port=50010
配置chroot
為防止FTP用戶訪問其主目錄之外的任何文件:(添加在/etc/vsftpd.conf文件的最后)
# 全部用戶被限制在主目錄 chroot_local_user=YES # 啟用例外用戶名單 chroot_list_enable=YES # (default follows) # 指定例外用戶列表文件,列表中用戶不被鎖定在主目錄 chroot_list_file=/etc/vsftpd.chroot_list
默認情況下,為了防止安全漏洞,啟用chroot
后,如果用戶鎖定的目錄可寫,則vsftpd
將拒絕上傳文件,在vsftpd
配置文件中添加以下指令。
allow_writeable_chroot=YES
重啟FTP服務使配置生效
# 重啟FTP服務 sudo systemctl restart vsftpd # 查詢FTP服務狀態(tài) sudo systemctl status vsftpd
配置防火墻
如果正在運行UFW
防火墻,則需要允許FTP通信。
要打開端口21
(FTP命令端口),端口20
(FTP數(shù)據(jù)端口)和50000-50010
(被動端口范圍),請運行以下命令
sudo ufw allow 20:21/tcp sudo ufw allow 50000:50010/tcp
如果遠程管理ftp服務器,要讓他可以登錄:
usermod -s /bin/bash uftp
綜合案例 - 匿名用戶模式
1.主要是在配置文件中打開:
# 啟用匿名用戶模式 anonymous_enable=YES
2.備份本地用戶模式的配置文件
3.上傳匿名用戶模式配置文件:rz
在vsftpd.conf
文件中添加匿名用戶相關(guān)配置:
# 監(jiān)聽ipv4,啟用獨立模式 listen=YES # 啟用匿名用戶模式 anonymous_enable=YES # 允許寫操作 write_enable=YES # 允許匿名用戶上傳文件 anon_upload_enable=YES # 允許匿名用戶創(chuàng)建目錄 anon_mkdir_write_enable=YES # 允許匿名用戶修改或刪除目錄 anon_other_write_enable=YES # 表示上傳下載文件的掩碼 anon_umask=077 # 設(shè)置用戶的家目錄,登錄之后自動切換到各自用戶的家目錄 local_root=/srv/ftp/upload # 全部用戶被限制在主目錄 chroot_local_user=YES ? # 開啟被動模式。 pasv_enable=YES #設(shè)置被動模式下,建立數(shù)據(jù)傳輸可使用的端口范圍的最小值。 #建議您把端口范圍設(shè)置在一段比較高的范圍內(nèi),例如50000~50010,有助于提高訪問FTP服務器的安全性。 pasv_min_port=50000 #設(shè)置被動模式下,建立數(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
重啟服務
# 重啟服務 sudo service vsftpd restart # 查看服務狀態(tài) sudo service vsftpd status
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vsftp連接錯誤cannot locate user entry:vsftpd
這篇文章主要介紹了vsftpd登陸錯誤: 500 OOPS: cannot locate user entry:vsftpd問題的解決辦法,需要的朋友可以參考下2014-03-03云服務器Windows?Server2012配置FTP服務器詳細圖文教程
這篇文章主要介紹了云服務器Windows?Server2012配置FTP服務器詳細圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-08-08windows?server?2016?搭建FTP服務器詳細教程
這篇文章主要為大家詳細介紹了windows?server?2016?搭建FTP服務器詳細教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-08-08CentOS8環(huán)境下FTP服務器安裝與配置步驟詳解
FTP(文件傳輸協(xié)議)是一種網(wǎng)絡(luò)傳輸協(xié)議,用于在網(wǎng)絡(luò)中的計算機之間傳輸文件,在本指南中,我們將一步步介紹如何在CentOS 8環(huán)境下安裝和配置一個FTP服務器,感興趣的朋友一起看看吧2024-05-05