1. 程式人生 > >vsftpd服務器配置虛擬用戶

vsftpd服務器配置虛擬用戶

only 3.5 attr word ini 目錄 emc err chroot

添加宿主用戶

新建系統用戶vsftpd,用戶目錄為/home/wwwroot, 用戶登錄終端設為/bin/false(即使之不能登錄系統)

useradd vsftpd -d /home/wwwroot -s /bin/false

所配置的虛擬用戶其實都是映射成配置的宿主用戶。

建立虛擬用戶名單文件

touch /etc/vsftpd/virtusers

編輯虛擬用戶名單文件:

第一行賬號,第二行密碼,註意:不能使用root做用戶名,系統保留

vi /etc/vsftpd/virtusers

生成虛擬用戶數據文件

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

修改認證方式

修改/etc/pam.d/vsftpd配置文件

#%PAM-1.0
#session    optional     pam_keyinit.so    force revoke
#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
#auth       include password-auth
#account    include password-auth
#session    required     pam_loginuid.so
#session    include password-auth

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

註意:如果系統為32位,上面lib64改為lib,否則配置不生效。

建立虛擬用戶個人Vsftp的配置文件

建立目錄

mkdir /etc/vsftpd/vconf
cd /etc/vsftpd/vconf

編輯虛擬用戶配置文件

配置文件名必須為虛擬用戶名

touch web1
vi web1

添加以下內容

#設置用戶目錄
local_root=/home/wwwroot/web1/http/
#設置上傳文件的權限,掩碼表示
anon_umask=022
#其他設置
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_othr_write_enable=YES

配置vsftpd

編輯/etc/vsftpd/vsftpd.conf文件

anonymous_enable=NO //設定不允許匿名訪問 
local_enable=YES //設定本地用戶可以訪問。註:如使用虛擬宿主用戶,在該項目設定為NO的情況下所有虛擬用戶將無法訪問 
chroot_list_enable=YES //使用戶不能離開主目錄 
chroot_list_file=/etc/vsftpd/chroot_list
ascii_upload_enable=YES
ascii_download_enable=YES //設定支持ASCII模式的上傳和下載功能 
pam_service_name=vsftpd //PAM認證文件名。PAM將根據/etc/pam.d/vsftpd進行認證
##下面的配置在conf中手動添加
guest_enable=YES //設定啟用虛擬用戶功能 
guest_username=vsftpd //指定虛擬用戶的宿主用戶
allow_writeable_chroot=YES
user_config_dir=/etc/vsftpd/vuser_conf //設定虛擬用戶個人vsftp的CentOS FTP服務文件存放路徑。

重啟vsftpd服務器

systemctl restart vsftpd.service
  • 1

常見問題

上傳文件的權限配置

設置上傳之後文件的權限,有兩種情況:

  1. 如果使用vsftp的是本地用戶,則要修改配置文件中的 local_umask 的值。
  2. 如果使用vsftp的是虛擬用戶,則要修改配置文件中的 anon_umask 的值。

登陸ftp服務器,報錯:500 OOPS: vsftpd: refusing to run with writable root inside chroot()

原因在於,從vsftpd_2.3.5版開始,取消了登陸用戶的根目錄的可寫權限。
解決辦法1:
去掉該用戶根目錄的寫的權限,再新建一目錄,以後用新目錄
解決辦法2:
保持舊版的管理策略,ftp用戶根目錄還是可以設置為可寫權限。
在vsftpd.conf中添加如下配置

allow_writeable_chroot=YES

vsftpd服務器配置虛擬用戶