Ubuntu系統(tǒng)搭建FTP服務(wù)器的詳細(xì)過(guò)程
Ubuntu 系統(tǒng)版本:Ubuntu 22.04.2 LTS
1. 安裝 vsftpd 軟件包
執(zhí)行以下命令安裝vsftpd
sudo apt-get update sudo apt-get install vsftpd
執(zhí)行后你講看到如下輸出:
執(zhí)行命令vsftpd -v
查看版本,驗(yàn)證是否安裝成功
執(zhí)行成功后你將看到如下輸出:
2. 配置文件
以下是我翻譯后的默認(rèn)配置文件(地址 /etc/vsftpd.conf):
# 示例配置文件,地址: /etc/vsftpd.conf # # vsftpd的默認(rèn)編譯設(shè)置比較謹(jǐn)慎,這個(gè)示例文件會(huì)放寬一些限制,使ftp服務(wù)更加易用。 # 同時(shí)建議查看vsftpd.conf.5文件以了解所有編譯默認(rèn)值。 # # 特別提醒:這個(gè)示例文件并不包含vsftpd選項(xiàng)的所有內(nèi)容,建議閱讀vsftpd.conf.5手冊(cè)頁(yè)以充分了解vsftpd的功能。 # # # # 用來(lái)設(shè)置vsftpd是否以獨(dú)立守護(hù)進(jìn)程運(yùn)行。 # 如果設(shè)置為"listen=YES",則表示vsftpd將作為獨(dú)立守護(hù)進(jìn)程運(yùn)行; # 如果設(shè)置為"listen=NO",則表示vsftpd將不會(huì)以獨(dú)立守護(hù)進(jìn)程運(yùn)行,而是通過(guò)inetd或者initscript啟動(dòng)。 listen=NO # # 設(shè)置vsftpd是否啟用IPv6監(jiān)聽(tīng)。 # 如果設(shè)置為"listen_ipv6=YES",則表示vsftpd將啟用IPv6監(jiān)聽(tīng); # 如果設(shè)置為"listen_ipv6=NO",則表示vsftpd將不會(huì)啟用IPv6監(jiān)聽(tīng)。 # 默認(rèn)情況下,IPv6監(jiān)聽(tīng)地址為"::",同時(shí)可以接受IPv6和IPv4客戶端的連接。 # 如果你只需要監(jiān)聽(tīng)I(yíng)Pv4或IPv6地址,則不需要同時(shí)啟用兩種監(jiān)聽(tīng),如果你需要同時(shí)監(jiān)聽(tīng)特定的IPv4和IPv6地址,則需要運(yùn)行兩個(gè)vsftpd實(shí)例,并使用兩個(gè)不同的配置文件來(lái)進(jìn)行配置。 listen_ipv6=YES # # 設(shè)置是否允許匿名FTP登錄。 anonymous_enable=NO # # 設(shè)置是否允許本地用戶登錄FTP服務(wù)器。 local_enable=YES # # 設(shè)置是否允許FTP用戶執(zhí)行寫(xiě)入操作。 # write_enable=YES # # 設(shè)置本地用戶的默認(rèn)umask值。 # umask是一個(gè)三位八進(jìn)制數(shù),用來(lái)控制新建文件或目錄的訪問(wèn)權(quán)限。 # 在FTP服務(wù)器中,local_umask選項(xiàng)用來(lái)設(shè)置本地用戶上傳文件或創(chuàng)建目錄時(shí)的默認(rèn)權(quán)限。 # 默認(rèn)情況下,local_umask的值為077,表示新建的文件或目錄權(quán)限為只有所有者可讀、可寫(xiě)、可執(zhí)行,其他用戶無(wú)權(quán)訪問(wèn)。 # 如果你的用戶希望默認(rèn)權(quán)限為所有者可讀、可寫(xiě)、可執(zhí)行,其他用戶可讀、可執(zhí)行,則可以將local_umask的值設(shè)置為022。 local_umask=022 # # 設(shè)置是否允許匿名FTP用戶上傳文件。 # 如果將該選項(xiàng)的注釋去掉(即將“#”刪去),并將其值設(shè)置為YES,則表示允許匿名FTP用戶上傳文件。 # 但是,這個(gè)選項(xiàng)只有在全局寫(xiě)入權(quán)限被激活時(shí)才會(huì)生效。此外,你還需要?jiǎng)?chuàng)建一個(gè)由FTP用戶可寫(xiě)的目錄,以便匿名FTP用戶可以上傳文件。 # 需要注意的是,開(kāi)啟匿名FTP用戶上傳文件功能可能存在一定的安全風(fēng)險(xiǎn),因此需要謹(jǐn)慎使用。 # anon_upload_enable=YES # # 設(shè)置是否允許匿名FTP用戶創(chuàng)建新目錄。 # 如果將該選項(xiàng)的注釋去掉(即將“#”刪去),并將其值設(shè)置為YES,則表示允許匿名FTP用戶創(chuàng)建新目錄。 # 需要注意的是,開(kāi)啟匿名FTP用戶創(chuàng)建新目錄功能可能存在一定的安全風(fēng)險(xiǎn),因此需要謹(jǐn)慎使用。 # anon_mkdir_write_enable=YES # # 這段配置文件是用來(lái)設(shè)置是否啟用目錄消息功能。 # 如果設(shè)置為YES,則表示啟用目錄消息功能。當(dāng)遠(yuǎn)程用戶進(jìn)入某個(gè)目錄時(shí),會(huì)顯示該目錄的消息。 dirmessage_enable=YES # # 設(shè)置是否啟用本地時(shí)間功能。 # 啟用本地時(shí)間功能后,vsftpd將會(huì)在目錄列表中顯示本地時(shí)間而非GMT時(shí)間。 use_localtime=YES # # 啟用上傳和下載日志記錄功能。 # 啟用該功能后,vsftpd會(huì)記錄每個(gè)用戶的上傳和下載操作,并將其記錄到指定的日志文件中。 xferlog_enable=YES # # 設(shè)置數(shù)據(jù)傳輸?shù)亩丝谔?hào)。 # 將其值設(shè)置為YES,則表示數(shù)據(jù)傳輸使用的端口號(hào)為20。 connect_from_port_20=YES # # 設(shè)置匿名用戶上傳的文件的所有者。 # 設(shè)置為YES,則表示上傳的文件將會(huì)被轉(zhuǎn)換為指定用戶的所有權(quán)。 # chown_uploads=YES # 設(shè)置為指定的用戶名。 # chown_username=whoever # # 設(shè)置vsftpd日志文件的路徑。該路徑必須具有可寫(xiě)權(quán)限,并且對(duì)于vsftpd進(jìn)程來(lái)說(shuō),必須具有可訪問(wèn)權(quán)限。 # xferlog_file=/var/log/vsftpd.log # # 設(shè)置vsftpd日志文件的格式。設(shè)備為YES則存儲(chǔ)為標(biāo)準(zhǔn)ftpd xferlog格式。 # xferlog_std_format=YES # # 設(shè)置vsftpd空閑會(huì)話超時(shí)的時(shí)間(以秒為單位)。 # idle_session_timeout=600 # # 設(shè)置vsftpd數(shù)據(jù)連接超時(shí)的時(shí)間(以秒為單位)。 # data_connection_timeout=120 # # vsftpd建議在系統(tǒng)中定義一個(gè)唯一的用戶,供FTP服務(wù)器使用,作為完全隔離和無(wú)特權(quán)的用戶。 # nopriv_user選項(xiàng)可以用來(lái)指定該用戶的用戶名。 # nopriv_user=ftpsecure # # 用于啟用異步ABOR請(qǐng)求的識(shí)別。 # 異步ABOR請(qǐng)求是一種FTP客戶端請(qǐng)求,用于取消當(dāng)前正在進(jìn)行的數(shù)據(jù)傳輸操作。 # 啟用該選項(xiàng)可以提高FTP服務(wù)器的性能,但也會(huì)增加安全風(fēng)險(xiǎn)。因?yàn)楫惒紸BOR請(qǐng)求的代碼比較復(fù)雜,可能會(huì)被黑客利用進(jìn)行惡意攻擊。 # 所以,如果安全性是首要考慮因素,則不建議啟用該選項(xiàng)。 # async_abor_enable=YES # # 用于控制FTP服務(wù)器是否啟用ASCII模式下的文件轉(zhuǎn)換功能。 # 默認(rèn)情況下,F(xiàn)TP服務(wù)器會(huì)假裝允許ASCII模式,但實(shí)際上會(huì)忽略該請(qǐng)求。 # 如果需要啟用ASCII模式下的文件轉(zhuǎn)換功能,則可以將ascii_upload_enable和ascii_download_enable選項(xiàng)的注釋去掉,并將它們的值設(shè)置為YES。 # 在ASCII模式下,F(xiàn)TP服務(wù)器會(huì)將文本文件中的換行符和回車(chē)符進(jìn)行轉(zhuǎn)換,以便在不同操作系統(tǒng)之間進(jìn)行傳輸。 # 但是,需要注意的是,ASCII模式下可能存在一些安全風(fēng)險(xiǎn)。例如,攻擊者可以利用SIZE命令在ASCII模式下發(fā)送一個(gè)超大文件名,導(dǎo)致FTP服務(wù)器崩潰。 # 因此,建議謹(jǐn)慎使用ASCII模式,并確保FTP服務(wù)器已經(jīng)做好了相應(yīng)的安全措施。 # ascii_upload_enable=YES # ascii_download_enable=YES # # vsftpd的登錄橫幅的設(shè)置,你可以理解為登錄成功后的歡迎詞。 # ftpd_banner=Welcome to blah FTP service. # # 設(shè)備是否拒絕匿名電子郵件地址 # 有助于減輕利用匿名訪問(wèn)FTP服務(wù)器進(jìn)行的拒絕服務(wù)(DoS)攻擊。如果檢測(cè)到被禁止的電子郵件地址,服務(wù)器將拒絕該用戶的訪問(wèn)。 # deny_email_enable=YES # 如果啟用了拒絕匿名電子郵件地址的選項(xiàng),則通過(guò)從指定的文件“/etc/vsftpd.banned_emails”讀取被禁止的電子郵件地址列表。 # banned_email_file=/etc/vsftpd.banned_emails # # 設(shè)備限制本地用戶僅訪問(wèn)其home目錄。 # 如果啟用,則本地用戶將僅訪問(wèn)其home目錄和其子目錄,無(wú)法訪問(wèn)其他目錄。 # chroot_local_user=YES # # 是否允許本地用戶,是否將本地用戶限制在其主目錄中,如果設(shè)置為YES,則不會(huì)將列在chroot_list_file中的用戶限制在其主目錄中。 # chroot_local_user=YES # 是否啟用chroot_list_file列表,用于指定哪些用戶不應(yīng)該被限制在主目錄中。 # chroot_list_enable=YES # 指定了chroot_list_file列表的路徑和名稱。一行一個(gè)用戶名。 # chroot_list_file=/etc/vsftpd.chroot_list # # 否啟用ls命令的遞歸選項(xiàng)“-R”,該選項(xiàng)可以在列出目錄內(nèi)容時(shí)遞歸地列出子目錄。 # 默認(rèn)情況下,該選項(xiàng)被禁用以避免遠(yuǎn)程用戶在大型站點(diǎn)上引起過(guò)多的I/O。 # ls_recurse_enable=YES # # 自定義配置: # # 指定了一個(gè)空目錄作為安全chroot() jail。 # 在某些情況下,vsftpd不需要訪問(wèn)文件系統(tǒng),因此可以將FTP用戶限制在這個(gè)空目錄中,以增強(qiáng)安全性。該目錄應(yīng)該為空,并且不應(yīng)該被FTP用戶寫(xiě)入。 secure_chroot_dir=/var/run/vsftpd/empty # # 指定vsftpd將使用的PAM服務(wù)的名稱。 # 默認(rèn)情況下,pam_service_name的值為“vsftpd”,這意味著vsftpd將使用名為“vsftpd”的PAM服務(wù)來(lái)進(jìn)行認(rèn)證。 # 如果需要使用其他的PAM服務(wù),可以修改該選項(xiàng)的值。 pam_service_name=vsftpd # # 用于指定在SSL加密連接中使用的RSA證書(shū)的位置。 # 通過(guò)設(shè)置rsa_cert_file和rsa_private_key_file選項(xiàng)來(lái)指定RSA證書(shū)和私鑰的位置。 # 其中,rsa_cert_file選項(xiàng)用于指定證書(shū)文件的位置,而rsa_private_key_file選項(xiàng)用于指定私鑰文件的位置。 rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key # 是否啟用SSL加密連接。 ssl_enable=NO # # 指定是否在vsftpd中使用UTF-8編碼的文件系統(tǒng)。 # utf8_filesystem=YES
一般情況下這樣設(shè)置一下就可以了,配置文件已經(jīng)翻譯好了,大家可以按需設(shè)置:(編輯配置文件命令:sudo vim /etc/vsftpd.conf
)
local_enable=YES write_enable=YES chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list
也可以加上這段配置(路徑可以自定義):
# 設(shè)置FTP用戶的本地根目錄,也就是說(shuō),F(xiàn)TP用戶登錄后,其工作目錄將被限制在該目錄及其子目錄下。 local_root=/data/liss/data
以下是設(shè)置截圖(后面還有,按需配置):
當(dāng)然你可以會(huì)有一些特殊需求,比如限制一些用戶不能切換到其他目錄:
- 當(dāng)
chroot_list_enable=YES,chroot_local_user=YES
時(shí),在/etc/vsftpd.chroot_list文件中列出的用戶,可以切換到其他目錄;未在文件中列出的用戶,不能切換到其他目錄。 - 當(dāng)
chroot_list_enable=YES,chroot_local_user=NO
時(shí),在/etc/vsftpd.chroot_list文件中列出的用戶,不能切換到其他目錄;未在文件中列出的用戶,可以切換到其他目錄。 - 當(dāng)
chroot_list_enable=NO,chroot_local_user=YES
時(shí),所有的用戶均不能切換到其他目錄。 - 當(dāng)
chroot_list_enable=NO,chroot_local_user=NO
時(shí),所有的用戶均可以切換到其他目錄。
注意: 如果限制了用戶不能切換其他目錄,一定要在配置文件中新增 allow_writeable_chroot=YES
,否則會(huì)報(bào)錯(cuò):500 OOPS: vsftpd: refusing to run with writable root inside chroot()
3. 創(chuàng)建FTP用戶
一般情況下會(huì)在home下新建一個(gè)FTP的主目錄,然后建一個(gè)普通用戶如下:
# 創(chuàng)建FTP用戶主目錄 sudo mkdir /home/uftp # 添加FTP用戶uftp,指定用戶主目錄和所用shell # `-d` 選項(xiàng)指定用戶的主目錄,也就是用戶登錄后所在的默認(rèn)目錄。在這個(gè)例子中,`-d /home/uftp` 指定 `uftp` 用戶的主目錄為 `/home/uftp`。 # `-s` 選項(xiàng)指定用戶的默認(rèn)shell。Shell是一個(gè)命令行解釋器,它允許用戶與操作系統(tǒng)進(jìn)行交互。在這個(gè)例子中,`-s /bin/bash` 指定 `uftp` 用戶的默認(rèn)shell為Bash。 sudo useradd -d /home/uftp -s /bin/bash uftp # 設(shè)置密碼 sudo passwd uftp
但是也有特殊需求,我想要?jiǎng)?chuàng)建一個(gè)不能登錄只能通過(guò)ftp訪問(wèn)的用戶,并且我需要指定用戶主目錄是一個(gè)已經(jīng)存在的目錄:
# 創(chuàng)建uftp用戶,指定此用戶的主目錄。 # `-d` 選項(xiàng)用于指定用戶的主目錄;`-s` 選項(xiàng)用于指定用戶的默認(rèn) shell。 # `/sbin/nologin` 是一個(gè)特殊的 shell,它不允許用戶登錄系統(tǒng). # 通常用于限制某些用戶只能通過(guò)特定的服務(wù)(如FTP、SFTP等)進(jìn)行遠(yuǎn)程訪問(wèn), # 而不能直接登錄系統(tǒng)。 sudo useradd -d /data/liss -s /sbin/nologin uftp # 設(shè)置密碼 sudo passwd uftp # 如果想要恢復(fù)為正常用戶,可以執(zhí)行以下命令: sudo usermod -s /bin/bash uftp
如果你創(chuàng)建的用戶是只能通過(guò)ftp訪問(wèn)的用戶,一定要?jiǎng)h除 /etc/pam.d/vsftpd 配置文件,因?yàn)檫@個(gè)配置文件會(huì)導(dǎo)致使用用戶名登錄 ftp 失?。。?!
4. 添加vsftpd.chroot_list
編輯 /etc/vsftpd.chroot_list 文件,用于存放允許訪問(wèn)FTP的用戶
# 如果不存在會(huì)自動(dòng)創(chuàng)建 sudo vim /etc/vsftpd.chroot_list
然后將剛剛創(chuàng)建的FTP用戶添加進(jìn)去.
如果是多個(gè)用戶,一行一個(gè)。
5. 重啟FTP服務(wù)使配置生效
sudo service vsftpd restart
使用ps -aux | grep vsftpd
查看服務(wù)是否啟動(dòng)
6. 測(cè)試效果
FileZilla測(cè)試連接成功
到此這篇關(guān)于Ubuntu系統(tǒng)搭建FTP服務(wù)器的文章就介紹到這了,更多相關(guān)Ubuntu搭建FTP服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
windows Server 2008R2 FTP服務(wù)器搭建圖文教程
這篇文章主要為大家詳細(xì)介紹了windows Server 2008R2 FTP服務(wù)器搭建圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12使用FileZilla連接時(shí)超時(shí)無(wú)法連接到服務(wù)器
這篇文章主要介紹了使用FileZilla連接時(shí)超時(shí)無(wú)法連接到服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2007-09-09CentOs6.5中安裝和配置vsftp簡(jiǎn)明教程
這篇文章主要介紹了CentOs6.5中安裝和配置vsftp簡(jiǎn)明教程,需要的朋友可以參考下2014-03-03WIN10家庭版搭建FTP文件服務(wù)器詳細(xì)教程
這篇文章主要為大家詳細(xì)介紹了WIN10家庭版搭建FTP文件服務(wù)器詳細(xì)教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07Win7中開(kāi)啟系統(tǒng)自帶FTP服務(wù)器的方法
工作的原因siyue需要使用FTP服務(wù),由于Windows自帶的FTP服務(wù)器就很好用,這里siyue就把開(kāi)啟win7自帶的FTP服務(wù)器的設(shè)置分享一下2013-09-09