ftp
ftp文件共享
主要用于存储,采用c/s架构,客户端可以通过登录server,去实现文件的上传,删除的操作
ftp工作模式
主动传输模式
client使用N端口向ftp的server的21端口进行请求,并且会告诉ftp的server其接收数据的端口为n+1端口,建立连接成功后,ftp的server会使用其20端口和client的n+1端口进行连接,传输数据
优点:服务端配置简单,利于服务端的安全管理,只需要开放21和20端口
缺点:如果客户端开启了防火墙,限制了端口,就有可能接收不了服务端响应的数据
被动传输模式
client使用N端口向ftp的server的21端口进行请求,并且会告诉ftp的server使用的是被动模式,ftp的server会随机开放一个端口,这个端口大于1024,之后ftp的server会把自己随机开放的端口响应给客户端,client使用自己的n+1端口主动去和ftp的server随机开放的端口进行连接 传输数据
优点:对客户端的网络环境没有要求
缺点:server的设置会比较麻烦 服务端随机开放端口的范围不确定 所以手动比较麻烦
默认使用的模式主动传输模式
主动和被动模式的不同
主动模式 服务端主动和client建立连接传输数据 20端口21端口
21端口接受client的请求 20 传输数据
大部分使用主动模式
被动模式 client主动和服务端建立传输数据 21端口 随机端口比1024大
21接受client的请求 随机开放的端口传输数据
身份验证:
登录成功后ls可查看服务端的数据 put可上传 get 下载
匿名用户访问:ftp 没有密码的 server端共享目录 /var/ftp
server 192.168.2.10 vsftpd
client 192.168.2.20 ftp
服务端配置:
1.先安装vsftpd
[root@localhost ~]# yum -y install vsftpd
2更改配置
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
12 anonymous_enable=YES
16 local_enable=NO
33 anon_mkdir_write_enable=YES
保存退出 重启 vsftpd
client:
[root@localhost ~]# yum -y install ftp
客户端登录到服务端
[root@localhost ~]# ftp 192.168.2.10
Connected to 192.168.2.10 (192.168.2.10).
220 (vsFTPd 3.0.2)
Name (192.168.2.10:root): ftp
331 Please specify the password.
Password:
服务端:
[root@localhost ~]# cd /var/ftp/
[root@localhost ftp]# touch kkk
[root@localhost ftp]# ls
kkk pub
-------------------------------------------
本地用户访问:能够登陆server的用户 server端共享目录 登陆用户的家目录
更改配置
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
12 anonymous_enable=NO #不允许匿名
16 local_enable=YES #允许本地登录
[root@localhost ~]# systemctl restart vsftpd
创建用户
[root@localhost ~]# useradd cc
[root@localhost ~]# passwd cc
client:
[root@localhost ~]# ftp 192.168.2.10
Connected to 192.168.2.10 (192.168.2.10).
220 (vsFTPd 3.0.2)
Name (192.168.2.10:root): cc
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ftp> ls
227 Entering Passive Mode (192,168,2,10,159,20).
150 Here comes the directory listing.
226 Directory send OK.
server
[root@localhost ~]# cd /home/cc #共享目录在用户的家目录
[root@localhost cc]# touch ccck
[root@localhost cc]#
-----------------------------------------------------------------
虚拟用户访问:基于本地用户的虚拟用户 server端共享目录 基于本地用户的家目录
server
[root@localhost cc]# cd /etc/vsftpd/
[root@localhost vsftpd]#
[root@localhost vsftpd]# vim users.list
aaa
123
bbb
456
ccc
789
转换成二进制文件
[root@localhost vsftpd]# db_load -T -t hash -f users.list users.db
-T转换 -t类型 hash -f指定文件名
创建一个虚拟用户依赖的本地用户
[root@localhost vsftpd]# useradd -d /qq -s /sbin/nologin qq
[root@localhost vsftpd]# chown qq:qq /qq
[root@localhost vsftpd]# chmod 755 /qq
#pam认证---虚拟用户登录
[root@localhost vsftpd]# cd /etc/pam.d/
[root@localhost pam.d]# vim user.vu
#!PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/users #登录模块
account required pam_userdb.so db=/etc/vsftpd/users #登录测试模块
[root@localhost pam.d]# vim /etc/vsftpd/vsftpd.conf
修改
29 anon_upload_enable=YES #允许用户上传文件
125 pam_service_name=user.vu #pam认证的文件名
添加
guest_enable=YES #开启虚拟用户登录
guest_username=qq #虚拟用户基于的本地用户
allow_writeable_chroot=YES #虚拟用户有读的权限
保存退出 重启服务
验证:
server创建数据
[root@localhost pam.d]# cd /qq
[root@localhost qq]# touch yyy
[root@localhost qq]# ls
yyy
client
ftp> ls
227 Entering Passive Mode (192,168,2,10,149,52).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 Dec 08 08:49 yyy
226 Directory send OK.
ftp> get yyy
server
[root@localhost qq]# setenforce 0
client
ftp> put anaconda-ks.cfg #上传 需要在服务端关沙盒
local: anaconda-ks.cfg remote: anaconda-ks.cfg
227 Entering Passive Mode (192,168,2,10,175,158).
150 Ok to send data.
226 Transfer complete.
1760 bytes sent in 0.000912 secs (1929.82 Kbytes/sec
server 查看上传后的文件
[root@localhost qq]# ls
anaconda-ks.cfg yyy