ftp介绍
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。 基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载" (Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至 远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
实验环境:真机当作客户端、虚拟机xupt当作是服务端
1.服务端
ip为172.25.254.61
需要安装vsftpd服务,输入指令
yum install vsftpd -y systemctl start vsftpd ##开启vsftpd服务 systemctl enable vsftpd ##开机自动开启vsftp服务然后查看防火墙是否处于开启状态,如果关闭,无需下面操作,如果开启,输入指令
firewall-cmd --list-all ##列出防火墙的所有设置如图,没有显示支持ftp服务,所以需要我们自己加上
firewall-cmd --permanent --add-service=ftp ##将ftp服务永久的加到防火墙 firewall-cmd --reload ##重新加载防火墙然后查看selinux的状态
getenforce ##如果状态为enforce,请继续下面的步骤 vim /etc/sysconfig/selinux 将其中的设置为selinux=disabled改完之后重启服务,至此,服务端的设置就完成了
2.客户端
需要安装lftp
yum install lftp -y客户端的设置就完成了
3.使用ftp
默认发布的目录: /var/ftp 协议接口: FTP标准命令TCP端口号为21,Port方式数据端口为20 服务配置文件: /etc/vsftpd/vsftpd.conf
报错id的解析: 500 ##文件系统权限过大 530 ##用户认证失败 550 ##服务本身功能未开放 553 ##本地文件系统权限过小
输入指令
lftp 172.24.254.61 ##访问ftp服务器,如下图,可以显示目录就是成功了 lftp 172.24.254.61 -u 用户 ##以用户的身份登陆那么我们如何对访问我们ftp服务器的人做一个限制呢?需要编辑vsftp的编辑文件
ps:每次修改完后需要重启vsftp服务,如果只想要其中一种效果,必须要将之前的修改还原
1)匿名用户
anonymous_enable=YES|NO ##匿名用户是否可以登陆,此处改为NO,以后匿名用户不可以登陆 systemctl restart vsftpd ##重启服务在客户端再次登陆就会发现,已经登陆不上去了
还原修改
2)匿名用户上传
write_enable=YES anon_upload_enable=YES chgrp ftp /var/ftp/pub chmod 775 /var/ftp/pub用客户端进行测试,ok
3)本地用户
local_enable=YES|NO ##本地用户是否可以登陆 write_enable=YES|NO ##ftp是否对用户可写在本地用户的身份登陆,失败
4)匿名用户家目录修改
anon_root=/directory在服务端查看
5)匿名用户上传文件默认权限修改
anon_umask=xxx6)匿名用户可以下载
anon_world_readable_only=NO
7)匿名用户删除
anon_other_write_enable=YES|NO
8)最大上传速率
anon_max_rate=102400没做限制之前的速度
做了限制之后的速度
9)最大链接数
max_clients=2如果有两个服务端连接ftp,则第三个人需要等待两个人中的一个下线后才可以登陆
10)匿名用户使用的用户身份修改
chown_uploads=YES chown_username=xupt chown_upload_mode=064411)匿名用户建立目录
anon_mkdir_write_enable=YES|NO
12)本地用户家目录修改
local_root=/directory13)限制本地用户登陆
vim /etc/vsftpd/ftpusers ##用户黑名单 vim etc/vsftpd/user_list ##用户临时黑名单
ftpusers是永久黑名单,而user_list是临时的黑名单
14)用户白名单设定
userlist_deny=NO /etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp变成白名单以后,如果用户同时在user_list和ftpusers里面,那么该用户还是不能登陆,优先级永久黑名单>临时黑名单
15)在ftp中使用虚拟身份登陆
首先在服务端的etc/vsftpd下新建一个文件,文件名保存为leiftpusers 文件内容格式为用户名 密码 ##注意这里只有用户名和密码这两项,不可有空格
lei 123 xia 123 xu 123然后运行命令
db_load -T -t hash -f leiftpusers leiftpusers.db ##将leiftpusers文件转换成哈希加密的数据库文件然后在etc/pam.d下新建一个文件,文件名为leiftpauto 文件的格式为
account required pam_userdb.so db=/etc/vsftpd/leiftpusers ##在leiftpusers里面用pam插件查找用户 auth required pam_userdb.so db=/etc/vsftpd/leiftpusers ##在leiftpusers里面用pam插件查找认证修改etc/vsftpd下的vsftpd.conf文件,将其中的125行内容修改,并添加如下内容
pam_service_name=leiftpauto guest_enable=YES
在客户端进行测试
16) 如果虚拟的用户想以本地用户的身份登陆怎么办
在服务端首先需要修改vsftpd.conf文件
在其中添加
guest_username=student此处会出现500报错,此时需要修改用户家目录权限
chmod 555 /home/student保存退出后,重新启动vsftpd
客户端测试
17)如何使虚拟用户使用像本机用户那样的家目录
首先在根目录下新建
mkdir -p /ftphome/lei mkdir /ftphome/xia mkdir /ftphome/xu在服务端的主机的vsftpd.conf中添加
local_root=/ftphome/$USER user_sub_token=$USER
在客户端测试
18)如何赋予虚拟用户单独的权限,例如上传,有点像vip和非vip
首先建立目录和文件
mkdir /etc/vsftpd/user_conf touch /etc/vsftpd/user_conf/lei
然后修改vsftpd.conf文件 ,在其中添加
user_config_dir=/etc/vsftpd/user_conf在第一步新建的lei中添加
anon_upload_enable=YES write_enable=YES然后修改pub的权限
chmod o+t /var/ftp/pub然后重启vsftpd服务即可,然后用客户端验证,bingo