VSFTP虛擬用戶的配置
環境:rhel6.5-x64
方法一:使用預設配置
首先安裝vsftpd軟件包 yum -y install vsftpd //有可用的yum源
然後cd /usr/local/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS
然後查看置README按步驟即可完成設
#######簡單的操作是將設置好的配置文件全部拷貝到相應的目錄重啓服務即可
方法二:自己手動配置
1、創建一個本地的用戶,用於虛擬用戶的授權
useradd -d /home/ftpsite -s /sbin/nologin virtual //指定ftp站點和本地用戶名
目錄會自動創建,注意指定的ftp站點virtual必須有完全權限
可以在下面創建一個文件便於一會測試使用,文件virtual需有權限
2、建立虛擬用戶的數據庫文件
首先先建立一個用戶名和密碼的文本文件,用戶名和密碼各佔一行,如:login.txt
tom
123
zhangsan
456
然後生成數據庫文件(前提是必須安裝了db4-utils-4.7.25-18.el6_4.x86_64,某些系統是db3)
db_load -T -t hash -f login.txt /etc/vsftpd/login.db //這裏-f後面的文件必須是前面的用戶名和密碼文件,後面生成數據庫文件下面設置PAM模塊的時候會使用
chmod 600 /etc/vsftpd/login.db //在生成數據庫後就可以將前面的使用過的文本刪除了
3、設置pam模塊,認證虛擬用戶
cp vsftpd.pam /etc/pam.d/ftp //直接拷貝軟件文檔所給模版時,需要將pam_userdb.so前面的路徑去掉或者改成正確的或者直接刪除pam_userdb.so前面的路徑
或者修改/etc/pam.d/vsftpd,在文件中添加如下兩行
auth required pam_userdb.so db=/etc/vsftpd/login
account required pam_userdb.so db=/etc/vsftpd/login
###db就是指定虛擬用戶數據庫文件所在的路徑,不需要加後綴.db
###FTP服務默認識別名爲ftp的pam文件,如果名稱不是ftp,則需要修改配置文件添加
pam_service_name=vsftpd //vsftpd就是pam文件的名稱
4、修改配置文件
直接拷貝模版中的配置文件cp vsftpd.conf /etc/vsftpd/
###如果上述pam文件不是ftp,需要拷貝之後修改模版
或者是在原有的配置文件中修改一下主要參數
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES /禁錮家目錄,就是前面設置的/home/ftpsite
guest_enable=YES //啓用來賓用戶,必須打開
guest_username=virtual //設置用於虛擬授權的本地用戶名稱,本次爲vritual
listen=YES
listen_port=10021 //設置監聽的端口,默認爲21
pasv_min_port=30000
pasv_max_port=30999 //設置用於傳輸數據的臨時端口的範圍
#pam_service_name=vsftpd //設置pam認證的文件名稱,如果爲ftp則可以不寫這項
5、啓服務
Service vsftpd start
6、測試
ftp localhost 10021
然後輸入虛擬用戶測試下載
7、拓展:可以爲每個用戶設置單獨的配置文件
在配置文件中添加下面這行,指定用戶配置文件所在目錄
user_config_dir=/etc/vsftpd_user_conf
然後創建這個目錄mkdir /etc/vsftpd_user_conf
設置tom可以列出目錄,在/etc/vsftpd_user_conf目錄下創建文件tom
在tom文件中添加屬於tom的配置
anon_world_readable_only=NO
設置zhangsan有查看,和上傳的權限,在/etc/vsftpd_user_conf目錄下創建文件zhangsan
在zhangsan配置文件中添加
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
這樣的優勢就是可以分別設置用戶的權限,靈活,而且易於控制。
常見錯誤:
1、login fail
檢測pam文件的名稱看是否與配置文件中的一致,或者是看來賓用戶是否開啓
2、500 OOPS: cannot change directory:/home/virtual
這是因爲開啓了selinux後,ftp的布爾值沒有開啓
解決方法:要不關閉selinux
要不就設置setsebool -P ftpd_disable_trans 1
setsebool -P ftp_home_dir 1
###-P是永久生效的參數
然後查看getsebool -a | grep ftp
看上面修改的兩項是否爲on狀態
然後重啓服務
3、查看後報出一下錯誤
ls
227 Entering Passive Mode (192,168,4,150,120,110).
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
###列取目錄失敗,但是下載沒有任何問題
解決方法:
在配置文件中添加一行anon_world_readable_only=NO,但可能涉及到安全問題