1.ftp简介
FTP(File Transfer protocol 文件传输协议):是一种非常古老的协议,在tcp/ip协议刚诞生不久,文件共享传输成为一种最迫切的应用,这种协议非常古老,所以在设计时,很多地方都没有考虑到,只要让协议能工作就行
ftp:分命令连接(客户端到服务器端)和数据连接.(服务器端到客户端) get 下载文件的命令 put 上传命令 bye 断开连接 跨主机通信的套接字:ip+端口号 ftp比较独特,不会在发送命令的这个信道上下载.但是一直保持此信道一直到bye会重新再起一个连接,在另一套接字上进行数据的传输,数据连接结束,本次连接断开. ftp服务器端发(5,23),客户端找端口:5*256+23=1303 |
2.数据连接的两种模式
主动模式:CIP CPort+1 SPort(20) SIP
服务器主动连接客户端端口,+1或依次加1到未被占用的端口 缺陷:如果一个端口被占用了,别的进程就不能用了 被动模式:CIP CPort+1 SPort(随机端口) SIP 命令连接会反馈回来两个数字用于提供随机端口 连接追踪机制:主动被动都是针对服务器端而言的 |
服务端安装:
1.FTP的安装、目录查询:
yum install vsftpd //安装
rpm -ql vsftpd //查询 /etc/logrotate.d/vsftpd //日志滚动脚本 /usr/rc.d/init.d/vsftpd //服务脚本 /etc/vsftpd/vsftpd.conf //主配置文件 其他几个都是用户控制文件 /var/ftp //数据文件存放目录 /var/ftp/pub //共享目录 |
2.启动FTP服务(端口号21)
启动:service vsftpd start
查询FTP的端口号:netstat -tunpl | grep 21 |
3.FTP访问
Windows中通过浏览器进行访问,如ftp服务器ip为192.168.88.4,则可输入ftp://192.168.88.4/进行访问。
说明:此时可以下载不能上传.访问的目录是: /var/ftp
客户端的上传、服务器反馈:
FTP的客户端的安装
1、安装、查询
yum install ftp
rpm -ql ftp |
2.客户端的FTP的登录
1.系统用户(默认登录用户) --服务器上的用户
直接命令里:ftp 192.168.88.4 ---192.168.88.4为ftp服务端ip |
2.匿名用户 anonymous 密码是为空的
若想用匿名用户登录则输入:anonymous--匿名用户.密码为空,直接回车. ftp 192.168.88.4 ---登录ftp anonymous get passwd ---下载文件下载到登录ftp时的目录中 bye/exit ---退出ftp的两种方式 在linux里这个ftp客户端不支持下载目录,只支持下载文件. 注意:下载后文件自动放在进入ftp时的路径里. |
3.匿名用户上传文件ftp
1)保证匿名用户能够登录ftp并且有上传文件的权限
vim /etc/vsftpd/vsftpd.conf anonymous_enable=YES --默认情况下 保证能登录 local_enable=YES ---本地的用户能登录ftp anon_upload_enable=YES --保证能上传 手工打开 并重启vsftpd服务 2)授予用户ftp对目录/var/ftp的写权限(匿名用户和ftp用户是一回事,登录密码都为空,但一定要有用户,不可为空.) setfacl -m u:ftp:rwx /var/ftp 此时用匿名用户登录ftp时会报以下的错误: 500 OOPS: vsftpd: refusing to run with writable anonymous root Login failed. 所以,需要先清除掉:setfacl -b /var/ftp 在授予下面的pub的目录的权限:setfacl -m u:ftp:rwx /var/ftp/pub 需要切换到pub目录后再上传.注意一定要有x权限,才能cd 到pub. 3)上传文件put file 说明:可以用!ls查看本地的文件。上传文件时,只能上传登录ftp所在目录的文件. |
4、怎样使用户能够创建目录?
1)打开权限vim
/etc/vsftpd/vsftpd.conf
anon_mkdir_write_enable=YES --保证能创建目录 然后重启服务.service vsftpd restart 2)匿名用户切换到pub目录之后,这是前提 mkdir haha 说明:因为匿名用户只有对pub目录有权限,只能切换到pub中创建 |
5.怎样使用户能够删除目录?
1)打开权限
vim /etc/vsftpd/vsftpd.conf
添加一行:anon_other_write_enable=YES 2)切换到pub目录中 delete 文件名 rm/rmdir 目录名 说明:删除文件保证先对目录有权限,还是在pub目录中操作 |
6.怎么限制用户不能登录只能传输ftp?
vim /etc/passwd
shell修改为sbin/nologin 就会不能登录,仅仅能传输ftp文件
lisi:x:1002:1002::/home/lisi:/bin/bash ---修改前 lisi:x:1002:1002::/home/lisi:/sbin/nologin ----修改之后 说明:1 修改用户的shell之后,用户不能登录了,但依然是这个系统的普通用户 2 这种情况在实际的生产中是比较常用的,限制用户仅仅只是做传输 3 /bin目录中是没有nologin的命令的,验证命令如下所示: [root@master bin]# ls -l /bin|grep nologin [root@master bin]# ls -l /sbin|grep nologin -rwxr-xr-x. 1 root root 7816 Aug 6 2013 nologin 如果/etc/passwd文件修改错了,文件不报错,很不容易发现问题 |
7.怎么限制所有用户仅仅是在自己的家目录中?
vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES ---限制的是所有的用户只能在自己的家目录中 service vsftpd restart |
8、如何限制仅仅是lisi用户在自己的家目录中?
1)修改配置文件如下所示:vim /etc/vsftpd/vsftpd.conf
#chroot_local_user=YES --限制所有用户的注销掉 chroot_list_enable=YES --打开仅仅限制用户的列表 chroot_list_file=/etc/vsftpd/chroot_list --用户列表位置 2)修改用户列表的配置文件 vim /etc/vsftpd/chroot_list lisi lisi就是chroot,其它用户没有chroot限制 3)重启ftp服务,并登陆ftp验证service vsftpd restart |
9、怎么限制lisi用户不能登录ftp服务?
Vim /etc/vsftpd/user_list
将要限制的用户加入到其中,重启服务即可。Root用户就是因为此不能登录ftp 这相当于是黑名单,连给你输入密码的机会都不给 |
10、怎么限制多个用户登录之后,进入到同一个目录中?
local_root=/tmp/zxc
编辑配置文件vim /etc/vsftpd/vsftpd.conf增加如下的信息 local_root=/tmp/zxc 重启服务生效 说明:这个目录不要在root的目录下,是会切换不成功的 |