Vsftpd配置虛擬用戶
Vsftpd配置虛擬用戶
1、VSFTPD的虛擬用戶介紹
VSFTPD的本地用戶本身是系統(tǒng)的用戶,除了可以登錄FTP服務(wù)器外,還可以登錄系統(tǒng)使用其他系統(tǒng)資源,而VSFTPD的虛擬用戶則是 FTP服務(wù)的專用用戶,虛擬用戶只能訪問(wèn)FTP服務(wù)器資源。對(duì)于只需要通過(guò)FTP對(duì)系統(tǒng)有讀寫權(quán)限,而不需要其他系統(tǒng)資源的用戶或情況來(lái)說(shuō),采用虛擬用戶方式是很適合的。
VSFTPD的虛擬用戶采用單獨(dú)的用戶名/口令保存方式,與系統(tǒng)賬號(hào)(passwd/shadow)分離,這大大增強(qiáng)了系統(tǒng)的安全性。 VSFTPD可以采用數(shù)據(jù)庫(kù)文件來(lái)保存用戶/口令,如hash;也可以將用戶/口令保存在數(shù)據(jù)庫(kù)服務(wù)器中,如MySQL等。VSFTPD驗(yàn)證虛擬用戶,則采用PAM方式。由于虛擬用戶的用戶名/口令被單獨(dú)保存,因此在驗(yàn)證時(shí),VSFTPD需要用一個(gè)系統(tǒng)用戶的身份來(lái)讀取數(shù)據(jù)庫(kù)文件或數(shù)據(jù)庫(kù)服務(wù)器以完成驗(yàn)證,這就是guest用戶,這正如同匿名用戶也需要有一個(gè)系統(tǒng)用戶ftp一樣。當(dāng)然,guest用戶也可以被認(rèn)為是用于映射虛擬用戶。
配置虛擬用戶分為幾部分:guest用戶的創(chuàng)建、用戶/口令的保存、PAM認(rèn)證配置、vsftpd.conf文件設(shè)置等。具體的配置方法,參考下面小節(jié)。注:在后面的例子中,假定存在虛擬用戶xiaotong和xiaowang。
2、 用戶創(chuàng)建和目錄設(shè)置
在系統(tǒng)中添加vsftpdguest用戶,作為虛擬用戶在系統(tǒng)中的代表。
- useradd vsftpdguest
當(dāng)虛擬用戶登錄后,所在的位置為vsftpdguest的自家目錄/home/vsftpdguest。如果要讓虛擬用戶登錄到/var/ftp等其他目錄,修改vsftpdguest的自家目錄即可。
3、配置文件的設(shè)置
?。?)基本設(shè)置。
在vsftpd.conf配置文件中,加入以下參數(shù):
- guest_enable=YES
- guest_username=vsftpdguest
(2)虛擬用戶的權(quán)限配置。
VSFTPD-1.2.0添加了virtual_use_local_privs參數(shù),當(dāng)該參數(shù)激活(YES)時(shí),虛擬用戶使用與本地用戶相同的權(quán)限。當(dāng)此參數(shù)關(guān)閉(NO)時(shí),虛擬用戶使用與匿名用戶相同的權(quán)限,這也就是VSFTPD-1.2.0之前版本對(duì)虛擬用戶權(quán)限的處理方法。這兩者種做法相比,后者更加嚴(yán)格一些,特別是在有寫訪問(wèn)的情形下。默認(rèn)情況下此參數(shù)是關(guān)閉的(NO)。
下面先介紹virtual_use_local_privs=NO時(shí),即VSFTPD-1.2.0之前版本對(duì)虛擬用戶權(quán)限的配置方法:
?、倏刂铺摂M用戶瀏覽目錄
如果讓用戶不能瀏覽目錄,但仍可以對(duì)文件操作,那么需要執(zhí)行以下二個(gè)步驟:一,配置文件中,anon_world_readable_only=YES。二,虛擬用戶目錄的權(quán)限改為只能由vsftpdguest操作:
- [root@hpe45 vsftpd]# chown vsftpdguest.vsftpdguest /home/vsftpdguest
- [root@hpe45 vsftpd]# chmod 700 /home/vsftpdguest
?、谠试S虛擬用戶上傳文件
- write_enable=YES
- anon_upload_enable=YES
③允許虛擬用戶修改文件名和刪除文件
- anon_other_write_enable=YES
由于以上選項(xiàng)的設(shè)置同樣會(huì)對(duì)匿名用戶生效。如果不想匿名用戶趁機(jī)擁有同樣的權(quán)限,最好是禁止匿名用戶登錄。
在VSFTPD-1.2.0中當(dāng)virtual_use_local_privs=YES時(shí),只需write_enable=YES,虛擬用戶就可以就擁有寫權(quán)限。
(3)虛擬用戶的其他配置
?、傧薅ㄌ摂M用戶在自家目錄。
- chroot_local_user=NO
- chroot_list_enable=YES
- chroot_list_file=/etc/vsftpd.chroot_list
在/etc/vsftpd.chroot_list文件中加入xiaotong和xiaowang。
或者,chroot_local_user=YES
?、谔摂M用戶的個(gè)人配置。
如果想讓個(gè)別的虛擬用戶擁有自己特別的配置,同樣可以建立虛擬用戶的個(gè)人配置文件。在主配置文件中加入:
user_config_dir=/etc/vsftpd/vsftpd_user_conf
生成/etc/vsftpd/vsftpd_user_conf目錄,在該目錄下建立與特定虛擬用戶同名的文件:
- [root@hpe45 vsftpd]# mkdir vsftpd_user_conf
- [root@hpe45 vsftpd]# cd vsftpd_user_conf
- [root@hpe45 vsftpd_user_conf]# touch xiaowang
然后在xiaowang文件中就可以加入專對(duì)xiaowang生效的選項(xiàng)設(shè)置了。
注:如果在個(gè)人配置文件中加入chroot_local_user=YES是無(wú)效的。
?。?)虛擬用戶個(gè)人目錄設(shè)置
大家可以發(fā)現(xiàn),無(wú)論是哪個(gè)虛擬用戶,登錄后所在的目錄都是/home/vsftpdguest,即都是guest_username用戶的自家目錄。下面,介紹如何為每個(gè)虛擬用戶建立自家目錄。
一種作法是在虛擬用戶的個(gè)人配置文件中使用local_root選項(xiàng)指定虛擬用戶的自家目錄。以xiaowang為例,在第上步的基礎(chǔ)上,首先/etc/vsftpd/vsftpd_user_conf/xiaowang文件中加入:
local_root=/home/xiaowang
新建xiaowang目錄,并將權(quán)限設(shè)為vsftpdguest:
- [root@hpe45 home]# mkdir xiaowang
- [root@hpe45 home]# chown vsftpdguest.vsftpdguest ./xiaowang
?。?)MySQL保存虛擬用戶
本節(jié)介紹如何將虛擬用戶的用戶名和口令保存在MySQL的數(shù)據(jù)庫(kù)中。這主要分二個(gè)部分,一是將用戶和口令保存在數(shù)據(jù)庫(kù),二是設(shè)置相應(yīng)的PAM 認(rèn)證。為了方便論述,做如下假定:數(shù)據(jù)庫(kù)vsftpdvu,表users,字段name和passwd用于保存虛擬用戶的用戶名和口令;為了安全,只授權(quán) vsftpdguest讀vsftpdvu數(shù)據(jù)庫(kù)的users表。
虛擬用戶的用戶名/口令的保存。這部分在MySQL數(shù)據(jù)庫(kù)中完成。首先,創(chuàng)建數(shù)據(jù)庫(kù)vsftpdvu以及表users,并插入虛擬用戶xiaotong、xiaowang。執(zhí)行以下命令:
- [root@hpe45 vsftpd]#mysql -p
- mysql mysql mysql mysql mysql mysql
然后,授權(quán)vsftpdguest只能讀vsftpdvu數(shù)據(jù)庫(kù)的users表。執(zhí)行以下命令:
- [root@hpe45 vsftpd]#mysql -u root mysql -p
- mysql mysql
如果要驗(yàn)證剛才的操作是否成功可以執(zhí)行下面命令:
- [root@hpe45 vsftpd]#mysql -u vsftpdguest -pi52serial0 vsftpdvu
【編輯推薦】