Linux搭建VSFTPD(FTP)服务
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中应用层的协议之一
提供文件共享服务
互联网上多的媒体资源和软件资源。绝大部分都是通过FTP服务器传递。
作用:
下面开始安装使用方法:
一、首先关闭防火墙以及SELinux
setenforce 0 # 临时关闭SELinux
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # 修改SELinux永久关闭,需要重开机reboot
sestatus # 查看是否关闭
SELinux status:disabled # 已关闭状态
systemctl stop firewalld # 停止关闭防火墙 systemctl enable firewalld # 开机关闭防火墙 systemctl disable firewalld # 开机关闭防火墙
二、安装vsftpd软件包
yum -y install vsftpd
三、配置vsftpd.conf文件、配置匿名用户登陆
write_enable=YES anon_umask=022 anonymous_enable=YES # 是否允许匿名用户登录ftp 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=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
四、开启FTP服务
systemctl restart vsftpd
直接访问linux主机IP地址ftp://xxx.xxx.xxx.xx即可。
下面配置虚拟用户登陆FTP
虚拟用户只能访问FTP服务,而不能访问本机系统
一、一样首先关闭SElinux和防火墙、创建虚拟FTP不可登陆用户账号
setenforce 0 # 临时关闭SELinux sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # 修改SELinux永久关闭,需要重开机reboot sestatus # 查看是否关闭 SELinux status:disabled # 已关闭状态 systemctl stop firewalld # 停止关闭防火墙 systemctl enable firewalld # 开机关闭防火墙 systemctl disable firewalld # 开机关闭防火墙
useradd -s /sbin/nglogin vu # 用vn代表虚拟用户
二、创建虚拟用户文件
[root@localhost ~]# cd /etc/vsftpd/ [root@localhost vsftpd]# vim user
三、创建数据文件
通过 db_load 工具创建出 Berkeley DB 格式的数据库文件
[root@localhost vsftpd]# db_load -T -t hash -f user user.db [root@localhost vsftpd]# ls app data ftpusers user user.db user_dir user_list vsftpd.conf vsftpd_conf_migrate.sh
备注:
-f 指定数据原文件
-T 允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件
-t hash 读取文件的基本办法
注意:
如果想多创建多个虚拟用户登陆,需要在user文件创建账号跟密码,删除user.db数据库文件,在重新创建数据库文件,即可
四、建立支持虚拟用户的PAM认证文件
[root@localhost pam.d]# cd /etc/pam.d/ [root@localhost pam.d]# vim /etc/pam.d/vsftpd.vu auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user
# 备注:
# 需对应刚出生成user.db文件
五、修改配置文件、修改之前可以先备份,以免发生错误
[root@localhost vsftpd]# vim vsftpd.conf write_enable=YES anonymous_enable=NO dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES userlist_enable=YES tcp_wrappers=YES allow_writeable_chroot=YES guest_enable=YES guest_username=vu pam_service_name=vsftpd.vu local_enable=YES local_umask=077 chroot_local_user=YES virtual_use_local_privs=YES user_config_dir=/etc/vsftpd/user_dir
六、常用的全局配置项
listen = YES # 是否以独立运行的方式监听服务 listen_address= 192.168.4.1 # 设置监听FTP服务的IP地址 listen_port = 21 # 设置监听FTP服务的端口号 write_enable = YES # 是否启用写入权限(上传、删除文件) download_enable = YES # 是否允许下载文件 dirmessage_enable = YES # 用户切换进入目录时,显示.message文件 xferlog_enable = YES # 启用日志文件,记录到/var/log/xferlog xferlog_std_format = YES # 启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式 connect_from_port_20 = YES # 允许服务器主动模式(从20端口建立数据连接) pasv_anable = YES # 允许服务器被动模式 pasv_max_port = 24600 # 设置被动模式服务器的最大端口号 pasv_min_port = 24500 # 设置被动模式服务器的最小端口号 pam_service_name = vsftpd # 用户认证的PAM文件设置(/etc/pam.d/vsftpd.vu) userlist_enable = YES # 是否启用user_list列表文件 userlist_deny = YES # 是否禁用user_list中的用户 max_clients = 0 # 限制并发客户端连接数 max_per_ip = 0 # 限制同一IP地址的并发连接数 tcp_wrappers = YES # 是否启用tcp_wrappers主机访问控制 chown_username = root # 表示匿名用户上传的文件的拥有人是root,默认关闭 ascii_upload_enable = YES # 表示是否允许用户可以上传一个二进制文件,默认是不允许的 ascii_download_enable = YES # 这个是代表是否允许用户可以下载一个二进制文件,默认是不允许的 nopriv_user = vsftpd # 设置支撑 vsftpd服务的宿主用户为手动建立的vsftpd用户 async_abor_enable = YES # 设定支持异步传输功能 ftpd_banner = Welcome to Awei FTP servers # 设定vsftpd的登陆标题 guest_enable = YES # 设置启用虚拟用户功能 guest_username = ftpuser # 指定虚拟用户的宿主用户 virtual_use_local_privs = YES # 设定虚拟用户的权限符合他们的宿主用户 user_config_dir = /etc/vsftpd/vconf # 设定虚拟用户个人vsftpd的配置文件存放路径
七、为用户建立独立的配置目录及文件
[root@localhost vsftpd]# mkdir /etc/vsftpd/user_dir [root@localhost vsftpd]# ls ftpusers user user.db user_dir user_list vsftpd.conf vsftpd_conf_migrate.sh [root@localhost vsftpd]# cd /etc/vsftpd/user_dir [root@localhost vsftpd]# vim zhao local_root=/etc/vsftpd/data # 虚拟用户数据的存放路径
八、创建虚拟用户数据存放目录
[root@localhost user_dir]# cd ../ [root@localhost vsftpd]# mkdir data [root@localhost vsftpd]# chmod 777 data/ [root@localhost vsftpd]# ll drwxrwxrwx 2 root root 84 11月 13 15:43 data
# 在重启vsftpd服务
systemctl restart vsftpd
测试
先使用匿名登录
接下来使用虚拟用户登陆