在生产环境中,ftp服务器
关闭防火墙和selinux
systemctl stop firewalld setenforce 0
# yum -y install vsftpd* 已加载插件:fastestmirror, langpacks base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 Loading mirror speeds from cached hostfile * base: mirrors.huaweicloud.com * extras: mirrors.huaweicloud.com * updates: mirrors.huaweicloud.com 正在解决依赖关系 --> 正在检查事务 ---> 软件包 vsftpd.x86_64.0.3.0.2-22.el7 将被 安装 ---> 软件包 vsftpd-sysvinit.x86_64.0.3.0.2-22.el7 将被 安装 --> 解决依赖关系完成 依赖关系解决 =================================================================================================================== Package 架构 版本 源 大小 =================================================================================================================== 正在安装: vsftpd x86_64 3.0.2-22.el7 base 169 k vsftpd-sysvinit x86_64 3.0.2-22.el7 base 23 k 事务概要 =================================================================================================================== 安装 2 软件包 总下载量:192 k 安装大小:351 k Downloading packages: (1/2): vsftpd-3.0.2-22.el7.x86_64.rpm | 169 kB 00:00:00 (2/2): vsftpd-sysvinit-3.0.2-22.el7.x86_64.rpm | 23 kB 00:00:01 ------------------------------------------------------------------------------------------------------------------- 总计 95 kB/s | 192 kB 00:00:02 Running transaction check Running transaction test Transaction test succeeded Running transaction 正在安装 : vsftpd-3.0.2-22.el7.x86_64 1/2 正在安装 : vsftpd-sysvinit-3.0.2-22.el7.x86_64 2/2 验证中 : vsftpd-sysvinit-3.0.2-22.el7.x86_64 1/2 验证中 : vsftpd-3.0.2-22.el7.x86_64 2/2 已安装: vsftpd.x86_64 0:3.0.2-22.el7 vsftpd-sysvinit.x86_64 0:3.0.2-22.el7 完毕!
systemctl start vsftpd ps -fe |grep vsftpd root 4341 1 0 10:23 ? 00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf root 4351 4112 0 10:23 pts/1 00:00:00 grep --color=auto vsftpd
Vsftpd.conf默认配置文件详解如下
anonymous_enable=YES 开启匿名用户访问; local_enable=YES 启用本地系统用户访问; write_enable=YES 本地系统用户写入权限; local_umask=022 本地用户创建文件及目录默认权限掩码; dirmessage_enable=YES 打印目录显示信息,通常用于用户第一次访问目录时,信息提示; xferlog_enable=YES 启用上传/下载日志记录; connect_from_port_20=YES FTP使用20端口进行数据传输; xferlog_std_format=YES 日志文件将根据xferlog的标准格式写入; listen=NO Vsftpd不以独立的服务启动,通过Xinetd服务管理,建议改成YES; listen_ipv6=YES 启用IPV6监听; pam_service_name=vsftpd 登录FTP服务器,依据/etc/pam.d/vsftpd中内容进行认证; userlist_enable=YES vsftpd.user_list和ftpusers配置文件里用户禁止访问FTP; tcp_wrappers=YES 设置vsftpd与tcp wrapper结合进行主机的访问控制,Vsftpd服务器检查/etc/hosts.allow 和/etc/hosts.deny中的设置,来决定请求连接的主机,是否允许访问该FTP服务器。
1,设置匿名用户访问。
启动Vsftpd服务后,通过Windows客户端资源管理器访问Vsftp服务器端
匿名用户只有查看权限,无法创建、删除、修改
如果允许匿名用户能够上传、下载、删除文件,需在/etc/vsftpd/vsftpd.conf配置文件中加入如下代码:
anon_upload_enable=YES 允许匿名用户上传文件; anon_mkdir_write_enable=YES 允许匿名用户创建目录; anon_other_write_enable=YES 允许匿名用户其他写入权限。
匿名用户完整vsftpd.conf配置文件代码如下:
anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YE
由于默认Vsftpd匿名用户有两种:anonymous、ftp,所以匿名用户如果需要上传文件、删除及修改等权限,需要ftp用户对/var/ftp/pub目录有写入权限,使用如下chown和chmod任意一种即可,设置命令如下:
chown -R ftp /var/ftp/pub/
如上Vsftpd.conf配置文件配置完毕,同时权限设置完,重启vsftpd服务即可,通过Windows客户端访问,能够上传文件、删除文件、创建目录等操作
Vsftpd系统用户配置
实现Vsftpd系统用户方式验证,只需在Linux系统中创建多个用户即可,创建用户使用useradd,同时给用户设置密码,即可通过用户和密码登录FTP,进行文件上传、下载、删除等操作。Vsftpd系统用户实现方法步骤如下:
(1) Linux系统中创建系统用户zhangsan、lisi,分别设置密码为123456:
useradd zhangsan useradd lisi echo 123456|passwd --stdin jfedu1 echo 123456|passwd --stdin jfedu2
(1) 修改vsftpd.conf配置文件代码如下:
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
通过Windows资源客户端验证,使用zhangsan、lisi用户登录FTP服务器,即可上传文件、删除文件、下载文件,zhangsan、lisi系统用户上传文件的家目录在/home/zhangsan、/home/lisi下
# cd /home/zhangsan/ # pwd /home/zhangsan # ls 1234.txt 123.txt lala
Vsftpd虚拟用户配置
Vsftpd虚拟用户原理:虚拟用户就是没有实际的真实系统用户,而是通过映射到其中一个真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登录Linux系统,从而让系统更加的安全可靠。
Vsftpd虚拟用户企业案例配置步骤如下:
(1) 安装Vsftpd虚拟用户需用到的软件及认证模块:
# yum -y install pam* libdb-utils libdb* --skip-broken
(2)创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,新建虚拟用户和密码,其中wangwu、jzhaoliu为虚拟用户名,123456为密码,如果有多个用户,依次格式填写即可:
# cat /etc/vsftpd/ftpuser.txt wangwu 123456 zhaoliu 123456
(3) 生成Vsftpd虚拟用户数据库认证文件,设置权限700:
db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/vsftpd_login.db
chmod 700 /etc/vsftpd/vsftpd_login.db
配置PAM认证文件,/etc/pam.d/vsftpd行首加入如下两行
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login account required pam_userdb.so db=/etc/vsftpd/vsftpd_login
所有Vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用,创建命令如下:
useradd -s /sbin/nologin ftpuser
(1) 完整vsftpd.conf配置文件代码如下:
anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES userlist_enable=YES tcp_wrappers=YES #config virtual user FTP pam_service_name=vsftpd 虚拟用户启用pam认证; guest_enable=YES 启用虚拟用户 guest_username=ftpuser 映射虚拟用户至系统用户ftpuser user_config_dir=/etc/vsftpd/vsftpd_user_conf 设置虚拟用户配置文件所在的目录; virtual_use_local_privs=YES 虚拟用户使用与本地用户相同的权限。
(1) 至此,所有虚拟用户共同基于/home/ftpuser主目录实现文件上传与下载,可以在/etc/vsftpd/vsftpd_user_conf目录创建虚拟用户各自的配置文件,创建虚拟用户配置文件主目录:
mkdir -p /etc/vsftpd/vsftpd_user_conf/
(1) 如下分别为虚拟用户wangwu、zhaoliu用户创建配置文件:
vim /etc/vsftpd/vsftpd_user_conf/wangwu,同时创建私有的虚拟目录,代码如下:
local_root=/home/ftpuser/wangwu jfedu002虚拟用户配置文件路径 write_enable=YES 允许登陆用户有写权限; anon_world_readable_only=YES 允许匿名用户下载,然后读取文件; anon_upload_enable=YES 允许匿名用户上传文件权限,只有在write_enable=YES时该参数才生效;
anon_mkdir_write_enable=YES 允许匿名用户创建目录,只有在write_enable=YES时该参数才生效;
anon_other_write_enable=YES 允许匿名用户其他权限,例如删除、重命名等。
vim /etc/vsftpd/vsftpd_user_conf/zhaoliu,同时创建私有的虚拟目录,代码如下:
local_root=/home/ftpuser/zhaoliu write_enable=YES anon_world_readable_only=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
(1) 创建虚拟用户各自虚拟目录:
mkdir -p /home/ftpuser/{wangwu,zhaoliu} ;chown -R ftpuser:ftpuser /home/ftpuser
重启Vsftpd服务,通过Windows客户端资源管理器登录Vsftpd服务端,测试结果