linux中如何使用ftp服务

xiaoxiao2025-04-21  19

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

 

转载请注明原文地址: https://www.6miu.com/read-5028778.html

最新回复(0)