天天看點

vsftpd 虛拟使用者配置

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

# 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