在CentOS上通过vsftpd搭建基础的FTP服务,满足匿名用户只读、本地用户可读写的常见需求。
yum install vsftpd -y)。/data(本地用户主目录)和匿名用户目录/data/all;创建管理员用户admin(无家目录,用于管理匿名目录)和普通用户test(家目录/data/test)。/etc/vsftpd/vsftpd.conf,关键参数包括:anonymous_enable=YES(开启匿名)、local_enable=YES(允许本地用户)、chroot_local_user=YES(锁定用户至家目录)、anon_root=/data/all(匿名用户根目录)、local_root=/data(本地用户根目录)。admin(chown -R admin:admin /data/all);启动vsftpd并设置开机自启(systemctl restart vsftpd && systemctl enable vsftpd)。ftp://服务器IP,分别用匿名用户(仅能查看/data/all)和test用户(可上传/下载/data/test下的文件)验证功能。将vsftpd与Apache集成,实现通过Web界面管理FTP文件(如上传、下载、删除),提升文件管理的便捷性。
yum install httpd -y);启动并启用两者服务。firewall-cmd --permanent --add-service=ftp && firewall-cmd --reload)。http://服务器IP:8080)管理vsftpd用户及文件。通过vsftpd结合PAM和MySQL实现虚拟用户认证,解决公共账号密码泄露问题,支持不同用户差异化权限。
yum install vsftpd mariadb-server -y);启动MySQL服务。CREATE DATABASE vsftpd; CREATE TABLE users (name VARCHAR(50) PRIMARY KEY, password VARCHAR(50)););插入测试用户(INSERT INTO users VALUES ('tom', '123456'), ('jerry', '123456'););授权用户访问(GRANT ALL ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'centos'; FLUSH PRIVILEGES;)。/etc/pam.d/vsftpd.mysql,添加MySQL认证语句(auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=centos host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2)。/etc/vsftpd/vsftpd.conf,关键参数包括:pam_service_name=vsftpd.mysql(指定PAM服务)、guest_enable=YES(启用虚拟用户)、guest_username=vuser(虚拟用户映射的系统用户,需创建vuser并设置家目录/ftproot)。/etc/vsftpd/vusers_conf/tom允许上传、jerry禁止上传);设置上传目录权限(setfacl -m u:vuser:rwx /ftproot/upload)。tom(可上传)和jerry(不可上传)验证权限差异。将vsftpd与企业内部LDAP(域控)集成,实现域账号登录FTP,统一身份认证,避免重复创建账号。
yum install vsftpd nscd nss-pam-ldapd -y);配置LDAP客户端(/etc/nslcd.conf)指向域控服务器。/etc/vsftpd/vsftpd.conf,关键参数包括:anonymous_enable=NO(禁用匿名)、local_enable=YES(允许本地用户)、guest_enable=YES(启用虚拟用户)、guest_username=compiler(虚拟用户映射的系统用户,需创建compiler并设置家目录/opt)、pam_service_name=vsftpd(使用LDAP认证的PAM配置)。/etc/pam.d/vsftpd,添加LDAP认证语句(auth required /usr/lib64/security/pam_ldap.so、account required /usr/lib64/security/pam_ldap.so)。pcan1250)连接FTP服务器,验证是否能登录至映射目录(/opt),并执行上传、下载操作。在企业网络环境中,主动模式(PORT)常因防火墙拦截或NAT转换导致连接失败,需配置vsftpd使用被动模式(PASV)。
/etc/vsftpd/vsftpd.conf,关键参数包括:pasv_enable=YES(开启被动模式)、pasv_min_port=50000(被动模式最小端口)、pasv_max_port=50100(被动模式最大端口)、pasv_address=服务器公网IP(若服务器在NAT后,需指定公网IP)。firewall-cmd --permanent --add-port=50000-50100/tcp && firewall-cmd --reload)。