閱讀549 返回首頁    go 中電雲集


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用戶,作為虛擬用戶在係統中的代表。

  1. useradd vsftpdguest  
  2.  

當虛擬用戶登錄後,所在的位置為vsftpdguest的自家目錄/home/vsftpdguest。如果要讓虛擬用戶登錄到/var/ftp等其他目錄,修改vsftpdguest的自家目錄即可。

3、配置文件的設置

(1)基本設置。

在vsftpd.conf配置文件中,加入以下參數:

  1. guest_enable=YES 
  2.  
  3. guest_username=vsftpdguest 
  4.  

(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操作:

  1. [root@hpe45 vsftpd]# chown vsftpdguest.vsftpdguest /home/vsftpdguest  
  2.  
  3. [root@hpe45 vsftpd]# chmod 700 /home/vsftpdguest  
  4.  

②允許虛擬用戶上傳文件

  1. write_enable=YES 
  2.  
  3. anon_upload_enable=YES 
  4.  

③允許虛擬用戶修改文件名和刪除文件

  1. anon_other_write_enable=YES 
  2.  

由於以上選項的設置同樣會對匿名用戶生效。如果不想匿名用戶趁機擁有同樣的權限,最好是禁止匿名用戶登錄。

在VSFTPD-1.2.0中當virtual_use_local_privs=YES時,隻需write_enable=YES,虛擬用戶就可以就擁有寫權限。

(3)虛擬用戶的其他配置

①限定虛擬用戶在自家目錄。

  1. chroot_local_user=NO 
  2.  
  3. chroot_list_enable=YES 
  4.  
  5. chroot_list_file=/etc/vsftpd.chroot_list  
  6.  

在/etc/vsftpd.chroot_list文件中加入xiaotong和xiaowang。

或者,chroot_local_user=YES

②虛擬用戶的個人配置。

如果想讓個別的虛擬用戶擁有自己特別的配置,同樣可以建立虛擬用戶的個人配置文件。在主配置文件中加入:

user_config_dir=/etc/vsftpd/vsftpd_user_conf

生成/etc/vsftpd/vsftpd_user_conf目錄,在該目錄下建立與特定虛擬用戶同名的文件:

  1. [root@hpe45 vsftpd]# mkdir vsftpd_user_conf  
  2.  
  3. [root@hpe45 vsftpd]# cd vsftpd_user_conf  
  4.  
  5. [root@hpe45 vsftpd_user_conf]# touch xiaowang  
  6.  

然後在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:

  1. [root@hpe45 home]# mkdir xiaowang  
  2.  
  3. [root@hpe45 home]# chown vsftpdguest.vsftpdguest ./xiaowang  
  4.  

(5)MySQL保存虛擬用戶

本節介紹如何將虛擬用戶的用戶名和口令保存在MySQL的數據庫中。這主要分二個部分,一是將用戶和口令保存在數據庫,二是設置相應的PAM 認證。為了方便論述,做如下假定:數據庫vsftpdvu,表users,字段name和passwd用於保存虛擬用戶的用戶名和口令;為了安全,隻授權 vsftpdguest讀vsftpdvu數據庫的users表。

虛擬用戶的用戶名/口令的保存。這部分在MySQL數據庫中完成。首先,創建數據庫vsftpdvu以及表users,並插入虛擬用戶xiaotong、xiaowang。執行以下命令:

  1. [root@hpe45 vsftpd]#mysql -p  
  2.  
  3. mysqlmysqlmysqlmysqlmysqlmysql  
  4.  

然後,授權vsftpdguest隻能讀vsftpdvu數據庫的users表。執行以下命令:

  1. [root@hpe45 vsftpd]#mysql -u root mysql -p  
  2.  
  3. mysqlmysql  
  4.  

如果要驗證剛才的操作是否成功可以執行下麵命令:

  1. [root@hpe45 vsftpd]#mysql -u vsftpdguest -pi52serial0 vsftpdvu

最後更新:2017-01-04 22:34:35

  上一篇:go 什麼是MRTG、RRDTool、Cacti、CactiEZ?
  下一篇:go cuteftp805解決雙線單IP主機上傳問題