版權聲明:轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明
http://blog.csdn.net/wenshuangzhu/article/details/44078949
本文說明如何利用Vsftpd虛擬用戶實現FTP用戶權限控制,只允許指定的FTP用戶上傳和下載文件,但不允許其刪除和重命名文件。
1. 修改vsftp主配置文件
# vi /etc/vsftpd.conf
修改以下參數
anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
chroot_list_enable=YES #YES:將chroot_list中列出來的用戶轉到其在user_config_dir下面定義的文件中指定的目錄。NO:就是系統用戶的默認目錄
chroot_list_file=/etc/vsftpd/chroot_list #這是我們放置chroot用戶的文件,後面我們要建立
增加以下參數
userlist_enable=YES
userlist_deny=NO
user_config_dir=/etc/vsftpd/vsftpd_user_conf #虛擬用戶的配置文件的主目錄,後面我們建立虛擬用戶配置文件時建立此目錄
guest_enable=YES
guest_username=vms #虛擬用戶映射的系統用戶,後面我們要建立
2. 修改PAM驗證
修改/etc/pam.d/vsftpd,這個文件名與/etc/vsftpd.conf中的pam_service_name=vsftpd相對應。
註釋掉所有參數,在最後面加入下面兩行
auth sufficient/lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login #/vsftpd_login是要建立的驗證文件,真正的文件是vsftpd_login.db,這裏不能有後綴
accountsufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login #機器是64位,如果是32位的,用lib取代
3. 建立虛擬宿主用戶
虛擬用戶並不是系統用戶,也就是說這些FTP的用戶在系統中是不存在的。他們的總體權限其實是集中寄託在一個在系統中的某一個用戶身上的,所謂Vsftpd的虛擬宿主用戶,就是這樣一個支持着所有虛擬用戶的宿主用戶。
創建系統用戶vms作爲虛擬用戶的宿主用戶,也可以使用已有的系統用戶
# useradd -d /home/vms vms
# mkdir /home/vms
# chown vms:vmsgroup /home/vms
# chmod 700 /home/vms
4. 創建虛擬用戶
創建/etc/vsftpd目錄(如果已存在則不需再創建)
# mkdir /etc/vsftpd
編輯虛擬用戶信息
# vi /etc/vsftpd/login.txt
添加虛擬用戶名和密碼,一行用戶名,一行密碼,以此類推。奇數行爲用戶名,偶數行爲密碼。下面的示例中添加的虛擬用戶爲ftpuser,用戶密碼爲password。
# vsftpd virtualuser
ftpuser
password
5. 編譯虛擬用戶信息
運行下面的命令,編譯虛擬用戶信息
# db_load -T -thash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db
6. 增加chroot_list信息
增加chroot_list信息,也就是虛擬用戶名,如果沒有此用戶,目錄會落在vms建立時指定的目錄,chroot_list文件路徑由/etc/vsftpd.conf中的chroot_list_file參數指定。
# vi /etc/vsftpd/chroot_list
添加以下內容
# vsftpd virtualuser
ftpuser
7. 增加vsftpd.user_list信息
內容與chroot_list一樣,放在/etc/目錄下,否則定義的虛擬用戶無法登錄。可以直接拷貝chroot_list文件至/etc目錄並重命名爲vsftpd.user_list
# cp /etc/vsftpd/chroot_list /etc/vsftpd.user_list
8. 建立虛擬用戶自身配置文件
各個虛擬用戶自定義配置文件的存放路徑由/etc/vsftpd.conf中的user_config_dir參數指定。在該目錄下增加虛擬用戶自定義信息,文件名字與虛擬用戶名一致。如果此目錄下沒有用戶的自定義配置文件,就使用/etc/vsftpd.conf的默認配置。
新建虛擬用戶配置自定義配置文件存放目錄
# mkdir /etc/vsftpd/vsftpd_user_conf
#vi /etc/vsftpd/vsftpd_user_conf/ftpuser
添加以下內容:
local_root=/home/vms/sdr/work #虛擬用戶的根目錄,需要預先建立並賦予相應權限
write_enable=YES #開放虛擬用戶的寫權限
anon_world_readable_only=NO #開放虛擬用戶的下載權限
anon_upload_enable=YES #開放虛擬用戶的上傳權限
anon_mkdir_write_enable=YES #開放虛擬用戶創建目錄的權限
anon_other_write_enable=NO #禁止虛擬用戶刪除、重命名目錄和文件
保存,退出。
9. 重啓vsftpd服務
# service vsftpd restart