文件传输协议:
FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20,21端口,其中端口20(数据端口)用于
传输数据,端口21(命令端口)用于接受客户端发出的相关ftp命令与参数。ftp服务普遍部署在内网中,具有容易搭建,方便管理
的特点。
FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端则是向服务器发送连接请求,以建立数据
传输链路的主机。FTP协议有下面两种工作模式:
主动模式:FTP服务器主动向客户端发起连接请求。
被动模式:FTP服务器等待客户端发起连接请求(FTP的默认工作模式)
vsftpd是一款运行在linux操作系统上的FTP服务程序,不仅开源而且免费,有很高的安全性,传输速度以及支持虚拟用户认证
等其他FTP服务不具备的特点。
部署实验环境:
[root@localhost ~]# vim /etc/sysconfig/selinux 编辑文件
[root@localhost ~]# cat /etc/sysconfig/selinux 关闭selinux
SELINUX=disabled 这行改为disabled即可
[root@localhost ~]# getenforce 重启生效,查看是否更改成功
Disabled
[root@localhost ~]# yum install vsftpd lftp -y 安装ftp和lftp
[root@localhost ~]# systemctl start vsftpd 打开服务
[root@localhost ~]# systemctl enable vsftpd 开机自启动
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service'
[root@localhost ~]# netstat -antlupe | grep vsftpd 查看端口是否开启
tcp6 0 0 :::21 :::* LISTEN 0 38124 1789/vsftpd
[root@localhost ~]# firewall-cmd --list-all 查看防火墙支持状态
[root@localhost ~]# firewall-cmd --permanent --add-service=ftp
success 添加ftp进去
[root@localhost ~]# firewall-cmd --reload 重新读入
success
[root@localhost ~]# firewall-cmd --list-all ftp被允许
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ftp ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
[root@localhost ~]# cd /var/ftp/ 所有操作在此目录下
[root@localhost ftp]# ls
pub
[root@localhost ftp]# touch xfl
[root@localhost ftp]# ls
pub xfl
[root@localhost ftp]# lftp 172.25.254.221 测试进去可以看到建立的文件xfl
lftp 172.25.254.221:~> ls
drwxr-xr-x 2 0 0 6 Aug 03 2015 pub
-rw-r--r-- 1 0 0 0 May 05 07:07 xfl
设置selinux状态,安装ftp和lftp:
开启服务并设置开机自启动:
配置火墙状态并添加ftp,在根目录下建立文件方便测试效果:
直接在虚拟机通过lftp命令连接进行查看文件
vsftpd服务的配置参数:
参数 | 作用 |
---|---|
listen=[YES|NO] | 是否以独立运行的方式监听服务 |
listen_address=IP地址 | 设置要监听的IP地址 |
listen_port=21 | 设置FTP服务的监听端口 |
download_enable=[YES|NO] | 是否允许下载文件 |
userlist_enable=[YES|NO],userlist_deny=[YES|NO] | 设置用户列表为允许还是禁止操作 |
max_clients=0 | 最大客户端连接数,0表示不限制 |
max_per_ip=0 | 同一IP地址的最大连接数,0为不限制 |
annoymous_enable=[YES|NO] | 是否允许匿名用户访问 |
anon_upload_enable=[YES|NO] | 是否允许匿名用户上传文件 |
anon_umask=022 | 匿名用户上传文件的umask值 |
anon_root=/var/ftp | 匿名用户的ftp根目录 |
anon_mkdir_write_enable=[YES|NO] | 是否允许匿名用户创建目录 |
anon_other_write_enable=[YES|NO] | 是否开放匿名用户的其他写入权限(包括重命名,删除等操作权限) |
anon_max_rate=0 | 匿名用户的最大传输速率(字节\秒),0为不限制 |
local_enable=[YES|NO] | 是否允许本地用户登录ftp |
local_umask=022 | 本地用户上传文件的umask值 |
local_root=/var/ftp | 本地用户的ftp目录 |
chroot_local_user=[YES|NO] | 是否将用户权限禁锢在ftp目录,以确保安全 |
local_max_rate=0 | 本地用户的最大传输速率(字节\秒),0为不限制 |
报错ID的解析:
500 文件系统权限过大
530 用户认证失败
550 服务本身功能没有开放
553 本地文件系统权限过小
1,匿名用户设定
anonymous_enable=YES|NO匿名用户登陆限制,将十二行改为NO就是不可以登录。
[root@localhost ~]# lftp 172.25.254.221
lftp 172.25.254.221:~> ls
drwxrwxr-x 2 0 50 20 May 06 01:38 pub
-rw-r--r-- 1 0 0 0 May 05 07:07 xfl
lftp 172.25.254.221:/> quit
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.221
lftp 172.25.254.221:~> ls
Interrupt 然后将匿名用户打开。
文件更改内容:
在主配置文件中将匿名用户关闭就不可以登陆,然后重新打开重启服务。
2,<匿名用户上传>
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
write_enable=YES
anon_upload_enable=YES
匿名用户依赖于普通用户可写,需要同时打开服务
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub 赋予权限不然会报错权限太小
测试连接lftp 172.25.254.221,cd /pub,put /etc/passwd,或者pub /etc/group就可以进行效果的测试。
详细操作:
[root@localhost ftp]# lftp 172.25.254.221
lftp 172.25.254.221:~> ls
drwxr-xr-x 2 0 0 6 Mar 07 2014 pub
-rw-r--r-- 1 0 0 0 May 07 01:27 xfl
lftp 172.25.254.221:/> cd /pub
lftp 172.25.254.221:/pub> ls
lftp 172.25.254.221:/pub> put /etc/passwd
put: Access failed: 550 Permission denied. (passwd) 服务功能没有开放
lftp 172.25.254.221:/pub> quit
[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf 打开匿名用户上传功能
[root@localhost ftp]# systemctl restart vsftpd
[root@localhost ftp]# lftp 172.25.254.221
lftp 172.25.254.221:~> ls
drwxr-xr-x 2 0 0 6 Mar 07 2014 pub
-rw-r--r-- 1 0 0 0 May 07 01:27 xfl
lftp 172.25.254.221:/> cd /pub
lftp 172.25.254.221:/pub> ls
lftp 172.25.254.221:/pub> put /etc/passwd
put: Access failed: 553 Could not create file. (passwd)
lftp 172.25.254.221:/pub> ls
lftp 172.25.254.221:/pub> put /etc/group 报错因为权限过小
put: Access failed: 553 Could not create file. (group)
lftp 172.25.254.221:/pub> quit
[root@localhost ftp]# chgrp ftp /var/ftp/pub
[root@localhost ftp]# chmod 775 /var/ftp/pub 赋予权限
[root@localhost ftp]# lftp 172.25.254.221
lftp 172.25.254.221:~> ls
drwxrwxr-x 2 0 50 6 Mar 07 2014 pub
-rw-r--r-- 1 0 0 0 May 07 01:27 xfl
lftp 172.25.254.221:/> cd /pub
lftp 172.25.254.221:/pub> put /etc/group 可以上传
863 bytes transferred
lftp 172.25.254.221:/pub> ls
-rw------- 1 14 50 863 May 07 01:54 group
lftp 172.25.254.221:/pub> quit
文件更改内容: