文件服務(wù)ftp和vsftpd

三種存儲(chǔ)方式

DAS (Direct-attached Storage) 直連存儲(chǔ)

這種設(shè)備直接連接到計(jì)算機(jī)主板總線(xiàn)上,計(jì)算機(jī)將其識(shí)別為一個(gè)塊設(shè)備

常見(jiàn)設(shè)備(協(xié)議)有:SATA,ASA,IDE,SCSI,USB

NAS (Network Attached Storage) 網(wǎng)絡(luò)附加存儲(chǔ)

它一般是將本地的存儲(chǔ)空間共享給其他主機(jī)使用,一般通過(guò) C/S 架構(gòu)實(shí)現(xiàn)通信。它實(shí)現(xiàn)的是文件級(jí)別的共享,計(jì)算機(jī)通常將共享的設(shè)別識(shí)別為一個(gè)文件系統(tǒng),其文件服務(wù)器會(huì)管理鎖以實(shí)現(xiàn)并發(fā)訪(fǎng)問(wèn)。接口不是block接口,而是文件接口,只有block接口才能被分區(qū)格式化,NAS不能被分區(qū)格式化,只能直接掛載使用。

常見(jiàn)設(shè)備(協(xié)議):CIFS(samba)、NFS(Network File System)

SAN (Storage Area Network) 存儲(chǔ)區(qū)域網(wǎng)

它將傳輸網(wǎng)絡(luò)模擬成 SCSI 總線(xiàn)來(lái)使用,每一個(gè)主機(jī)的網(wǎng)卡相當(dāng)于 SCSI 總線(xiàn)中的 initiator,服務(wù)器相當(dāng)于一個(gè)或多個(gè) target,它需要借助客戶(hù)端和服務(wù)端的 SCSI 驅(qū)動(dòng),通過(guò) FC 或 TCP/IP 協(xié)議封裝 SCSI 報(bào)文。它實(shí)現(xiàn)的是塊級(jí)別的共享,通常被識(shí)別為一個(gè)塊設(shè)備,但是需要借助專(zhuān)門(mén)的鎖管理軟件才能實(shí)現(xiàn)多主機(jī)并發(fā)訪(fǎng)問(wèn)。

常見(jiàn)設(shè)備(協(xié)議):ISCSI(IP-SAN)、FCSAN、FCoE

FTP

FTP,F(xiàn)ile transfer Protocl即文件傳輸協(xié)議,客戶(hù)端需要使用專(zhuān)門(mén)的 ftp 客戶(hù)端與服務(wù)器端進(jìn)行通信,以完成文件的上傳和下載,F(xiàn)TP 協(xié)議工作在應(yīng)用層。它使用兩個(gè)連接與客戶(hù)端通信:

  • 命令連接:用于傳輸文件管理類(lèi)命令,此連接在客戶(hù)端連接后會(huì)始終在線(xiàn),監(jiān)聽(tīng)在tcp/21端口
  • 數(shù)據(jù)連接:用于傳輸文件數(shù)據(jù),此連接會(huì)按序創(chuàng)建

FTP 服務(wù)器會(huì)監(jiān)聽(tīng) TCP 21 號(hào)端口用于命令連接,而數(shù)據(jù)連接有兩種模式:

主動(dòng)模式:在主動(dòng)模式下,F(xiàn)TP客戶(hù)端從任意端口5000(端口號(hào)>1023)發(fā)起一個(gè)FTP請(qǐng)求,并攜帶自己監(jiān)聽(tīng)的端口號(hào)5001(發(fā)送的端口號(hào)+1=監(jiān)聽(tīng)端口號(hào));隨后服務(wù)器返回確認(rèn),然后從服務(wù)器本地的20端口主動(dòng)發(fā)起連接請(qǐng)求到客戶(hù)端的監(jiān)聽(tīng)端口5001,最后客戶(hù)端返回確認(rèn)。
這種模式缺點(diǎn)在于服務(wù)器帶客戶(hù)端的FTP連接很容易被傳輸過(guò)程中的路由器、防火墻所影響或攔截。

