vsftpd 虛擬用戶的作用是 通過不同的虛擬用戶可以有不同的根目錄。
從 2.3.5 版本之后,vsftpd增強了安全檢查,如果用戶被限定在了其主目錄下,則該用戶的主目錄不能在具有寫權限了,如果檢查發現還有寫權限,就會報該錯誤!
500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
因此,本次分別用 Centos 6 和 Centos 7 來分別配置 vsftpd 虛擬用戶
1. Centos6 vsftpd-虛擬用戶配置
----------------------------------------------------
系統版本:CentOS release 6.7
vsftpd版本:vsftpd-2.2.2-24
虛擬用戶:hkey
虛擬用戶根目錄:/data/hkey
----------------------------------------------------
# yum install vsftpd -y # mkdir -pv /data/hkey # sed -i -e 's/^anonymous_enable=YES/anonymous_enable=NO/g' /etc/vsftpd/vsftpd.conf # sed -i -e 's/^write_enable=YES/#write_enable=YES/g' /etc/vsftpd/vsftpd.conf # sed -i -e 's/^#chroot_local_user=YES/chroot_local_user=YES/g' /etc/vsftpd/vsftpd.conf # sed -i -e 's/^pam_service_name=vsftpd/#pam_service_name=vsftpd/g' /etc/vsftpd/vsftpd.conf # sed -i -e 's/listen=NO/listen=YES/g' /etc/vsftpd/vsftpd.conf # sed -i -e 's/listen_ipv6=YES/#listen_ipv6=YES/g' /etc/vsftpd/vsftpd.conf # echo -e 'pam_service_name=vsftpd.vu virtual_use_local_privs=NO guest_enable=YES guest_username=root user_config_dir=/etc/vsftpd/vconf' >> /etc/vsftpd/vsftpd.conf
# egrep -v '^#|^$' /etc/vsftpd/vsftpd.conf #關閉匿名訪問 anonymous_enable=NO #啟用本地系統用戶,包括虛擬用戶 local_enable=YES #本地用戶umask值 local_umask=022 dirmessage_enable=YES #啟用日志 xferlog_enable=YES xferlog_std_format=YES #關閉ftp-data端口,相當於不使用主動模式 connect_from_port_20=YES #限制用戶不能離開FTP主目錄,啟用並設置例外用戶清單 chroot_local_user=YES #使用ipv4進行監聽 listen=YES #啟用全局用戶例外清單 userlist_enable=YES #啟用tcp封裝 tcp_wrappers=YES #pam認證文件名稱,位於/etc/pam.d/ pam_service_name=vsftpd.vu #虛擬用戶權限是否與本地用戶相同。為NO時,將與匿名用戶的權限相同,在每個虛擬用戶配置文件里設置匿名用戶的選項等於虛擬用戶的權限 virtual_use_local_privs=NO #啟用guest后,所有非匿名用戶將映射到guest_username進行訪問,包括本地系統用戶也不能使用,並且轉換成一個虛擬用戶,與其他虛擬用戶的配置方法一樣 guest_enable=YES # 虛擬用戶使用的主用戶(這里使用 root是為了比較方便配置各種目錄) guest_username=root #虛擬用戶配置文件目錄 user_config_dir=/etc/vsftpd/vconf
# mkdir /etc/vsftpd/vconf/ # 一行用戶名,一行密碼,嚴格遵守這樣的格式 # cat /etc/vsftpd/vuser.txt hkey hkey123 # 生成數據庫 # db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db # 添加認證文件 # cat /etc/pam.d/vsftpd.vu auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
【開放所有權限】
# cat /etc/vsftpd/vconf/hkey local_root=/data/hkey # 設置登錄后禁錮的根目錄 write_enable=yes # 開發寫權限 anon_world_readable_only=no # 開放下載權限 anon_upload_enable=yes # 開放上傳權限 anon_mkdir_write_enable=yes # 開放創建目錄的權限 anon_other_write_enable=yes # 開放刪除和重命名的權限
【只開啟上傳下載權限】
# cat /etc/vsftpd/vconf/hkey local_root=/data/hkey write_enable=YES anon_world_readable_only=no anon_upload_enable=yes
2. Centos7 vsftpd-虛擬用戶配置
----------------------------------------------------
系統版本:CentOS release 7.0
vsftpd版本:vsftpd-3.0.2-22
虛擬用戶:hkey
虛擬用戶根目錄:/data/hkey
----------------------------------------------------
# yum install vsftpd -y
# mkdir -pv /data/hkey
# sed -i -e 's/^anonymous_enable=YES/anonymous_enable=NO/g' /etc/vsftpd/vsftpd.conf
# sed -i -e 's/^write_enable=YES/#write_enable=YES/g' /etc/vsftpd/vsftpd.conf
# sed -i -e 's/^#chroot_local_user=YES/chroot_local_user=YES/g' /etc/vsftpd/vsftpd.conf
# sed -i -e 's/^pam_service_name=vsftpd/#pam_service_name=vsftpd/g' /etc/vsftpd/vsftpd.conf
# sed -i -e 's/listen=NO/listen=YES/g' /etc/vsftpd/vsftpd.conf
# sed -i -e 's/listen_ipv6=YES/#listen_ipv6=YES/g' /etc/vsftpd/vsftpd.conf
# echo -e 'pam_service_name=vsftpd.vu
virtual_use_local_privs=NO
guest_enable=YES
guest_username=vuser
user_config_dir=/etc/vsftpd/vconf
allow_writeable_chroot=YES' >> /etc/vsftpd/vsftpd.conf
# mkdir /etc/vsftpd/vconf/ # 一行用戶名,一行密碼,嚴格遵守這樣的格式 # cat /etc/vsftpd/vuser.txt hkey hkey123 # 生成數據庫 # db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db # 添加認證文件 # cat /etc/pam.d/vsftpd.vu auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
【開放所有權限】
# cat /etc/vsftpd/vconf/hkey local_root=/data/hkey # 設置登錄后禁錮的根目錄 write_enable=yes # 開發寫權限 anon_world_readable_only=no # 開放下載權限 anon_upload_enable=yes # 開放上傳權限 anon_mkdir_write_enable=yes # 開放創建目錄的權限 anon_other_write_enable=yes # 開放刪除和重命名的權限
【只開啟上傳下載權限】
# cat /etc/vsftpd/vconf/hkey
local_root=/data/hkey write_enable=YES anon_world_readable_only=no anon_upload_enable=yes
