linux中如何使用ftp服务

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=xxx

6)匿名用户可以下载

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=0644

11)匿名用户建立目录

anon_mkdir_write_enable=YES|NO

 

 

12)本地用户家目录修改

local_root=/directory

13)限制本地用户登陆

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

猜你喜欢

转载自blog.csdn.net/weixin_40543283/article/details/83505448
今日推荐