被動(dòng)模式:為了主動(dòng)模式所面臨的服務(wù)器到客戶(hù)端的連接會(huì)被攔截阻塞的問(wèn)題,F(xiàn)TP發(fā)展出了被動(dòng)模式。在被動(dòng)模式中,命令連接和數(shù)據(jù)連接都由客戶(hù)端來(lái)發(fā)起,這樣就可以解決從服務(wù)器到客戶(hù)端的數(shù)據(jù)端口的入方向連接被防火墻攔截的問(wèn)題。

被動(dòng)模式也會(huì)存在防火墻的問(wèn)題,客戶(hù)端與服務(wù)端傳輸數(shù)據(jù)時(shí),在服務(wù)端也會(huì)有防火墻,但在服務(wù)端的防火墻有連接追蹤的功能,解決了防火墻的問(wèn)題。因此,一般使用被動(dòng)模式比較多。

FTP的用戶(hù)認(rèn)證

FTP支持系統(tǒng)用戶(hù),匿名用戶(hù),和虛擬用戶(hù)三種用戶(hù)認(rèn)證。

  • 匿名用戶(hù):登陸用戶(hù)名是anonymous,沒(méi)有密碼

  • 系統(tǒng)用戶(hù):是FTP服務(wù)器端的本地用戶(hù)和對(duì)應(yīng)的密碼,默認(rèn)訪(fǎng)問(wèn)的是用戶(hù)家目錄

  • 虛擬用戶(hù):僅用于訪(fǎng)問(wèn)服務(wù)器中特定的資源,常見(jiàn)的虛擬用戶(hù)認(rèn)證的方式有使用文件認(rèn)證或使用數(shù)據(jù)庫(kù)進(jìn)行認(rèn)證。最終也會(huì)將這些虛擬用戶(hù)同一映射為一個(gè)系統(tǒng)用戶(hù),訪(fǎng)問(wèn)的默認(rèn)目錄就是這個(gè)系統(tǒng)用戶(hù)的家目錄。

常見(jiàn)的實(shí)現(xiàn)FTP協(xié)議的工具

服務(wù)端:
Linux端:wu-ftpd,pureftp,vsftpd(Centos 6上默認(rèn)提供的)
windows端:ServU,F(xiàn)ileZilla-Server

客戶(hù)端工具:
Linux操作系統(tǒng):ftp,lftp,lftpget,wget,cul,gftp等
windows操作系統(tǒng):FileZilla

vsftpd

vsftpd服務(wù)即 " Very secure file transfer protocol ",是一款結(jié)合多種認(rèn)證手段的ftp開(kāi)源軟件。
基于URL被訪(fǎng)問(wèn):SCHEME://username:passwd@HOST:PORT/path/to/file

vsftpd以ftp用戶(hù)的身份運(yùn)行進(jìn)程,默認(rèn)用戶(hù)紀(jì)即為ftp用戶(hù)

主程序:/usr/sbin/vsftpd
用戶(hù)認(rèn)證配置文件:/etc/pam.d/vsftpd
服務(wù)腳本:/etc/rc.d/init.d/vsftpd
配置文件目錄:/etc/vsftpd
主配置文件:vsftpd.conf
匿名用戶(hù)(映射為ftp用戶(hù))共享資源位置:/var/ftp
系統(tǒng)用戶(hù)通過(guò)ftp訪(fǎng)問(wèn)的資源的位置:用戶(hù)自己的家目錄
虛擬用戶(hù)通過(guò)ftp訪(fǎng)問(wèn)的資源的位置:給虛擬用戶(hù)指定的映射成為的系統(tǒng)用戶(hù)的家目錄

注意:一個(gè)用戶(hù)通過(guò)文件共享服務(wù)訪(fǎng)問(wèn)文件系統(tǒng)上的文件的生效權(quán)限為此二者的交集,vsftpd服務(wù)對(duì)根目錄(/var/ftp/)要求其他用戶(hù)不能有寫(xiě)權(quán)限,且屬主屬組(root)不能更改,想創(chuàng)建一個(gè)目錄,允許其他人上傳,可以在該目錄下新建一個(gè)子目錄,修改其權(quán)限

常見(jiàn)的的vsftpd的參數(shù)設(shè)置

