需求:使用vsftp建立虛擬帳戶,每一個帳戶都限制在定義的各自的根目錄裏。
環境:CentOS7.6linux
# yum ×××tall vsftpd libdb-utils
# vim /etc/vsftpd/vuser_list user0 passwd0 user1 passwd1
說明:上述文件vuser_list存放用戶名和密碼,奇數行爲帳號,偶數行爲密碼。數據庫
db_load -T -t hash -f /etc/vsftpd/vuser_list /etc/vsftpd/vuser_list.db
# 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
# mkdir /var/ftp/user0 # mkdir /var/ftp/user1
更改虛擬帳戶的宿主用戶vim
chown -R ftp.root /var/ftp
更改宿主目錄的權限以禁止匿名用戶進入ide
chmod 700 /var/ftp/*
說明:ui
# passwd ftp
此處使用了默認的ftp帳戶的主目錄,也能夠單首創建新的帳戶和主目錄,以下:code
# mkdir -p /data/ftp
# useradd -d /data/ftp vuser -s /sbin/nologin
# chmod 755 /data/ftp
# chown vuser.root /data/ftp
# 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
準備虛擬帳戶配置目錄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
開放ftp服務端口,--permanent做用是永久保存。it
# firewall-cmd --add-service=ftp --permanent success
從新加載防火牆設置
# firewall-cmd --reload success
# setsebool ftpd_full_access on -P
啓動服務
# systemctl start vsftpd
設置自啓動
# systemctl enable vsftpd
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列表裏的全部用戶都被限制在其家目錄裏面,可是該列表之外的用戶都不被限制在它們的家目錄裏面。詳細理解本身試驗。