##################
ftp服务
##################
1.ftp的定义
文件传输协议(英文:File Transfer
Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。文件传送(file
transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供。
FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登录进程。
它用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。
FTP(File Transfer Protocol) 编辑本段FTP的作用
正如其名所示:FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
***
好处
***:1.在本地电脑上登陆到国际互联网.
2.搜索有文件共享主机或者个人电脑(一般有专门的FTP服务器网站上公布的,上面有进入该主机或个人电脑的名称,口令和路径).
3.当与远程主机或者对方的个人电脑建立连接后,用对方提供的用户名和口令登陆到该主机或对方的个人电脑.
4.在远程主机或对方的个人电脑登陆成功后,就可以上传你想跟别人分享的东东或者下载别人授权共享的东东(这里的东东是指能放到电脑里去又能在显示屏上看到的东东).
5.完成工作后关闭FTP下载软件,切断连接. 为了实现文件传输,用户还要运行专门的文件传输程序,比如网际快车就有这方面的功能,其它还有很多专门的FTP传输软件,FlashFxp为其中的杰出软件。
2.ftp协议提供的软件
在rhel7中:
vsftpd
3.部署ftp服务(古老的传输协议)
在部署ftp服务之前,得配置好yum源,就是为了下载vsftp,我的主机已经下载好了,所以这个步骤就不做了。
yum install vsftpd -y
* systemctl start vsftpd: (安装好之后开启vsftp) * systemctl enable vsftpd (设置开机自动启动)
* firewall-cmd --permanent --add-service=ftp(在火墙里添加ftp服务)
* firewall-cmd --reload 重新加载火墙
firewall-cmd --list-all 可以看到ftp已经添加成功
[root@ftp-server ftp]# lftp 172.25.254.205 (检测ftp服务器是否搭建成功) lftp
172.25.254.100:~> ls drwxr-xr-x 2 0 0 19 Mar 02 2014 pub
注意:
注意:
注意啦:刚没说一个很重要的事情,就是之前的那些操作和结果得getenforce是Disabled的情况下才可以
执行getenforce命令
如果是Disable不用管
如果是enforceing vim /etc/sysconfig/selinux 改SELINUX=Disable
关闭火墙的作用,编辑完要reboot(内核编辑文件)ftp服务的基本信息 软件安装包:
vsftpd 默认发布目录:
/var/ftp 协议接口: 21/tcp
服务配置文件: /etc/vsftpd/vsftpd.conf
报错id的解析:
500 ##文件系统权限过大
530 ##用户认证失败
550 ##服务本身功能未开放
553 ##本地文件系统权限过小
4.(vsftp的配置参数)
vim /etc/vsftpd/vsftpd.conf 再此配置文件下进行 systemctl restart vsftpd
(每次改完任何的配置文件都需要重启vsftp服务)
anonymous_enable=YES|NO #匿名用户是否可以登陆 (一般默认都是开启的)
l
ocal_enable=YES|NO #本地用户是否可以登陆 (一般默认都是开启的)
write_enable=YES|NO #ftp是否对登陆用户可写
#<匿名用户上传>
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
匿名用户再登陆ftp服务所谓时候是以ftp的身份登陆的,所以得将ftp目录下的所有组改为ftp,再赋予它较大的权限才可以
这样就可以上传成功了
#<匿名用户家目录修改>
anon_root=/direcotry
#<匿名用户上传文件默认权限修改>
anon_umask=xxx
#<匿名用户建立目录>
anon_mkdir_write_enable=YES|NO
可以看到再没改配置文件之前,是不允许在pub下建立目录的,但是改完之后就可以
#<匿名用户下载> anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载
#<匿名用户删除>
anon_other_write_enable=YES|NO
在没有设定或者设定为NO的时候,不能删除任何东西
设定完之后,就可以删除了
#<匿名用户使用的用户身份修改>
chown_uploads=YES
chown_username=student
chown_upload_mode=0644
#<最大上传速率>
anon_max_rate=102400
#<最大链接数>
max_clients=2
2)本地用户设定
local_enable=YES|NO ##本地用户登陆限制
当改成NO之后,本地的用户就登陆不了
> write_enable=YES|NO ##本地用户写权限限制
改为NO之后本地用户就上传不了文件
本地用户家目录修改>
local_root=/directory
#<本地用户上传文件权限>
local_umask=xxx
#<限制本地用户浏览/目录>
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
用户黑名单建立
先建立几个用户,我提前已经建好
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list (写上黑名单的名字)
很明显,当设置为黑名单时,这个用户就不能登陆lftp
> 用户白名单建立 chroot_local_user=YES
> chroot_list_enable=YES
> chroot_list_file=/etc/vsftpd/chroot_list
#<限制本地用户登陆>
vim /etc/vsftpd/ftpusers ##用户黑名单
这个黑名单一旦设定,不管怎么操作,student用户永远登陆不了,所以,一般情况下不要随意设定
vim /etc/vsftpd/user_list ##用户临时黑名单
这个是临时黑名单,当系统重启之后之前设定的黑名单的用户就不在了
用户白名单设定 userlist_deny=NO
> /etc/vsftpd/user_list
> ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp
#<ftp虚拟用户的设定>
创建虚拟帐号身份)
vim /etc/vsftpd/westosfile ##文件名称任意
user1
123
user2
456
user3
789
db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db
db_load 加密
-T 转换
-t 建立
hash 加密方式
-f 文件
.db 加密的文件
可以看到,在/etc/vsftpd/下存在这个加密的文件,查看就会发现有很多字符,这就是哈希加密
vim /etc/pam.d/westos ##文件名称任意
account required pam_userdb.so db=/etc/vsftpd/westosfile
auth required pam_userdb.so db=/etc/vsftpd/westosfile
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos
guest_enable=YES
虚拟帐号身份指定)
guest_username=ftpuser
chmod u-w /home/ftpuser
虚拟帐号家目录独立设定)
vim /etc/vsftpd/vsftpd.conf
local_root=/ftphome/$USER
user_sub_token=$USER
mkdir /ftpuserhome
chgrp ftpuser /ftpuserhome
chmod g+s /ftpuserhome
mkdir /ftpuserhome/ftpuser{1…3}
虚拟帐号配置独立)
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/ftpuser1
在此文件中设定配置文件中的所有参数,此文件的优先级高