FTP的概要
FTP的作用:文件的上传和下载 属于tcp服务
端口:21:是控制层面,用于账户密码验证。20:是数据层面,用于文件的上传和下载
FTP的三种账户
匿名账户:登录名为ftp、anonymous,不验证密码即可登录
yum -y install vsftpd
vi /etc/vsftpd/vsftpd.conf/
anonymous_enable_=YES#允许匿名账户登录
anon_upload_enable=YES#允许匿名账户上传
anon_mkdir_write_enable=YES#允许匿名账户新建文件或目录
anon_other_write_enable=YES#允许匿名账户的其他权限
anon_umask=022#设置匿名账户的权限755
local_enable=YES#允许本地账户登录
local_max_rate=102400#本地账户限速
chroot_local_user=yes#锁定宿主目录,此配置针对本地账户
write_enable=YES#写的权限开启,如果想让用户上传文件,需要此权限
local_umask=022#本地账户的权限为755
dirmessage_enable=YES#
xferlog_enable=YES#
connect_from_port_20=YES#
xferlog_std_format=YES#
listen=YES#监听ipv4地址的请求
listen_ipv6=NO#监听ipv6地址的亲求
先在/var/ftp/pub/下创建目录或文件做测试用
chown -R ftp.ftp /var/ftp/pub/#修改文件属主属组
chmod -R 755 /var/ftp/pub/#修改权限
可在windows上通过资源管理器和浏览器访问(配置ftp的Linux主机需连接网络)
系统账户:本身系统已存在的账户,需密码验证
验证方式:验证/etc/passwd和/etc/shadow
验证的是用户列表(用户必须是系统创建)相当于白名单,默认root账户不可登录(黑名单)
大部分配置包括在匿名账户配置中
加入:allow_writeable_chroot=YES#允许宿主目录写的权限
测试:在配置ftp的主机上创建用户以及下面的文档
在另一台Linux上登录
上传下载文件
vi /etc/vsftpd/user_listR#设置本地用户可登录列表
vi /etc/vsftpd/vsftpd.conf
userlist_deny=NO#只允许用户列表里的用户登录
虚拟虚拟账户:预定义的列表账户(以前系统从未创建过的)
vi /etc/vsftpd/vusers.list
mike
123
john
234
新建虚拟用户账户数据库
cd /etc/vsftpd/
db_load -T -t hash -f vusers.list vusers.db #生成数据库文件(hash算法)
file vusers.db #查询成功与否
chmod 600 /etc/vsftpd/vusers.* #设置文件权限
useradd -d /var/ftproot(宿主目录) -s /sbin/nologin virtual #创建虚拟账户(相当于中介)
chmod -R 755 /var/ftproot #指定其宿主目录权限为755
vi /etc/pam.d/vsftpd.vu #针对虚拟用户创建pam认证
#%PAM-1.0
auth(认证方式) required(控制方式) pam_userdb.so(认证模块) db=/etc/vsftpd/vusers.db(数据库文件来源)
account required pam_userdb.so db=/etc/vsftpd/vusers.db
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #关闭匿名账户
local_enable=YES #启用本地账户,一定要启用
chroot_local_users=YES #锁定
guest_enable=YES #启用虚拟用户
guest_username=virtual #指定虚拟用户的宿主用户
pam_service_name=vsftpd.vu #pam认证的文件
anon_world_readable_only=NO #允许虚拟用户下载
max_cilents=400 #最大连接数
max_per_ip=10 #每ip最大可登录数
listen=YES
allow_writeable_chroot=YES
user_config_dir=/etc/vsftpd/vusers_dir #配置文件
write_enable=YES
mkdir /etc/vsftpd/vsusers_dir
cd /etc/vsftpd/vsusers_dir/
vi mike #默认只能下载,不可上传,可进入设置开启上传权限
anon_upload_enable=YES
anon_mkdir_write_enable=YES
write_enable=YES
vi john #空文件,只有默认的现在权限
systemctl restart vsftpd
在 /var/ftproot下创建文件测试
FTP不同账户访问服务器
建立ftp服务器
[root@server2 ~]# systemctl stop firewalld
[root@server2 ~]# setenforce 0
[root@server2 ~]# yum -y install vsftpd
匿名客户
- 配置文件
root@server2 ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
listen=YES
listen_ipv6=NO
2,服务启动, 过滤显示配置文件内容
[root@server2 ~]# systemctl start vsftpd
[root@server2 ~]# grep -v "#" /etc/vsftpd/vsftpd.conf | grep -v "^$"
3,查看pam认证文件内容
[root@server2 ~]# cd /etc/pam.d/
[root@server2 pam.d]# ls -lh
4.查看配置文件
[root@server2 pam.d]# vi vsftpd
5.创建文件,设置权限,用来测试匿名用户
[root@server2 pam.d]# cd /var/ftp/pub
[root@server2 pub]# echo "abc123" > a.txt
[root@server2 pub]# echo "bcd123" > b.txt
[root@server2 pub]# chmod -R 755 /var/ftp/pub 设置文件或目录的权限
[root@server2 pub]# chown -R ftp.ftp /var/ftp/pub 设置文件或目录的归属
[root@server2 pub]# ls -lh
6.启动一台客户机
[root@client1 ~]# systemctl stop firewalld
[root@client1 ~]# yum -y install ftp
7.进入ftp服务器进行匿名账户操作
[root@client1 ~]# ftp 20.0.0.11
Name (20.0.0.11:root): ftp
230 Login successful.
ftp> ls -lh
ftp> cd pub
ftp> ls -lh
ftp> mkdir 1
ftp> put anaconda-ks.cfg
ftp> ls -lh
8.到ftp服务器上进行查看刚才创建的文件
root@server2 pub]# ls -lh
9.在Window是进行访问ftp服务器
在文件搜索栏输入地址ftp://20.0.0.11/pub/
可以新建文件夹3,添加文件新建文本文档
10.在网页上同样可以访问ftp服务器
同样在搜索栏上输入命令ftp://20.0.0.11/pub/
11.进入ftp服务器进行查看
[root@server2 pub]# ls -lh
在这里插入图片描述
本地客户
1.在服务器上创建两个用户
[root@server2 ~]# useradd liming
[root@server2 ~]# passwd liming
[root@server2 ~]# useradd zhangba
[root@server2 ~]# passwd zhangba
[root@server2 ~]# cd /home/liming
[root@server2 liming]# vi ab.txt
[root@server2 liming]# cd /home/zhangba
[root@server2 zhangba]# vi ac.txt
2.在客户机上创建文件
[root@client1 ~]# touch www
[root@client1 ~]# vi www
[root@client1 ~]# vi www2
[root@client1 ~]# ls -lh
3.在服务器是编辑配置文件
[root@server2 ~]# vi /etc/vsftpd/vsftpd.conf
[root@server2 ~]# systemctl restart vsftpd
修改:
#anonymous_enable=YES 允许匿名账户登录
#anon_upload_enable=YES 允许匿名账户上传
#anon_mkdir_write_enable=YES 允许匿名账户新建文件或目录
#anon_other_write_enable=YES 允许匿名账户的其他写权限
#anon_umask=022 设置匿名账户的权限为755
chroot_local_user=YES 锁定宿主目录
添加:
allow_writeable_chroot=YES 允许宿主目录的写权限
4.查看配置文件
[root@server2 ~]# grep -v "#" /etc/vsftpd/vsftpd.conf | grep -v "^$"
在这里插入图片描述
5.在客户机上登录进行操作
[root@client1 ~]# ftp 20.0.0.11
Name (20.0.0.11:root): zhangba
ftp> ls -lh
ftp> get ac.txt
ftp> put www
ftp> bye
[root@client1 ~]# ls -lh
6.在服务器上查看上传文件
[root@serve![在这里插入图片描述](https://img-blog.csdnimg.cn/2020110612134643.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzUwMzk5MDA2,size_16,color_FFFFFF,t_70#pic_center)
r2 ~]# cd /home/zhangba
[root@server2 zhangba]# ls -lh