(1)文件传输协议(FTP —File Transfer Protocol):用于 Internet 上的控制文件的双向传输。同时,它也是一个应用程序(Application)。 基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传输文件。 在 FTP 的使用当中,用户经常遇到两个概念:“下载”(Download)和"上传"(Upload)。
(2)非常安全的FTP服务(Vsftpd—very secure FTP daemon):安全性是它的一个最大的特点。vsftpd是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、HP-UNIX 等系统上面,是一个完全免费的、开放源代码的 ftp 服务器软件,支持很多其他的FTP 服务器所不支持的特征。
信息 | 目录 |
---|---|
软件安装包 | vsftpd |
默认发布目录 | /var/ftp |
默认发布目录的子目录 | /var/ftp/pub/ |
协议接口 | 21/tcp |
服务配置文件 | /etc/vsftpd/vsftpd.conf |
查看看该服务的配置文件 | rpm -qc vsftpd |
日志文件 | /etc/logrotate.d/vsftpd |
认证文件 | /etc/pam.d/vsftpd |
黑名单文件 | /etc/vsftpd/ftpusers |
用户名单文件 | /etc/vsftpd/user_list |
配置文件 | /etc/vsftpd/vsftpd.conf |
客户端访问时, 用户身份可以分为:
1). 匿名用户:没有指定用户身份, ftp身份实现从服务器上传和下载文件;
2). 本地用户: -u指定用户身份,用户是服务器端的用户;
3). 虚拟用户: -u指定用户身份,但是服务器端并不存在该用户(id username),没有指定用户身份。
步骤 | 命令 | 注释 |
---|---|---|
1. 配置yum源 | ||
1.1本地镜像挂载(1) | mkdir /var/www/html/rhel7.3 | ## 创建挂载目录 |
(2) | mount root/Desktop/iso/rhel-server-7.3-x86_64-dvd.iso /var/www/html/rhel7.3 | 挂载镜像 |
1.2yum源搭建 (1) | cd /etc/yum.repos.d | ## 进入/etc/yum.repos.d文件夹下 |
(2) | rm -rf * | ##将多余的.repo文件清除 |
(3) | vim yum.repo | ## 建立新的.repo文件 |
(4) | [rhel7.3]>>>name=rhel7.3>>>baseurl=file:///var/www/html/rhel7.3>>>gpgcheck=0 | ## 编辑 |
1.3验证yum源 | yum repolist | ##yum源搭载成功 |
2.使用http共享yum源 | ||
(1) | yum whatprovides httpd | ##查找httpd的安装包 |
(2) | yum install httpd-2.4.6-45.el7.x86_ 64 | ##yum安装httpd |
(3) | systemctl start httpd | ## 开启http服务 |
(4) | systemctl enable httpd | ##自启动http服务 |
(5) | systemctl stop firewalld | |
(6) | systemctl disable firewalld | ## 开机不启动防火墙 |
(7) | mount root/Desktop/iso/rhel-server-7.3-x86_64-dvd.iso /var/www/html/rhel7.3 | 挂载镜像 |
(8) | df | ##在浏览器中查看yum是否分享成功 |
3.共享yum源到虚拟机中 | ||
(1) | ifconfig | ##查看虚拟机网络 |
(2) | cd /etc/sysconfig/network-scripts/ | ##入/etc/sysconfig/network-scripts/目录 |
(3) | vim ifcfg-eth0 | ## 打开配置文件 |
(4) | BOOTPROTO=none | ##静态配置网络IP |
IPADDR=172.25.19.251 | ## 和真机在同一网段上 | |
NETMASK=255.255.255.0 | ## 子网掩码的配置 | |
DEVICE=eth0 | ##eth0网卡 | |
ONBOOT=yes | ## 开机激活 | |
(5) | systemctl restart network | ##重启网络查看是否配置成功 |
(6) | ifconfig | ## 查看ip |
(7) | ping 172.25.19.250 | ## 查看是否连通 |
(8) | cd /etc/yum.repos.d目录 | ## 进入/etc/yum.repos.d目录 |
(9) | rm -rf * | ## 清空该目录 |
(10) | vim yum.repo | ## 打开配置文件 |
(11) | [rhel7.3]>>>name=rhel7.3>>>baseurl=http://172.25.19.250/rhel7.3>>>gpgcheck=0 | ## 编辑 |
(12) | yum clean all | ##清空所有的YUM信息 |
(13)验证yum源 | yum repolist | ##yum源搭载成功 |
4.安装vsfp服务 | ||
yum install vsftpd -y | ## 安装vsfp服务 | |
systemctl start vsftpd | ## 启动vsfp服务 | |
systemctl enable vsftpd | ##开机自启动vsfp服务 | |
systemctl stop firewalld | ## 关闭防火墙 | |
systemctl disable firewalld | ####开机自关闭防火墙 | |
yum install lftp -y | ## 安装lftp服务 | |
lftp ip | ####能登陆并且显示,表示安装成功 | |
5. 注意 | ## 机房做实验找不到yum源的方案 | |
(1) | vim /etc/hosts | ## 打开配置文件 |
(2) | 172.25.254.197 content.example.com | ##添加老师的ip信息 |
步骤1:配置yum源
步骤2.使用http共享yum源
步骤3:虚拟机共享yum源
注意:vsftpd文件信息
/var/ftp ##默认发布目录
/etc/vsftpd ##配置目录
/etc/vsftpd/vsftpd.conf ##vsftp 的配置文件,修改完之后需要进行重启
功能 | 命令 | 注释 |
---|---|---|
1. 匿名用户设定 | ##注意修改配置文件,先复制,再进行修改;注意还原 | |
1.1匿名用户登陆限制 | ||
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | anonymous_enable=YES | NO |
systemctl restart vsftpd | ## 重启服务 | |
1.2 匿名用户上传 | ||
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | write_enable=YES | ## 可写 |
(vim) | anon_upload_enable=YES | ##可下载 |
(vim) | anonymous_enable=YES | NO |
systemctl restart vsftpd | ## 重启服务 | |
chgrp ftp /var/ftp/pub | ## 修改用户组 | |
chmod 775 /var/ftp/pub | ##修改写权限 | |
1.3 | 匿名用户家目录修改 | ## |
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | anon_root=/var | ## 修改默认家目录 |
systemctl restart vsftpd | ## 重启服务 | |
1.4 | 匿名用户上传文件默认权限修改 | ## |
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | anon_umask=xxx | ##文件的权限为666-xxx |
systemctl restart vsftpd | ## 重启服务 | |
1.5 | 匿名用户建立目录 | ## |
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | anon_mkdir_write_enable=YES | NO |
systemctl restart vsftpd | ## 重启服务 | |
1.6 | 匿名用户下载 | ## |
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | anon_world_readable_only=YES | NO |
systemctl restart vsftpd | ## 重启服务 | |
1.7匿名用户删除 | ## | |
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | anon_other_write_enable=YES | NO |
systemctl restart vsftpd | ## 重启服务 | |
1.8匿名用户使用的用户身份修改 | ## | |
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | chown_uploads=YES | ## 允许上传 |
(vim) | chown_username=student | ## 修改用户为student |
(vim) | chown_upload_mode=0644 | ## 上传的模式 |
systemctl restart vsftpd | ## 重启服务 | |
1.9最大上传速率 | ## kb | |
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | anon_max_rate=102400 | ## 最大传输速102400b(/2^10Kb) |
dd if =/dev/zero of=/var/ftp/pub/group bs=1M count=100 | ##给定文件大小进行下载 | |
systemctl restart vsftpd | ## 重启服务 | |
1.10 | 最大链接数 | ## |
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | max_clients=2 | ## 最大链接数为2 |
systemctl restart vsftpd | ## 重启服务 | |
## | ||
2.本地用户设定 | ## | |
2.1本地用户登陆限制 | ||
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | local_enable=YES | NO |
systemctl restart vsftpd | ## 重启服务 | |
2.2 本地用户写权限设定 | write_enable=YES|NO | 默认状态下YES可以登录, 进行写操作 |
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | write_enable=NO | 限制写操作 |
systemctl restart vsftpd | ## 重启服务 | |
2.3 | 本地用户家目录修改 | ## |
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | local_root=/var | ## 修改默认家目录 |
systemctl restart vsftpd | ## 重启服务 | |
2.4 | 本地用户上传文件默认权限修改 | ## |
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | local_umask=xxx | ##修改权限 |
systemctl restart vsftpd | ## 重启服务 | |
2.5限制本地用户浏览/目录 | ## | |
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | chroot_local_user=YES | ##所有用户被锁定到自己的家目录中 |
systemctl restart vsftpd | ## 重启服务 | |
chmod u-w /home/* | ## 去掉写权限 | |
2.6 本地黑名单的建立 | ||
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | chroot_local_user=NO | ## 黑名单:NO |
(vim) | chroot_list_enable=YES | ##黑名单生效 |
(vim) | chroot_list_file=/etc/vsftpd/chroot_list | ## |
vim /etc/vsftpd/chroot_list | ##临时黑名单 | |
systemctl restart vsftpd | ## 重启服务 | |
2.7本地白名单的建立 | ||
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | chroot_local_user=YES | ## ## 白名单:YES |
(vim) | chroot_list_enable=YES | ####白名单生效 |
(vim) | chroot_list_file=/etc/vsftpd/chroot_list | ##白名单链接 |
vim /etc/vsftpd/chroot_list | ##临时白名单 | |
systemctl restart vsftpd | ## 重启服务 | |
2.8 限制本地用户登录 | ||
2.8.1 白名单设定 | ||
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | userlist_deny=NO | ## 白名单 |
vim /etc/vsftpd/user_list | ##临时白名单,只在名单中出现的用户可以登陆ftp | |
systemctl restart vsftpd | ## 重启服务 | |
(2)黑名单的设定 | ## | |
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | userlist_deny=YES | ##黑名单 |
vim /etc/vsftpd/user_list | ##临时黑名单,只在名单中出现的用户不可以登陆ftp | |
systemctl restart vsftpd | ## 重启服务 | |
3. ftp虚拟用户的设定 | ||
3.0实验准备 | ||
① | 配置yum源 | ## |
② | yum install vsftpd -y | |
③ | systemctl start vsftpd | ## 启动vsfp服务 |
④ | systemctl enable vsftpd | ##开机自启动vsfp服务 |
⑤ | systemctl stop firewalld | ## 关闭防火墙 |
⑥ | systemctl disable firewalld | ####开机自关闭防火墙 |
⑦ | setenforce 0 | ##关闭selinux服务 |
⑧ | vim /etc/sysconfig/selinux | |
⑨ | SELINUX=disabled | ## 强制关闭(关机生效) |
3.1虚拟用户的登录 | ||
0) | useradd -s /sbin/nologin johnsonlee | ## 在创建虚拟用户前我们需要创建一个不可登陆的用户 |
1). 创建虚拟帐号身份的文件 | ## (注意: 不要出现空行或者多余的空格) | |
vim /etc/vsftpd/loginusers | ## ##文件名称任意 ,用户以及密码 | |
(vim) | ftpuser1 | ## 用户1 |
(vim) | 123 | ##密码1 |
(vim) | ftpuser1 | ## 用户2 |
(vim) | 123 | ####密码2 |
(vim) | ftpuser3 | ## 用户3 |
(vim) | 123 | ####密码3 |
2). 对用户帐号和密码进行加密 | ## | |
db_load -T -t hash -f /etc/vsftpd/loginusers /etc/vsftpd/loginusers.db | ##加密 | |
chmod 600 /etc/vsftpd/loginusers* | ##修改权限 | |
3). 编辑帐号和密码处理的库文件 | ## 可以到相应的系统文件下查看 | |
vim /etc/pam.d/ljftpd | ## 此时的文件名可以任意修改 | |
(vim) | account required pam_userdb.so db=/etc/vsftpd/loginusers | ## 用户 |
(vim) | auth required pam_userdb.so db=/etc/vsftpd/loginusers | ##密码 |
4). 配置vsftpd配置文件 | ||
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | pam_service_name=ljftpd | ## 虚拟用户信息认证文件名称 |
(vim) | guest_enable=YES | ##虚拟用户开启 |
systemctl restart vsftpd | ## 重启服务 | |
5)虚拟帐号家目录独立设定) (vim) | guest_username=johnsonlee | ## |
chmod u-w /home/ftpuser | ## 去掉写权限 | |
6)client | lftp ip -u username | ##用户进行验证 |
3.2虚拟用户的操作 | ## 上面的实验为基础 | |
1.server)虚拟帐号家目录独立设定 | ## | |
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
local_root=/johnsonlee_home/$USER | ## 修改用户 | |
user_sub_token=$USER | ## 用户标签匹配 | |
systemctl restart vsftpd | ## 重启服务 | |
mkdir /johnsonlee_home | ##创建根目录 | |
chgrp johnsonlee /johnsonlee_home | ## 改组 | |
chmod g+s /johnsonlee_home | ##修改权限 | |
mkdir /johnsonlee_home/ftpuser{1…3} | ##创建目录 | |
mkdir /johnsonlee_home/ftpuser1/curry1 | ##常见文件1 | |
mkdir /johnsonlee_home/ftpuser2/curry2 | ##创建文件2 | |
mkdir /johnsonlee_home/ftpuser3/curry3 | ##创建文件3 | |
2) 测试client | lftp ip -u username | ## 进入虚拟用户 |
ls | ## 查看文件 | |
3.3虚拟帐号配置独立) | ##1). ftpuser1用户上传和下载文件限速;2). ftpuser2用户上传和下载文件不限速, 并且可以上传文件; | |
1)用户1的设定 | ## | |
vim /etc/vsftpd/vsftpd.conf | ## 打开配置文件 | |
(vim) | user_config_dir=/etc/vsftpd/conf.d | ## 修改目录 |
systemctl restart vsftpd | ## 重启服务 | |
mkdir /etc/vsftpd/conf.d | ## 创建目录(任意,对应) | |
cd /etc/vsftpd/conf.d | ## 打开目录 | |
touch ftpuser{1…2} | ## 创建用户目录 | |
vim /etc/vsftpd/conf.d/ftpuser1 | ## 打开配置文件 | |
(vim) | anon_max_rate=1024 | ## 在此文件中设定配置文件中的所有参数,此文件的优先级高 |
2)用户2的设定 | ## | |
vim /etc/vsftpd/conf.d/fptuser2 | ## 打开配置文件 | |
(vim) | anon_upload_enable=YES | ## 允许上传 |
(vim) | write_enable=YES | ##可写 |
systemctl restart vsftpd | ## 重启服务 | |
mkdir /etc/vsftpd/conf.d/fptuser2/upload | ## 修改用户 | |
chown johnsonlee /etc/vsftpd/conf.d/fptuser2/upload | ## 修改用户权限 | |
3)测试 | ||
server | dd if=/dev/zero of= /etc/vsftpd/conf.d/ftpuser1 bs=1M count=100 | ## 文件1大小修改 |
server | dd if=/dev/zero of= /etc/vsftpd/conf.d/ftpuser2 bs=1M count=100 | ## 文件2大小修改 |
desktop | lftp 172.25.19.251 -u ftpuser1 >get curry1 | ##速度较慢 |
desktop | lftp 172.25.19.251 -u ftpuser2 >get curry2 | ## 速度较快;默认 |
desktop | lftp 172.25.19.251 -u ftpuser2>cd upload > put /etc/passwd | ##可以进行上传;注意根目录下不能上传 |
Result5.1.1匿名用户的登录限制
Result5.1.2匿名用户上传
Result5.1.3匿名用户家目录修改
Result5.2.1本地用户的登录
Result5.2.2本地用户的写权限限制
Result5.2.3本地用户家目录修改
Result5.2.4本地用户的上传文件权限
Result5.2.5 限制本地用户浏览/目录所有用户被锁定到自己的家目录中
Result5.3.1虚拟用户的登录
Result5.3.2虚拟用户的操作
RESULT5.3.3虚拟帐号配置独立
id | 错误类型 | 解决 |
---|---|---|
500文件系统权限过大 | oops cannot change directory :/root | (1)setsebool ftpd_disable_trans 1 (2) systemctl restart vsftpd (3)由于我的粗心大意在设置单个用户的访问目录时写错了用户目录,也导致了以上错误,请先确认访 问目录没有问题 |
500 文件系统权限过大 | oops:vsftpd:refusing to run with writable root inside chroot() | vsftpd匿名用户的默认目录是/home/ftpsize,但是现在设置成了目录“/”下,也就是根目录,在vsftpd新版本中例如现在的2.3.5已经不再推荐使用根目录,可以在外层加一层目录,并设置其权限为不可为全部权限;例如设置为/vsftp/abc >>>chmod u-w /var/ftp/pub |
530 用户认证失败 | Login incorrect | (1) 确认用户名密码正确 passwd username(2) 仔细查看配置文件vsftpd.conf正确: 编写主配置文件(注意: 不要出现空行或者多余的空格); |
550 | 服务本身功能未开放 | systemctl restart vsftpd |
553.本地文件系统权限过小 | Could not create file | (1)主配置文件没有重启;systemctl restart vsftpd(2)selinux没有关闭; setenforce 0 |