ftp虚拟用户配置,方便对用户的管理
环境配置
配置ip地址
nmcli connection up ens160
nmcli connection modify ens160 ipv4.addresses 10.10.100.1/24
安装ftp服务
yum -y install vsftpd
配置防火墙
关闭防火墙
systemctl stop firewalld.service
临时放行防火墙
firewall-cmd --add-service=ftp
永久放行防火墙
firewall-cmd --add-service=ftp --permanent
临时关闭selinux
创建用户
创建一个系统账号用于映射虚拟账号,把家目录设置为/var/ftp/virftp,不让用户登录系统
useradd -d /var/ftp/virftp -s /sbin/nologin ftpuser
更改家目录权限为755,让虚拟用户顺利访问
chmod 755 /var/ftp/virftp/
改一下系统默认的shell,让nologin这个shell也能登录系统
echo /sbin/nologin >> /etc/shells
创建一个文件
创建一个文件用于存放虚拟用户的账号密码,把他转换成db数据库文件,目录可以自己定
奇数行用于存放账号,偶数行用与存放密码
转换成db数据库文件,转换完删除明文的txt文件,文件名可以自定义
-T 参数表示非db文件转换成db文件
-t 参数表示用hash算法加密
-f 参数表示数据源文件位置
db_load -T -t hash -f ftplo.txt ftplo.db
rm -f ftplo.txt
给文件设置赋予600权限,只有root用户可以读写
配置pam模块
pam模块存放在 /etc/pam.d/目录下,pam是可热插拔式认证模块,是一种高效,灵活,便利的用户级别认证方式
新建一个名为vsftpd.vu的pam模块 #名字可以自定义
auth required pam_userdb.so db=/etc/vsftpd/ftplo
account required pam_userdb.so db=/etc/vsftpd/ftplo
第一列auth 对用户进行身份验证;account 对账号的属性进行检查,如是否可以登录第二列 required 必须满足所有条件,一个条件不满足都不过,相当于一票否决
第三列 pam_userdb.so 是调用系统的模块,路径在/lib64/security目录下
第四列 db=/etc/vsftpd/ftplo 是模块参数,指定要用的数据库文件
ftp服务配置
ftp主配置文件与匿名相似,虚拟用户类似匿名用户
anonymous_enable=NO //不允许匿名用户访问
local_enable=YES //允许本地用户访问,此项不要关闭,因为虚拟用户是映射在系统用户上的
write_enable=YES //允许用户写入
chroot_local_user=YES //将所有用户禁锢在一个目录,此项应配置allow_writeable_chroot使用
guest_enable=YES //启用虚拟账户
guest_username=ftpuser //虚拟账户映射的系统账户
user_config_dir=/etc/vsftpd/vconf //虚拟账户的配置文件路径
pam_service_name=vsftpd.vu //使用的pam模块allow_writeable_chroot=YES //允许有写入权限的账户也能访问ftp服务器
创建目录及配置权限
让张三用户的目录在/data/www/下,李四的目录在/data/html目录,并且不能切换目录,都可以写入
先创建目录
mkdir -p /data/www
mkdir -p /data/html
www目录创建zhangsan的txt文件,html创建lisi的txt文件
echo "hello" > /data/www/zhangsan.txt
echo "hello" > /data/html/lisi.txt
分别配置张三和李四虚拟用户的文件
创建管理虚拟用户配置文件的目录
mkdir /etc/vsftpd/vconf
创建zhangsan和lisi的文件,配置命令跟匿名用户的是一样的
张三
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/www李四
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/html
给ftpuser设置一下权限
setfacl -m u:ftpuser:wrx /data/www/
setfacl -m u:ftpuser:wrx /data/html/
重启一下ftp服务
systemctl restart vsftpd
测试
张三
李四
用系统用户测试一下能不能登录
登录失败,因为改了模块,改回默认的模块系统用户就能登录,虚拟用户就不能登录了