FTP服务器搭建
一、FTP的概念和使用场景
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。
一般用于在网路文件的上传下载服务,主要用于提供下载服务,具有操作简单,适用范围广的优势,被广泛使用。
二、FTP的部署
部署环境:
OS:CentOS 7.7
FTP软件:vsftpd-3.0.2-25.el7.x86_64
LFTP软件:lftp-4.4.8-11.el7.x86_64
服务端部署:
s1,vsftpd安装:检查系统是否有安装vsftpd,如果没有就安装
命令:
rpm -qa |grep vsftpd || yum install vsftpd -y
vsftpd安装
s2,防火墙火墙添加ftp服务到白名单
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
ftp防火墙设置
查看防火墙放行的服务列表:
防火墙放行的服务名单
s3,开启vsftpd服务
systemctl start vsftpd
systemctl status vsftpd
启动vsftpd服务
如果需要随开机启动,请执行以下命令:
systemctl enable vsftpd
设置VSFTPD随系统启动
s4,(可选,在使用selinux服务的严格安全环境下)添加SElinux安全上下文
SELinux安全上下文
LFTP(客户端安装):
Linux 下常用的ftp操作命令有 ftp、 lftp ,图形化界面非常好用的有 FileZilla。但在服务器命令界面中,lftp使用比较方便,功能也比ftp更加强大,不仅可以操作ftp,还能使用lftp登录sftp服务器操作,非常方便友好。lftp的界面类似Linux的shell,有命令补全、历史记录、允许多个后台任务执行、书签、排队、镜像、断点续传、多进程下载等功能。推荐使用!
c1,lftp安装:
rpm -qa |grep lftp || yum install lftp -y
lftp安装
c2,客户端访问测试
客户端使用lftp访问主机(ls有内容显示,则代表登录成功,否则不成功,也可以使用ftp命令登录,此例不做赘述)
命令:
lftp 192.168.3.80
客户端与服务端
三、FTP服务的基本信息
默认发布目录:/var/ftp
协议接口:21/tcp
服务配置文件:/etc/vsftpd/vsftpd.conf
注意⚠️:编辑配置文件后,需要重启服务才能生效
报错id的解析:
- 500 文件系统权限过大
- 530 用户认证失败
- 550 服务本身功能未开启
- 553 本地文件系统权限过小
四、FTP的定制(安全)
ftp服务配置文件:/etc/vsftpd/vsftpd.conf
以下是对配置文件的简要说明,同时是将vsftpd.conf文件过滤掉解释部分,仅保留设置项目:
- anonymous_enable=YES (是否允许匿名用户登录,若允许则默认无需密码)
- local_enable=YES (是否允许本地用户登录)
- write_enable=YES (是否允许用户上传数据,作用于全部用户)
- local_umask=022 (本地用户新建文件的掩码)
- #anon_upload_enable=YES (是否允许匿名用户上传文件,默认不允许匿名用户上传)
- #anon_mkdir_write_enable=YES (是否允许匿名用户创建新目录,默认不允许)
- dirmessage_enable=YES (是否允许为目录配置显示信息,显示每个目录下面的文件信息)
- xferlog_enable=YES (是否开启日记功能)
- connect_from_port_20=YES (数据连接端口,默认开启20端口作为数据传输端口)
- #chown_uploads=YES (是否修改所有匿名上传的文件的所属用户为chown_username指定的用户)
- #chown_username=whoever (指定chown_username用户)
- #xferlog_file=/var/log/xferlog (日志文件位置)
- xferlog_std_format=YES (是否使用使用标准格式日志)
- #idle_session_timeout=600 (空闲连接超时,单位是秒)
- #data_connection_timeout=120 (数据传输超时,单位是秒)
- #nopriv_user=ftpsecure (无权限的用于运行ftp服务的用户名,一般默认即可)
- #async_abor_enable=YES (服务器将识别异步中止请求,是否允许使用”async ABOR”命令,一般不用,容易引起传输故障)
- #ascii_upload_enable=YES (设置是否可用ASCII 模式上传。默认值为NO)
- #ascii_download_enable=YES (设置是否可用ASCII 模式下载。默认值为NO)
- #ftpd_banner=Welcome to blah FTP service. (登录时显示欢迎信息.如果设置了banner_file则此设置无效)
- #deny_email_enable=YES (是否启用邮件黑名单,用于如果匿名用户需要密码,那么使用banned_email_file里面的电子邮件地址的用户不能登录)
- # (default follows)
- #banned_email_file=/etc/vsftpd/banned_emails (如果匿名用户需要密码,那么使用banned_email_file里面的电子邮件地址的用户不能登录)
- #chroot_local_user=YES
- #chroot_list_enable=YES (如果启动这项功能,则所有列在chroot_list_file中的使用者不能更改根目录)
- # (default follows)
- #chroot_list_file=/etc/vsftpd/chroot_list (定义不能更改用户主目录的文件)
- #ls_recurse_enable=YES (是否禁止使用ls -R命令,禁止以防止浪费大量的服务器资源)
- listen=NO (是否监听端口,启用监听其实就是启用standalone模式)
- listen_ipv6=YES (是否监听IPV6端口,启用监听其实就是启用standalone模式)
- pam_service_name=vsftpd (定义PAM 所使用的名称,预设为vsftpd)
- userlist_enable=YES (是否只允许userlist中的用户登录)
- tcp_wrappers=YES (开启tcp_wrappers支持)
出于篇幅的原因,下一篇说明vsftpd.conf配置文件的特性和定制化!
红校生-专注互联技术传道授业!