服務部署—— Vsftpd 服務器
作者:Escape
鏈接:https://www.escapelife.site/posts/8dc56d36.html
目錄
-
1 文件傳輸協議
1.1 FTP 協議概述
1.2 FTP 工作模式
1.3 FTP 服務程序
-
2 vsftpd 服務程序
2.1 安裝服務
2.2 配置文件
2.3 配置參數
-
3 vsftpd 認證模式
3.1 匿名訪問模式
3.2 本地用戶模式
3.3 虛擬用戶模式(文本文件)
3.4 虛擬用戶模式(MySQL 數據庫)
一 文件傳輸協議
-
FTP
-
TFTP
簡單文件傳輸協議 (TFTP) 是一種基於 UDP,C/S 架構的協議,佔用 69 端口
TFTP 的命令功能不如 FTP 服務強大,甚至不能遍歷目錄,在安全性方面也弱於 FTP 服務
因爲 TFTP 不需要客戶端的權限認證,也就減少了無謂的系統和網絡帶寬消耗,效率更高
1.1 FTP 協議概述
一般來講,人們將計算機聯網的首要目的就是獲取資料,而文件傳輸是一種非常重要的獲取資料的方式。今天的互聯網是由幾千萬臺個人計算機、工作站、服務器、小型機、大型機、巨型機等具有不同型號、不同架構的物理設備共同組成的,而且即便是個人計算機,也可能會裝有Windows
、Linux
、UNIX
、Mac
等不同的操作系統。爲了能夠在如此複雜多樣的設備之間解決問題解決文件傳輸問題,文件傳輸協議(FTP)應運而生。
FTP 是一種在互聯網中進行文件傳輸的協議,基於客戶端 / 服務器(C/S)模式,默認使用20
、21
號端口,其中端口 20(數據端口)用於進行數據傳輸,端口 21(命令端口)用於接受客戶端發出的相關 FTP 命令與參數。
FTP 服務器普遍部署於內網中,具有容易搭建、方便管理的特點。而且有些 FTP 客戶端工具還可以支持文件的多點下載以及斷點續傳技術,因此 FTP 服務得到了廣大用戶的青睞。
-
命令連接
傳輸 TCP 的文件管理類命令給服務端
直到用戶退出才關閉連接,否則一直連接
-
數據連接
數據傳輸,按需創建及關閉的連接
數據傳輸可以爲文本或二進制格式傳輸
1.2 FTP 工作模式
FTP 服務器是按照 FTP 協議在互聯網上提供文件存儲和訪問服務的主機,FTP 客戶端則是向服務器發送連接請求,以建立數據傳輸鏈路的主機。FTP 協議有下面兩種工作模式。
-
主動模式
:FTP 服務器主動向客戶端發起連接請求命令連接:Client:50000 --> Server:21
數據連接:Server:20/tcp --> Client:50000+1
模式缺點:客戶端有防火牆,一般會禁止服務的主動連接
-
被動模式
:FTP 服務器等待客戶端發起連接請求 (FTP 的默認工作模式)命令連接:Client:50000 --> Server:21
數據連接:Client:50000+1 --> Server: 隨機端口 ==> 通過命令連接得知這個隨機端口
模式缺點:服務器端需要修改防火牆規則並開放 21 和這個隨機端口
防火牆一般是用於過濾從外網進入內網的流量,因此有些時候需要將 FTP 的工作模式設置爲主動模式,纔可以傳輸數據。但是因爲客戶端主機一般都設有防火牆,會禁止服務器的連接請求,所有適當的 iptables 規則變得越來越重要了。
1.3 FTP 服務程序
由於 FTP 是一種基於(C/S)客戶端
/服務器
模式的協議,所有有很多的程序能夠提供 FTP 服務的功能。
服務端程序
-
wu-ftpd
一個 Internet 上最流行的 FTP 守護程序,功能十分強大,可以構建多種類型 FTP 服務器。
-
proftpd
一個 Unix 平臺上或是類 Unix 平臺上的 FTP 服務器開源程序,任何人只要遵守 GPL 版權聲明都可以隨意修改源碼。proftpd 亦開發了有圖形用戶界面的 FTP 服務端軟體稱爲 gProFTPd,可以提供圖形界面的操作。針對 Wu-FTP 的弱項而開發的,除了改進的安全性,還具備許多 Wu-FTP 沒有的特點,能以 Stand-alone、xinetd 模式運行等。
-
pureftp
pureftp 是免費和安全的 FTP 服務器,它注重效率和易用性。
-
vsftpd
vsftpd 是 very secure FTP daemon 的縮寫,安全性是它的一個最大的特點,可以運行在多種平臺之上提供安全的 FTP 服務。在 CentOS 等系統以及多個互聯網廠商都在使用的 FTP 服務程序,你值得擁有。
-
ServU
Serv-U 是一種被廣泛運用在 Windows 平臺的的 FTP 服務器軟件,可以設定多個 FTP 服務器、限定登錄用戶的權限、登錄主目錄及空間大小等優點。
客戶端程序
-
命令行
ftp
lftp, lftpget
wget, curl
因爲 FTP 協議是通過 TCP 明文傳送的,所有爲了安全可以使用 ftps(SSL), sftp(SSH) 工具
-
圖形化
_ filezilla
_ gftp
_ gProFTPd
_ flashfxp * cuteftp
FTP 服務的響應碼
1xx: 信息
2xx: 成功類的狀態碼
3xx: 提示需進一步提供補充類信息的狀態碼
4xx: 客戶端錯誤
5xx: 服務端錯誤
二 vsftpd 服務程序
vsftpd(非常安全的 FTP 守護進程) 是一款運行在 Linux 操作系統上的 FTP 服務程序,不僅完全開源而且免費,此外,還具有很高的安全性、傳輸速度,以及支持虛擬用戶驗證等其他 FTP 服務程序具備的特點。
2.1 安裝服務
- 安裝服務端程序
[root@localhost ~]# yum install vsftpd
Loaded plugins: langpacks, product-id, subscription-manager
………………省略部分輸出信息………………
================================================================================
Installing:
vsftpd x86_64 3.0.2-9.el7 rhel 166 k
Transaction Summary
================================================================================
Install 1 Package
vsftpd.x86_64 0:3.0.2-9.el7
Complete!
[root@linuxprobe ~]# yum install ftp
Loaded plugins: langpacks, product-id, subscription-manager
………………省略部分輸出信息………………
Install 1 Package
ftp.x86_64 0:0.17-66.el7
Complete!
- 關閉本機防火牆
# iptables防火牆管理工具默認禁止了FTP傳輸協議的端口號
[root@localhost ~]# iptables -F
- 配置 FTP 服務
# 程序的主配置文件爲/etc/vsftpd/vsftpd.conf
[root@localhost ~]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
2.2 配置文件
這裏主要說的是,CentOS6 中的配置文件位置,在 CentOS7 中有可能不同。
-
配置文件
主配置文件:/etc/vsftpd/vsftpd.conf
配置文件目錄:/etc/vsftpd/*.conf
服務啓動腳本:/etc/rc.d/init.d/vsftpd
用戶認證配置文件:/etc/pam.d/vsftpd
-
共享目錄
匿名用戶 (映射爲 ftp 用戶) 共享資源位置:/var/ftp
系統用戶通過 ftp 訪問的資源的位置:用戶自己的家目錄
虛擬用戶通過 ftp 訪問的資源的位置:給虛擬用戶指定的映射成爲的系統用戶的家目錄
2.3 配置參數
常用配置參數都爲主配置文件,/etc/vsftpd/vsftpd.conf 的常用配置。
- 通用基礎配置
- 匿名用戶的配置
- 系統用戶的配置
- 日誌功能
三 vsftpd 認證模式
vsftpd 作爲更加安全的文件傳輸的服務程序,允許用戶以三種認證模式登錄到 FTP 服務器上。
-
匿名開放模式
匿名開放模式是一種最不安全的認證模式,任何人都可以無需密碼驗證而直接登錄到 FTP 服務器。這種模式一般用來訪問不重要的公開文件,在生產環境中儘量不要存放重要文件,不建議在生產環境中如此行事。
-
本地用戶模式
本地用戶模式是通過 Linux 系統本地的賬戶密碼信息進行認證的模式,相較於匿名開放模式更安全,而且配置起來相對簡單。但是如果被黑客破解了賬戶的信息,就可以暢通無阻地登錄 FTP 服務器,從而完全控制整臺服務器。
-
虛擬用戶模式
虛擬用戶模式是這三種模式中最安全的一種認證模式,它需要爲 FTP 服務單獨建立用戶數據庫文件,虛擬出用來進行口令驗證的賬戶信息,而這些賬戶信息在服務器系統中實際上是不存在的,僅供 FTP 服務程序進行認證使用。這樣,即使黑客破解了賬戶信息也無法登錄服務器,從而有效降低了破壞範圍和影響。
3.1 匿名訪問模式
vsftpd 服務程序默認開啓了匿名開放模式,我們需要做的就是開放匿名用戶的上傳、下載文件的權限,以及讓匿名用戶創建、刪除、更名文件的權限。
# 匿名訪問模式主配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
# 重啓服務
[root@localhost ~]# systemctl restart vsftpd
# 服務程序加入到開機啓動項中,以保證服務器在重啓後依然能夠正常提供傳輸服務
[root@localhost ~]# systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service
# 在vsftpd服務程序的匿名開放認證模式下,其賬戶統一爲anonymous,密碼爲空
# 連接到FTP服務器後,默認訪問的是/var/ftp目錄,我們可以在其中進行創建、刪除等操作
[root@localhost ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): anonymous
331 Please specify the password.
Password:此處敲擊回車即可
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
550 Permission denied.
# 系統顯示拒絕創建目錄,這是爲什麼呢?
# 查看該目錄的權限得知,只有root管理員纔有寫入權限,開放ftp用戶權限(該賬戶在系統中已經存在)
[root@localhost ~]# ls -ld /var/ftp/pub
drwxr-xr-x. 3 root root 16 Jul 13 14:38 /var/ftp/pub
[root@localhost ~]# chown -Rf ftp /var/ftp/pub
[root@localhost ~]# ls -ld /var/ftp/pub
drwxr-xr-x. 3 ftp root 16 Jul 13 14:38 /var/ftp/pub
[root@localhost ~]# ftp 192.168.10.10
………………省略部分輸出信息………………
ftp> mkdir files
550 Create directory operation failed.
# 我們發現還是無法創建目錄,發現是SELinux服務在搗亂了
# 使用getsebool命令查看與FTP相關的SELinux域策略都有哪些
[root@localhost ~]# getsebool -a | grep ftp
ftp_home_dir --> off
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
# 根據經驗和策略的名稱判斷出是ftpd_full_access--> off策略規則導致了操作失敗
[root@localhost ~]# setsebool -P ftpd_full_access=on
# 此時,匿名用戶就可以正常使用FTP服務了
[root@linuxprobe ~]# ftp 192.168.10.10
………………省略部分輸出信息………………
ftp> mkdir files
257 "/pub/files" created
ftp> rename files database
350 Ready for RNTO.
250 Rename successful.
ftp> exit
221 Goodbye.
3.2 本地用戶模式
如果大家之前用的是匿名開放模式,現在就可以將它關了,然後開啓本地用戶模式。
# 本地用戶模式主配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
connect_from_port_20=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
xferlog_enable=YES
xferlog_std_format=YES
# 同樣需要重啓服務和開機自啓動
[root@localhost ~]# systemctl restart vsftpd
# 服務程序加入到開機啓動項中,以保證服務器在重啓後依然能夠正常提供傳輸服務
[root@localhost ~]# systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service
# 現在已經完全可以本地用戶的身份登錄FTP服務器了,但是使用root無法登陸
[root@localhost ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): root
530 Permission denied.
Login failed.
ftp>
# 這是因爲,爲了系統的安全,默認禁止root等用戶登錄FTP服務被系統拒絕訪問
# 因爲vsftpd服務程序所在的目錄中,默認存放着兩個名爲用戶名單的文件,ftpusers和user_list
# 在ftpusers和user_list兩個用戶文件中將root用戶刪除就可以登錄了
[root@localhost ~]# cat /etc/vsftpd/user_list
root
bin
daemon
[root@localhost ~]# cat /etc/vsftpd/ftpusers
root
bin
daemon
# 在採用本地用戶模式登錄FTP服務器後,默認訪問的是該用戶的家目錄,因此不存在寫入權限不足的情況
# 如果不關閉SELinux,則需要再次開啓SELinux域中對FTP服務的允許策略
[root@localhost ~]# setsebool -P ftpd_full_access=on
# 即可以使用系統用戶進行FTP服務的登錄了
[root@localhost ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): escape
331 Please specify the password.
Password:此處輸入該用戶的密碼
230 Login successful.
Remote system type is UNIX.
3.3 虛擬用戶模式 (文本文件)
認證模式:
vsftpd
+pam
+file
-
第一步:創建用於進行 FTP 認證的用戶數據庫文件
這裏使用文本文件進行用戶認證
數據庫文件中奇數行爲賬戶名,偶數行爲密碼
# 編輯虛擬用戶文件
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim vuser.list
zhangsan
redhat
lisi
redhat
# 明文信息既不安全,也不符合讓vsftpd服務程序直接加載的格式
# 因此需要使用db_load命令用哈希算法將原始的明文信息文件轉換成數據庫文件
# 降低數據庫文件的權限,然後再把原始的明文信息文件刪除
[root@localhost vsftpd]# db_load -T -t hash -f vuser.list vuser.db
[root@localhost vsftpd]# file vuser.db
vuser.db: Berkeley DB (Hash, version 9, native byte-order)
[root@localhost vsftpd]# chmod 600 vuser.db
[root@localhost vsftpd]# rm -f vuser.list
-
第二步:創建 vsftpd 服務程序用於存儲文件的根目錄以及虛擬用戶映射的系統本地用戶
FTP 服務用於存儲文件的根目錄指的是,當虛擬用戶登錄後所訪問的默認位置
可以把這個系統本地用戶的家目錄設置爲 / var 目錄並設置不允許登錄 FTP 服務器
[root@localhost ~]# useradd -d /var/ftproot -s /sbin/nologin virtual
[root@localhost ~]# ls -ld /var/ftproot/
drwx------. 3 virtual virtual 74 Jul 14 17:50 /var/ftproot/
[root@localhost ~]# chmod -Rf 755 /var/ftproot/
-
第三步:建立支持虛擬用戶的 PAM 認證文件
PAM 是一種認證機制,通過一些動態鏈接庫和統一的 API 把系統提供的服務與認證方式分開
PAM 是可插拔認證模塊,使得系統管理員可以根據需求靈活調整服務程序的不同認證方式
#新建一個用於虛擬用戶認證的PAM文件vsftpd.vu
#PAM文件內的db=參數爲使用db_load命令生成的賬戶密碼數據庫文件的路徑,但不用寫數據庫文件的後綴
[root@localhost ~]# vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
-
第四步:在 vsftpd.conf 文件中添加支持配置
在 vsftpd 服務程序的主配置文件中默認就帶有參數
pam_service_name=vsftpd
表示登錄 FTP 服務器時是根據
/etc/pam.d/vsftpd
文件進行安全認證的
# 我們要做的就是把vsftpd主配置文件中原有的PAM認證文件vsftpd修改爲新建的vsftpd.vu文件即可
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/vusers_dir
local_enable=YES
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
userlist_enable=YES
tcp_wrappers=YES
-
第五步:爲虛擬用戶設置不同的權限
只需新建一個目錄,在裏面分別創建兩個以 zhangsan 和 lisi 命名的文件
在每個文件中,對用戶分別進行配置,達到管理不用用戶權限的效果
[root@localhost ~]# mkdir /etc/vsftpd/vusers_dir/
[root@localhost ~]# cd /etc/vsftpd/vusers_dir/
[root@localhost vusers_dir]# touch lisi
[root@localhost vusers_dir]# vim zhangsan
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
- 第六步:設置 SELinux 域允許策略
# 先按照前面實驗中的步驟開啓SELinux域的允許策略,以免再次出現操作失敗的情況
[root@localhost ~]# setsebool -P ftpd_full_access=on
[root@localhost ~]# getsebool -a | grep ftp
ftp_home_dir –> off
ftpd_anon_write –> off
ftpd_connect_all_unreserved –> off
ftpd_connect_db –> off
ftpd_full_access –> off
ftpd_use_cifs –> off
ftpd_use_fusefs –> off
ftpd_use_nfs –> off
ftpd_use_passive_mode –> off
httpd_can_connect_ftp –> off
httpd_enable_ftp_server –> off
sftpd_anon_write –> off
sftpd_enable_homedirs –> off
sftpd_full_access –> on
sftpd_write_ssh_home –> off
tftp_anon_write –> off
tftp_home_dir –> off
- 第七步:使用虛擬 FTP 用戶訪問測試
[root@localhost ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): lisi
331 Please specify the password.
Password:此處輸入虛擬用戶的密碼
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir files
550 Permission denied.
ftp> exit
221 Goodbye.
[root@localhost ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): zhangsan
331 Please specify the password.
Password:此處輸入虛擬用戶的密碼
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir files
257 "/files" created
ftp> rename files database
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir database
250 Remove directory operation successful.
ftp> exit
221 Goodbye.
3.4 虛擬用戶模式 (MySQL 數據庫)
認證模式:vsftpd + pam + mysql
- 第一步:安裝所需要程序
# 安裝mysql和pam_mysql,pam_mysql由epel源提供
$ yum -y install vsftpd mysql-server mysql-devel pam_mysql
- 第二步:創建虛擬用戶賬號
# 1、準備數據庫及相關表
首先請確保mysql服務已經正常啓動。而後,按需要建立存儲虛擬用戶的數據庫即可,這裏將其創建爲vsftpd數據庫
mysql> create database vsftpd;
授權vsftpd用戶可以通過localhost主機操作select權限vsftpd庫的所有表,密碼爲www.escapelife.com
mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'www.escapelife.com';
mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by 'www.escapelife.com';
mysql> flush privileges;
(這裏是本機安裝所有授權localhost主機,如果不同需要使用不同的主機地址)
(mysql> grant select on vsftpd.* to vsftpd@'192.168.31.%' identified by 'www.escapelife.com';)
(mysql> flush privileges;)
創建相關表
mysql> use vsftpd;
mysql> create table users (
-> id INT UNSIGNED AUTO_INCREMENT NOT NULL,
-> name VARCHAR(50) BINARY NOT NULL,
-> password char(48) BINARY NOT NULL,
-> PRIMARY KEY(id)
-> );
# 2、添加測試的虛擬用戶
根據需要添加所需要的用戶,需要說明的是,這裏將其密碼爲了安全起見應該使用PASSWORD函數加密後存儲
mysql> INSERT INTO users(name, password) VALUES('tom', password('escapelife'));
mysql> INSERT INTO users(name, password) VALUES('bob', password('escapelife'));
SELETC * FROM user;
- 第三步:配置 vsftpd
# 1.建立pam認證所需文件
$ vi /etc/pam.d/vsftpd.mysql
添加如下兩行,主要32位和64位庫文件的不同位置,模塊路徑可不寫表示pam模塊路徑
指定用戶、密碼、主機、數據庫、表、用戶名字段、密碼字段、密碼的加密方式
密碼的加密方式可以通過安裝的pam_mysql的文檔查看,/usr/share/doc/pam_mysql-0.7/README rpm -ql pam_mysql
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=www.escapelife.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=www.escapelife.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
(auth required /lib64/security/pam_mysql.so user=vsftp passwd=www.escapelife.com host=192.168.31.71 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2)
(account required /lib64/security/pam_mysql.so user=vsftp passwd=www.escapelife.com host=192.168.31.71 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2)
注意:由於mysql的安裝方式不同,pam_mysql.so基於unix sock連接mysql服務器時可能會出問題,此時,建議授權一個可遠程連接的mysql並訪問vsftpd數據庫的用戶。
# 2.修改vsftpd的配置文件,使其適應mysql認證
建立虛擬用戶映射的系統用戶及對應的目錄
$ useradd -s /sbin/nologin -d /var/ftproot vuser
$ chmod go+rx /var/ftproot
請確保/etc/vsftpd.conf中已經啓用了以下選項
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
而後添加以下選項
guest_enable=YES
guest_username=vuser
並確保pam_service_name選項的值如下所示
pam_service_name=vsftpd.mysql
- 第四步:啓動 vsftpd 服務
# 啓動vsftpd服務
$ service vsftpd start
$ chkconfig vsftpd on
# 查看端口開啓情況
$ netstat -tnlp | grep :21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 23286/vsftpd
# 使用虛擬用戶登錄,驗證配置結果
$ ftp localhost
- 第五步:配置虛擬用戶具有不同的訪問權限
# vsftpd可以在配置文件目錄中爲每個用戶提供單獨的配置文件以定義其ftp服務訪問權限,每個虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄可以是任意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可。
# 1、配置vsftpd爲虛擬用戶使用配置文件目錄
$ vim vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_config
# 2、創建所需要目錄,併爲虛擬用戶提供配置文件
$ mkdir /etc/vsftpd/vusers_config/
$ cd /etc/vsftpd/vusers_config/
$ touch tom bob
# 3、配置虛擬用戶的訪問權限
# 虛擬用戶對vsftpd服務的訪問權限是通過匿名用戶的相關指令進行的
# 如果需要讓tom用戶具有上傳文件的權限,可以修改/etc/vsftpd/vusers_config/tom文件
anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/wpJce7R1tvANdUvKoUg5Ww