用戶(hù)類(lèi)別

  • 匿名用戶(hù):anonymous --> ftp,/var/ftp
  • 系統(tǒng)用戶(hù):至少禁止系統(tǒng)用戶(hù)訪(fǎng)問(wèn)ftp服務(wù),/etc/vsftpd/ftpusers,PAM(/etc/pam.d/vsftpd)
  • 虛擬用戶(hù):非系統(tǒng)用戶(hù),用戶(hù)賬號(hào)非為可登錄操作系統(tǒng)的用戶(hù)賬號(hào)(非/etc/passwd)
主配置文件:/etc/vsftpd/vsftpd.conf

格式: 指令=值(不能有空格,頂格寫(xiě))

匿名用戶(hù)指令
anon_enable=YES 允許匿名用戶(hù)登錄
anon_upload_enable=YES 允許匿名用戶(hù)上傳文件
anon_mkdir_write_enable=YES 允許匿名用戶(hù)創(chuàng)建目錄
anon_other_write_enable=YES 允許其他的寫(xiě)權(quán)限(刪除目錄,文件)
anon_umask=022 匿名用戶(hù)上傳文件的權(quán)限碼

系統(tǒng)用戶(hù)指令
local_enable=YES 允許本地用戶(hù)訪(fǎng)問(wèn)(/etc/passwd中的用戶(hù))
write_enable=YES 允許寫(xiě)入權(quán)限,包括修改,刪除
local_umask=022 系統(tǒng)用戶(hù)上傳的文件權(quán)限掩碼

chroot_local_user=YES 禁錮所有本地用戶(hù)于其家目錄;需事先去除用戶(hù)對(duì)家目錄的寫(xiě)權(quán)限;禁錮完后,連接后,使用pwd將顯示為當(dāng)前目錄為根目錄
chroot_list_enable=YES 禁錮某些用戶(hù)于家目錄中(而后使用下面指令,指出用戶(hù)列表保存位置)
chroot_list_file=/etc/vsftpd/chroot_list 禁錮列表中文件存在的用戶(hù)于其家目錄中;需事先去除用戶(hù)對(duì)其家目錄的寫(xiě)權(quán)限

控制可登錄vsftpd服務(wù)的用戶(hù)列表
userlist_enable=YES 啟用/etc/vsftpd/user_list文件來(lái)控制可登陸用戶(hù)
userlist_deny=NO NO意味著只允許/etc/vsftpd/user_list文件里面的用戶(hù)訪(fǎng)問(wèn)FTP(白名單),YES(黑名單)

傳輸日志
xferlog_enable=YES 打開(kāi)傳輸日志
xferlog_std_format=YES 是否使用標(biāo)準(zhǔn)格式
xferlog_file=/var/log/xferlog 日志文件路徑

守護(hù)進(jìn)程的類(lèi)型
standalone:獨(dú)立守護(hù)進(jìn)程,由服務(wù)進(jìn)程自行監(jiān)聽(tīng)套接字,并接受用戶(hù)訪(fǎng)問(wèn)請(qǐng)求
translent:瞬時(shí)守護(hù)進(jìn)程,由受托管方代為監(jiān)聽(tīng)套接字,服務(wù)進(jìn)程沒(méi)有訪(fǎng)問(wèn)請(qǐng)求時(shí)不啟動(dòng),當(dāng)托管方收到訪(fǎng)問(wèn)請(qǐng)求時(shí),才啟動(dòng)服務(wù)進(jìn)程
CentOS6:xinted獨(dú)立守護(hù)進(jìn)程,/etc/xinted.d/
CentOS7:由systemd代為監(jiān)聽(tīng)

傳輸速率
anon_max_rate: 匿名用戶(hù)的最大傳輸速率,單位是“字節(jié)/秒”,0表示無(wú)限制
local_max_rate: 本地用戶(hù)的最大傳輸速率,單位是“字節(jié)/秒”,0表示無(wú)限制

連接限制
max_clients: 最大并發(fā)連接數(shù)
max_per_ip: 每個(gè)IP可同時(shí)發(fā)起的并發(fā)請(qǐng)求數(shù)

