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