vsftp配置虛擬帳戶

需求:使用vsftp建立虛擬帳戶,每一個帳戶都限制在定義的各自的根目錄裏。
環境:CentOS7.6linux

1.安裝必須的軟件包

# yum ×××tall vsftpd libdb-utils

2.設置虛擬帳戶信息(使用文件存儲)

2.1 建立明文帳戶信息

# vim /etc/vsftpd/vuser_list

user0
passwd0
user1
passwd1

說明:上述文件vuser_list存放用戶名和密碼,奇數行爲帳號,偶數行爲密碼。數據庫

2.2 建立數據庫帳戶信息

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

3.設置基於虛擬用戶驗證的PAM文件

# vim /etc/pam.d/vsftpd.vuser 
auth required /lib64/security/pam_userdb.so  db=/etc/vsftpd/vuser_list
account required /lib64/security/pam_userdb.so  db=/etc/vsftpd/vuser_list

4.建立虛擬帳戶的主目錄

# mkdir /var/ftp/user0
# mkdir /var/ftp/user1

更改虛擬帳戶的宿主用戶vim

chown -R ftp.root /var/ftp

更改宿主目錄的權限以禁止匿名用戶進入ide

chmod 700 /var/ftp/*

說明:ui

  1. ftp默認祕密爲空,建議使用修改密碼,執行以下命令並按提示輸入新的密碼。
    # passwd ftp
  2. 此處使用了默認的ftp帳戶的主目錄,也能夠單首創建新的帳戶和主目錄,以下:code

    • 創建ftp用戶目錄
      # mkdir -p /data/ftp
    • 建立用戶
      # useradd -d /data/ftp vuser -s /sbin/nologin
    • 更改權限
      # chmod 755 /data/ftp
    • 更改宿主帳戶
      # chown vuser.root /data/ftp

5.修改vsftpd的配置文件

# vim /etc/vsftpd/vsftpd.conf

# 禁止匿名用戶
anonymous_enable=NO
# 容許本地帳戶登錄
local_enable=YES
# 設置本地帳戶的主目錄
local_root=/var/ftp
# 容許寫入
write_enable=YES
# 設置上傳寫入掩碼
local_umask=022
# 設置主動方式鏈接(能夠應用與NAT環境)
connect_from_port_20=YES
# 改變上傳文件的宿主帳戶
chown_upload=YES
chown_username=ftp
# 設置排他用戶
chroot_local_user=YES
# 設置監聽IPv4地址
listen=YES
listen_ipv6=NO
# 設置PAM文件
pam_service_name=vsftpd.vuser
# 開啓虛擬用戶
guest_enable=YES
guest_username=ftp
# 虛擬用戶權限配置目錄:'vuser_conf'
user_confg_dir=/etc/vsftpd/vuser_conf
#
userlist_enable=YES
allow_writeable_chroot=YES

6. 設置每一個虛擬帳戶的配置文件

準備虛擬帳戶配置目錄ip

mkdir -p /etc/vsftpd/vuser_conf

建立虛擬帳戶的個性化配置文件,每一個帳戶的配置文件名與帳戶名一致,以user0爲例進行說明。cmd

# vim /etc/vsftpd/vuser_conf/user0

#設置登陸後禁錮的目錄
local_root=/var/ftp/user0
#開放寫權限
write_enable=yes
#開放下載權限
anon_world_readable_only=no
#開放上傳權限
anon_upload_enable=yes
#開放建立目錄的權限
anon_mkdir_write_enable=yes
#開放刪除和重命名的權限
anon_other_write_enable=yes

以上是全部的權限,能夠根據須要進行刪除。hash

7.更改防火牆設置

開放ftp服務端口,--permanent做用是永久保存。it

# firewall-cmd --add-service=ftp --permanent
success

從新加載防火牆設置

# firewall-cmd --reload
success

8.更改SELinux設置

# setsebool ftpd_full_access on -P

9.啓動vsftpd

啓動服務

# systemctl start vsftpd

設置自啓動

# systemctl enable vsftpd

10.其餘說明

  1. 增刪帳戶
    增刪除帳戶只須要編輯明文帳戶,從新生成db文件便可,另外記得新建/刪除相應的虛擬帳戶的主目錄。
  2. 錯誤處理:
    • 錯誤1:226 Transfer done (but failed to open directory)
      解決:selinux 和防火牆致使
    • 錯誤2:500 OOPS: vsftpd: refusing to run with writable root ×××ide chroot()
      解決:配置文件中加入 allow_writeable_chroot=YES 針對標準vsftpd(standonly)模式,而後重啓ftp
  3. chroot的相關選項:
    chroot_local_user=YES|NO
    chroot_list_enable=YES|NO
    chroot_list_file=/etc/vsftpd/chroot_list

    該選項的做用是禁錮ftp的本地用戶於家目錄之中。 可是限制和不限制哪些用戶是相對於chroot_local_user是否開啓而言的。chroot_local_user和chroot_list_enable老是背道而馳。
    方式一:

    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list

    該方式代表/etc/vsftpd/chroot_list列表裏的全部帳號都被不會被限制在其家目錄裏面。列表之外的用戶都被限制。
    方式二:

    chroot_local_user=NO
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list

    該方式代表/etc/vsftpd/chroot_list列表裏的全部用戶都被限制在其家目錄裏面,可是該列表之外的用戶都不被限制在它們的家目錄裏面。詳細理解本身試驗。

  4. listen_ipv6=YES和listen=YES這兩個不能同時開啓,只能開啓其中一個。詳情看配置文件上有解釋。
相關文章
相關標籤/搜索