除了上述參數(shù)之外,若還想使用更多的參數(shù)可以通過(guò)man vsftpd.conf來(lái)獲取更多的參數(shù)信息。

輔助配置文件:/etc/vsftpd/ftpusers
該文件中保存了一個(gè)系統(tǒng)用戶(hù)的列表,在該列表中的所有系統(tǒng)用戶(hù),都禁止登錄ftp服務(wù);ftp協(xié)議在傳輸時(shí)是明文的,使用tcpdump工具抓包能看到登錄用戶(hù)的賬號(hào)和密碼

用戶(hù)認(rèn)證

linux系統(tǒng)登錄的時(shí)候,登錄提示符是由/bin/login程序提供,程序自身沒(méi)有認(rèn)證功能,它調(diào)用了pam組件完成的。
pam:Plugable Authentication Modulepam,高度模塊化的認(rèn)證框架

/etc/pam.d/目錄下為每一個(gè)調(diào)用了該庫(kù)的應(yīng)用程序都提供了配置文件

[root@localhost ~]# cat /etc/pam.d/vsftpd 
#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required pam_shells.so
auth       include  password-auth
account    include  password-auth
session    required     pam_loginuid.so
session    include  password-auth
匿名用戶(hù)認(rèn)證

匿名用戶(hù)認(rèn)證是指任何人無(wú)需認(rèn)證即可訪(fǎng)問(wèn)到FTP服務(wù)器
vsftp服務(wù)默認(rèn)就開(kāi)啟了匿名用戶(hù)登錄,只需要修改匿名用戶(hù)的FTP共享權(quán)限及對(duì)應(yīng)訪(fǎng)問(wèn)目錄的權(quán)限

編輯/etc/vsftpd/vsftpd.conf

