需求:使用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列表里的全部用户都被限制在其家目录里面,可是该列表之外的用户都不被限制在它们的家目录里面。详细理解本身试验。