目录
简介
VSFTPD:(Very Secure FTP,安全的 FTP)UNIX 系统上的 FTP 服务器软件。单个主机上支持 4000 个以上的用户并发连接。用于共享的下载与上传数据功能。
接受的用户认证
- 匿名用户:默认用户名 ftp ,密码空,默认权限为只读(下载)。
- 授权用户:指的是访问 VSFTPD 服务器时,输入有效的用户名及密码,有以下两种:
- 本地用户:以 VSFTPD 所在的主机中 /etc/passwd 中的用户及密码作为认证来源,也是默认配置。(也就是用主机系统中创建的用户和密码 (如 root) 来登陆 VSFTPD 服务器)
- 虚拟用户:支持自定义的用户名及密码,通过保存在本地数据文件、数据库(MySQL)、或 LDAP 中。通过虚拟用户来登陆大大增强了系统的安全防止本地用户密码泄露。
默认登陆的注意事项
- 匿名用户:默认用户名 ftp ,密码空,默认权限为只读(下载)。
- 所有用户登陆后 默认进入的目录
- 匿名用户:/var/ftp
- 本地用户:用户 Home 家目录 !!!
- 虚拟用户:因为虚拟用户是自定义的,在定义了虚拟用户及密码后,还需要创建本地用户和虚拟用户对应映射,所以同样是 Home 家目录!
离开目录、下载上传、删除文件、创建目录、权限
- 匿名用户:默认不允许离开 /var/ftp 目录,但允许进入此目录下的所有子目录 ,此目录则为匿名用户根目录。只允许下载。
- 授权用户:拥有离开 Home 家目录、下载上传、删除文件与创建目录权限。
VSFTPD 配置文件
- 主配置文件:/etc/vsftpd/vsftpd.conf,配置参数选项。
-
同目录下的还有:/etc/vsftpd/ftpusers 、 /etc/vsftpd/user_list
- ftpusers 和 user_list :里面存放的每行都是系统用户名,默认是不允许此列表中的用户登陆 VSFTPD 的(包含了 root 用户)。
- root 用户不允许登陆解决:删除这两个文件里面的 root 用户名或 # 注释掉。
- 授权用户登陆认证 PAM 文件:/etc/pam.d/vsftpd ,这里面有这么一条语句项:
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
item=user sense=deny(否定) file=/etc/vsftpd/ftpusers :这句话就是否定这个文件列表里的用户登陆 VSFTPD 的,同时还会检查 /etc/vsftpd/user_list 文件中的用户,root 用户也默认在列表里,所以需要 root 用户登陆 VSFTPD 就需要删除或注释掉这两个文件里的 root 用户名!!!
安装 VSFTPD 服务器
注意:请配置好软件源,本文不阐述,我这里使用的是本地源!
键入如下命令
- rpm -q vsftpd :查询 vsftpd 服务器是否安装。
- yum install -y vsftpd :安装 vsftpd 服务器。
- systemctl restart vsftpd.service :启动 vsftpd 服务器。
- systemctl enable vsftpd.service :开机自启动 vsftpd 服务器。
- firewall-cmd --zone=public --permanent --add-service=ftp :防火墙放行 vsftpd 服务器端口(不管是手动设置的端口或范围型动态分配端口,都有效)。必须放行,否则无法访问 vsftpd 服务器。
- 关闭 SELINUX 防止本地用户登陆系统失败,编辑 vi /etc/selinux/config 文件:
- SELINUX=disabled
- 保存后,键入命令执行 setenforce 0 使 SELINUX 配置修改立即生效。
- 设置服务器固定 IP ,编辑 /etc/sysconfig/network-scripts/ifcfg-xxxx ( ifcfg-xxxx 是你的默认网卡配置文件),如果你已经是 static 静态手动设置 IP 则忽略本步骤,如果是 DHCP 分配则需要设置,新增或修改如下项:
BOOTPROTO="static" # 把 dhcp 更改为 static
IPADDR=172.17.21.211 # 这是我服务器的 IP ,请根据你所在网络设置服务器的 IP 地址
NETMASK=255.255.255.0 # 这是我服务器的网络掩码,请根据你所在网络设置服务器的网络掩码
GATEWAY=172.17.21.1 # 这是我服务器的路由网关,请根据你所在网络设置服务器所在网络的路由器地址
END :配置完成。
如需要 root 用户登陆 vsftpd ,就需要删除或注释掉 /etc/vsftpd/ftpusers 、 /etc/vsftpd/user_list 两个文件中的 root 用户名!!!
主配置文件 /etc/vsftpd/vsftpd.conf
配置项 | 描述 |
anonymous_enable=YES|NO | 匿名用户登陆 |
allow_anon_ssl=YES|NO | 匿名用户通过 SSL 连接 |
local_enable=YES|NO | 本地用户登陆 |
write_enable=YES|NO | 授权用户上传文件到 FTP 服务器,对匿名用户无效 |
anon_upload_enable=YES|NO | 匿名用户上传文件到 FTP 服务器 |
anon_mkdir_write_enable=YES|NO | 匿名用户在 FTP 服务器上创建目录 |
anon_other_write_enable=YES|NO | 匿名用户其它的如删除、重命名操作 |
download_enable=YES|NO | 下载文件 |
local_umask=022 | 授权用户上传文件时设置文件的权限码 |
anon_umask=022 | 匿名用户上传文件时设置文件的权限码 |
chown_uploads=YES|NO |
匿名用户上传文件时的所属主,通过chown_username指定 |
ls_recurse_enable=YES|NO | 使用 ls -R 等比较占用资源的命令 |
dirlist_enable=YES|NO | 使用 dir 等列目录命令 |
userlist_enable=YES|NO | YES时,/etc/vsftpd/user_list 文件中的用户登陆 FTP 时,将在输入密码之前就被禁止登陆! |
userlist_deny=YES|NO |
条件是 userlist_enable=YES |
chroot_local_user=YES|NO | 用户离开家 Home 目录 |
local_root=/var/ftp | 授权用户登陆时引导到的目录,对匿名用户无效 |
anon_max_rate= | 匿名用户最大传输速度(单位:Byte/s) |
local_max_rate= | 授权用户最大传输速度(单位:Byte/s) |
async_abor_enable=YES|NO | 客户端使用 sync 等命令 |
ascii_upload_enable=YES|NO | 上传文件时使用 ASCII 传输模式 |
ascii_download_enable=YES|NO | 下载文件时使用 ASCII 传输模式 |
idle_session_timeout= | 会话超时(客户端连接 FTP 但未操作的时间)(单位:秒) |
data_connection_timeout= | 数据传输时超时时间(单位:秒) |
deny_file={} | 不允许上传文件类型,如 deny_file={*.exe,*.dll} |
pam_service_name=vsftpd | 系统用户登陆时的认证来源,默认文件 /etc/pam.d/vsftpd 文件 |
listen_address= | 当服务器主机有多个 IP 地址时,通过该参数只接受一个IP地址,监听 FTP 客户端请求 |
listen_port=21 | vsftpd 监听端口,默认21 |
max_clients=3000 | 允许的最大并发连接用户 |
max_per_ip= | 允许同一个 IP 发起连接 vsftpd 的连接数量 |
use_localtime=YES|NO | 在目录列表时使用本地时间 |
ftpd_banner= | 指定登陆 FTP 服务器时显示的欢迎信息 |
dirmessage_enable=YES|NO | 用户在 FTP 服务器上切换目录时是否显示欢迎信息 |
banner_fail= | 连接失败显示的文件信息,如 banner_fail=/etc/vsftpd/error_info |
xferlog_enable=YES|NO | 用户上传/下载文件时记录日记 |
xferlog_file= | 指定使用的日记文件 |
xferlog_std_format=YES|NO | 使用标准日记文件记录日记 |
nopriv_user=ftp | 指定的默认匿名登陆账户,默认时 ftp |
connect_from_port_20=YES|NO | 使用20端口传输数据 |
pasv_min_port= pasv_max_port= |
被动模式时,客户端数据连接端口范围 |
listen=YES|NO | 开启 IPv4 支持(IPv4 与 IPv6 只能开启一个) |
listen_ipv6=YES|NO | 开启 IPv6 支持(IPv4 与 IPv6 只能开启一个) |
tcp_wrappers=YES|NO | 通过 tcp_wrappers 管理 |
注意:如果配置文件配置错误,将可能会导致 vsftpd 服务器无法启动!所以在发生这种错误时,请检查以下配置文件!
三种常见登陆 FTP
分为两种方式登陆
-
协议链接登陆:也分匿名链接登陆、用户链接登陆。
- 匿名链接登陆:ftp://主机名或IP地址
- 用户链接登陆:ftp://userName:password@主机名或IP地址
- FTP 客户端命令程序登陆:如 Windows CMD命令行工具中启动 FTP 客户端命令程序,和 Unix 终端 Terminal 程序中的 FTP 客户端命令程序。
1. Windows 文件管理器登陆
在文件管理器中的地址栏输入协议链接即可!!!
2. 浏览器登陆
同样在浏览器的地址栏输入协议链接即可!!!
这里显示中文乱码了,Linux 使用的编码格式是 UTF-8,更改浏览器当前界面使用的字符编码!
3. FTP 命令程序登陆
在 CMD 命令行,或 Terminal 终端中键入命令:
- ftp :运行 FTP 到前台。
- open <Host | IPAddress> [port] :打开访问 vsftpd 远程服务器,记住,端口号是可选的,只有在自定义了端口号才选择,默认是 21 端口互传命令连接!
- 输入用户名
- 输入密码
- 登陆成功:login successful.
[root@localhost /]# ftp
ftp> open 172.17.21.211 21
Connected to 172.17.21.211 (172.17.21.211).
220 (vsFTPd 3.0.2)
Name (172.17.21.211:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (172,17,21,211,171,2).
150 Here comes the directory listing.
drwxr-xr-x 9 0 0 4096 Jun 17 12:26 MainData
drwxr-xr-x 2 0 0 6 Jun 17 05:32 说明
226 Directory send OK.
ftp>
注意:输入密码时是不显示的,还有匿名用户名是 ftp 、密码为空(不需要输入密码直接回车即可)!
FTP 常用命令
查看文件命令:
- pwd:显示服务器当前所在目录。
- dir [pash]:显示服务器目录和文件列表,dir 命令可以使用通配符 “ * ” 和 “ ? ” 。
- ls [pash]:显示服务器目录和文件列表
- cd <pash>:进入服务器指定的目录,如 cd dirName。
- lcd:进入本地客户端指定的目录。
下载文件命令:
- get <Server:PASH/Download FileName> <Client:PASH/ New FileName>:下载单个文件,第一项指定要从服务器下载的文件(可以是全路径),第二项指定客户端的保存文件路径加新文件名!
- mget <Server:PASH/Download FileName [FileName ....]>:下载多个文件,可以使用通配符 * 或 ? 。
上传文件命令:
- put <Client:PASH/ Put FileName> <Server:PASH/New FileName>:上传单个文件。
- mput <Client:PASH/Put FileName [FileName ....]>:上传多个文件。
其它命令:
- delete <FileName>:删除文件,可以使用通配符 * 或 ? 。
- rmdir <DirName>:删除目录。
- mkdir <Pash/NewDirName>:创建目录。
- rename <TargetFileName> <NewFileName>:更改文件或目录名。
- close:关闭当前连接的 FTP 服务器。
- help:显示帮助,命令!
- quit:关闭当前连接的 FTP 服务器,并退出 FTP 命令程序。