[root@ftp ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022

保存退出后啟動(dòng)vsftpd服務(wù)

[root@ftp ~]# systemctl start vsftpd
[root@ftp ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/

在另一臺(tái)主機(jī)上登錄ftp服務(wù)

[root@test ~]# yum install -y lftp  #首先安裝lftp程序,用于連接ftp服務(wù)
[root@test ~]# lftp 192.168.0.188 
lftp 192.168.0.188:~> ls              
drwxr-xr-x    2 0        0               6 Aug 03  2017 pub
lftp 192.168.0.188:/> cd pub/
lftp 192.168.0.188:/pub> mkdir anon_test
mkdir: Access failed: 550 Create directory operation failed. (anon_test)

此時(shí)發(fā)現(xiàn)無(wú)法創(chuàng)建anon_test目錄,但是我們已經(jīng)在vsftpd.conf文件中配置了匿名用戶(hù)可創(chuàng)建目錄的參數(shù)了,這是因?yàn)閒tp服務(wù)的根目錄我們還沒(méi)有對(duì)其進(jìn)行修改。匿名用戶(hù)的默認(rèn)路徑即為ftp用戶(hù)的家目錄/var/ftp,而vsftp用戶(hù)的真正權(quán)限是vsftpd.conf定義的共享權(quán)限與訪(fǎng)問(wèn)目錄的權(quán)限的交集。所以此時(shí)我們需要去修改/var/ftp/pub目錄的文件權(quán)限:

[root@ftp ~]# ll -d /var/ftp/pub/  
drwxr-xr-x. 2 root root 6 8月   3 2017 /var/ftp/pub/  #默認(rèn)情況/var/ftp/pub目錄的屬主和屬組均為root,其他組并沒(méi)有寫(xiě)權(quán)限
[root@ftp ~]# chown ftp:ftp /var/ftp/pub/  #更改/var/ftp/pub目錄的屬主和屬組為ftp

重新在ftp客戶(hù)端上匿名登錄測(cè)試

[root@test ~]# lftp 192.168.0.188 
lftp 192.168.0.188:~> cd pub
cd ok, cwd=/pub
lftp 192.168.0.188:/pub> mkdir anon_test
mkdir ok, `anon_test' created  #test目錄順利創(chuàng)建完成
lftp 192.168.0.188:/pub> lcd /etc/
lcd ok, local cwd=/etc
lftp 192.168.0.188:/pub> put fstab   #測(cè)試文件上傳也成功
465 bytes transferred
lftp 192.168.0.188:/pub> ls
drwx------    2 14       50              6 Apr 23 17:08 anon_test
-rw-------    1 14       50            465 Apr 23 17:09 fstab
lftp 192.168.0.188:/pub> rm fstab #刪除文件也可以
rm ok, `fstab' removed
lftp 192.168.0.188:/pub> rmdir anon_test/  #刪除目錄頁(yè)ok
rmdir ok, `anon_test/' removed
本地用戶(hù)認(rèn)證

本地用戶(hù)認(rèn)證是指使用FTP服務(wù)器中的用戶(hù)賬號(hào)密碼進(jìn)行登錄,Linux系統(tǒng)中是指/etc/passwd中的本地用戶(hù),vsftp服務(wù)默認(rèn)也是允許了本地用戶(hù)認(rèn)證,我們需要對(duì)本地用戶(hù)認(rèn)證后的權(quán)限進(jìn)行設(shè)置

[root@ftp ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO  #先取消匿名登錄,以免影響測(cè)試
local_enable=YES
write_enable=YES
local_umask=022
userlist_enable=YES
userlist_deny=NO

編輯/etc/vsftpd/user_list用戶(hù)文件

[root@ftp ~]# vim /etc/vsftpd/user_list# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
charlie  #刪除原有的系統(tǒng)用戶(hù),新增登錄本地用戶(hù)

重啟vsftpd服務(wù)

[root@ftp ~]# systemctl restart vsftpd

在ftp客戶(hù)端測(cè)試登錄

[root@test ~]# lftp 192.168.0.188 -u charlie
Password: 
lftp charlie@192.168.0.188:~>    
lftp charlie@192.168.0.188:~> pwd
ftp://charlie@192.168.0.188  #此時(shí)位于charlie的家目錄中
lftp charlie@192.168.0.188:~> lcd /etc
lcd ok, local cwd=/etc
lftp charlie@192.168.0.188:~> put fstab  #測(cè)試上傳文件成功
465 bytes transferred
lftp charlie@192.168.0.188:~> mkdir local_test  #測(cè)試創(chuàng)建目錄成功
mkdir ok, `local_test' created
lftp charlie@192.168.0.188:~> rm fstab  #測(cè)試刪除文件成功
rm ok, `fstab' removed
lftp charlie@192.168.0.188:~> rmdir local_test  #測(cè)試刪除目錄成功
rmdir ok, `local_test' removed
lftp charlie@192.168.0.188:~> cd /etc/
cd ok, cwd=/etc                   
lftp charlie@192.168.0.188:/etc> get passwd  #測(cè)試下載文件成功
1553 bytes transferred

通過(guò)測(cè)試發(fā)現(xiàn),本地用戶(hù)能切換到/etc目錄,并且能夠下載passwd文件,這存在一定安全風(fēng)險(xiǎn),vsftp服務(wù)可以讓我們把本地用戶(hù)的訪(fǎng)問(wèn)路徑限制在其對(duì)應(yīng)的家目錄:

[root@ftp ~]# vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES  #找到對(duì)應(yīng)的參數(shù)并取消注釋
allow_writeable_chroot=YES  #允許禁錮的FTP根目錄可寫(xiě)而不拒絕用戶(hù)的登錄請(qǐng)求
#chroot_list_file=/etc/vsftpd/chroot_list 也可以通過(guò)用戶(hù)文件來(lái)指定禁錮的用戶(hù)范圍

2.3.5之后,vsftpd增強(qiáng)了安全檢查,如果用戶(hù)被限定在了其主目錄下,則該用戶(hù)的主目錄不能再具有寫(xiě)權(quán)限了!如果檢查發(fā)現(xiàn)還有寫(xiě)權(quán)限,就會(huì)報(bào)錯(cuò)誤put: Login failed: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()。但是取消了主目錄的寫(xiě)權(quán)限后,用戶(hù)自己本身也不能對(duì)主目錄進(jìn)行修改了,如果還想能在對(duì)主目錄擁有寫(xiě)權(quán)限,可以使用allow_writeable_chroot=YES參數(shù)。

在FTP客戶(hù)端測(cè)試

[root@test ~]# lftp 192.168.0.188 -u charlie
Password: 
lftp charlie@192.168.0.188:~>         
lftp charlie@192.168.0.188:~> cd /etc\
> 
lftp charlie@192.168.0.188:/> cd /etc
cd: Access failed: 550 Failed to change directory. (/etc)
lftp charlie@192.168.0.188:/> lcd /etc
lcd ok, local cwd=/etc
lftp charlie@192.168.0.188:/> put fstab 
465 bytes transferred
lftp charlie@192.168.0.188:/> mkdir test
mkdir ok, `test' created
lftp charlie@192.168.0.188:/> rm fstab 
rm ok, `fstab' removed
lftp charlie@192.168.0.188:/> rmdir test
rmdir ok, `test' removed
lftp charlie@192.168.0.188:/> lcd /root/
lcd ok, local cwd=/root
lftp charlie@192.168.0.188:/> get hello 

此時(shí)除了無(wú)法切換到其他目錄之外,其上傳下載,新增刪除文件或目錄都能正常進(jìn)行

虛擬用戶(hù)認(rèn)證(基于MySQL)

虛擬用戶(hù)認(rèn)證是指使用vsftp服務(wù)獨(dú)立維護(hù)的FTP賬號(hào)密碼進(jìn)行登錄訪(fǎng)問(wèn),虛擬用戶(hù)認(rèn)證所使用的賬號(hào)和密碼都不是系統(tǒng)中真實(shí)存在的,所以其安全性比本地用戶(hù)更好。由于ftp服務(wù)使用明文傳,如果使用本地用戶(hù)認(rèn)證,會(huì)導(dǎo)致其他用戶(hù)在客戶(hù)端訪(fǎng)問(wèn)FTP服務(wù)器的路徑之間進(jìn)行抓包,就能獲取相應(yīng)的系統(tǒng)本地用戶(hù)信息。

安裝所需要程序

安裝mysql和pam_mysql

[root@ftp ~]# yum -y install vsftpd mysql-server mysql-devel pam_mysql

注意:pam_mysql由epel源提供

由于系統(tǒng)自帶的pam認(rèn)證默認(rèn)不支持mysql認(rèn)證,因此需要自己編譯安裝:

[root@vsftpd ~]# wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz --no-check-certificate  #獲取pam_mysql源碼包
100%[================================================================================================================>] 335,240     18.6KB/s 用時(shí) 18s    

2018-04-25 00:39:57 (18.6 KB/s) - 已保存 “pam_mysql-0.7RC1.tar.gz” [335240/335240])
[root@vsftpd ~]# yum groupinstall -y "development tools"  #安裝開(kāi)發(fā)環(huán)境組
#此處事先需安裝mariadb-devel和pam-devel包提供相應(yīng)的頭文件和鏈接庫(kù)給pam_mysql編譯使用
#否則會(huì)出現(xiàn)類(lèi)似報(bào)錯(cuò):configure: error: Cannot locate mysql client library.和configure: error: Cannot find pam headers
[root@vsftpd pam_mysql-0.7RC1]# yum install -y mariadb-devel pam-devel  openssl-devel 
[root@vsftpd ~]# tar xf pam_mysql-0.7RC1.tar.gz
[root@vsftpd ~]# cd pam_mysql-0.7RC1
[root@vsftpd ~]# ./configure --with-mysql=/usr --with-openssl=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security  #編譯pam_mysql
[root@vsftpd ~]# make && make install
[root@vsftpd ~]# ll /lib64/security/ | grep mysql
-rwxr-xr-x. 1 root root    882 4月  25 02:06 pam_mysql.la
-rwxr-xr-x. 1 root root 141673 4月  25 02:06 pam_mysql.so
創(chuàng)建虛擬用戶(hù)賬號(hào)

創(chuàng)建vsftpd數(shù)據(jù)庫(kù)

mysql> create database vsftpd;
 
mysql> grant select on vsftpd.* to vsftpd@'%' identified by 'vsftpd';
mysql> flush privileges;
 
mysql> use vsftpd;
mysql> create table users (
    -> id int AUTO_INCREMENT NOT NULL,
    -> name char(20) binary NOT NULL,
    -> password char(48) binary NOT NULL,
    -> primary key(id)
    -> );

添加測(cè)試的虛擬用戶(hù)

mysql> insert into users(name,password) values('tom',password('tom'));
mysql> insert into users(name,password) values('jerry',password('tom'));
建立pam認(rèn)證所需文件
[root@ftp ~]# vim /etc/pam.d/vsftpd.mysql
auth required /lib/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost
db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localh
ost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

注意:由于mysql的安裝方式不同,pam_mysql.so基于unix sock連接mysql服務(wù)器時(shí)可能會(huì)出問(wèn)題,
此時(shí),建議授權(quán)一個(gè)可遠(yuǎn)程連接的mysql并訪(fǎng)問(wèn)vsftpd數(shù)據(jù)庫(kù)的用戶(hù)。

創(chuàng)建FTP根目錄及虛擬用戶(hù)映射的系統(tǒng)用戶(hù)
[root@ftp ~]# useradd -s /sbin/nologin -d /var/ftproot vuser  
[root@ftp ~]# chmod go+rx /var/ftproot 
在vsftpd.conf中添加支持配置
[root@ftp ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES  #允許匿名登錄
local_enable=YES  #允許本地用戶(hù)模式,由于映射的系統(tǒng)用戶(hù)為本地用戶(hù),因此此項(xiàng)必須開(kāi)啟
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
guest_enable=YES  #開(kāi)啟虛擬用戶(hù)模式
guest_username=vuser  #指定虛擬用戶(hù)賬號(hào)
chroot_local_user=YES  #禁錮用戶(hù)在其家目錄
pam_service_name=vsftpd.mysql  #指定pam文件
user_config_dir=/etc/vsftpd/vusers_config  #配置vsftpd為虛擬用戶(hù)使用配置文件目錄
啟動(dòng)vsftpd服務(wù)
[root@ftp ~]# service vsftpd start
[root@ftp ~]# chkconfig vsftpd on
為虛擬用戶(hù)設(shè)置不同的權(quán)限
[root@ftp ~]# mkdir /etc/vsftpd/vusers_config/
[root@ftp ~]# cd /etc/vsftpd/vusers_config/
[root@ftp ~]# touch tom jerry

虛擬用戶(hù)對(duì)vsftpd服務(wù)的訪(fǎng)問(wèn)權(quán)限是通過(guò)匿名用戶(hù)的相關(guān)指令進(jìn)行的。比如,如果需要讓tom用
戶(hù)具有上傳文件的權(quán)限,可以修改/etc/vsftpd/vusers_config/tom文件,在里面添加如下選項(xiàng)即可

anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 圖片更清晰,文字在最下面 FTP是TCP/IP的一種應(yīng)用,使用TCP而不是UDP,所以是可靠的,面向連接的。 FT...
    停下浮躁的心閱讀 1,814評(píng)論 0 4
  • ftp 文件傳輸協(xié)議 跨平臺(tái) 上傳下載文件 vsftpd 工具:非常安全的文件傳輸協(xié)議;默認(rèn)的命令端口21號(hào),數(shù)據(jù)...
    柒夏錦閱讀 4,231評(píng)論 1 9
  • 端口:0 服務(wù):Reserved 說(shuō)明:通常用于分析操作系統(tǒng)。這一方法能夠工作是因?yàn)樵谝恍┫到y(tǒng)中“0”是無(wú)效端口,...
    蕭玄辭閱讀 1,283評(píng)論 0 2
  • 本文將針對(duì)ftp系統(tǒng)共介紹6部分,分別是ftp協(xié)議(雙重連接:控制和數(shù)據(jù)連接),ftp的主動(dòng)和被動(dòng)模式(區(qū)別/使用...
    robot_test_boy閱讀 15,229評(píng)論 6 19
  • 生命為什么不掛著鈴子? 不然丟了你, 怎么感到有有所亡失? ——蕭紅《沙粒.十七》 你還是那片最美的霞,...
    幻影幻心閱讀 613評(píng)論 4 13

友情鏈接更多精彩內(nèi)容