FTP服务的使用详解

本文详细介绍了如何在Linux系统中部署和管理VSFTPD服务,包括安装服务端和客户端软件,配置防火墙,调整SELinux模式,以及设置FTP服务的匿名用户和本地用户访问权限。此外,还涵盖了匿名用户上传、下载、创建目录和修改文件权限等操作,以及通过PAM服务管理虚拟用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.ftp定义

FTP是File Transfer Protocol(文件传输协议)的简称

2.vsftpd

提供ftp协议的软件是vsftpd
默认发布目录:/var/ftp
协议接口:21/tcp
配置文件: /etc/vsftpd/vsftpd.conf

3.部署ftp服务

1.安装服务端vsftpd服务
yum install vsftpd -y
在这里插入图片描述在这里插入图片描述
2.安装客户端lftp服务
yum install lftp -y
在这里插入图片描述在这里插入图片描述
3.开启服务端vsftpd,并开机自启
systemctl start vsftpd
systemctl enable vsftpd
在这里插入图片描述
4.查看防火墙状态,如果是关闭状态,打开防火墙
systemctl start firewalld
在这里插入图片描述
5.防火墙策略
firewall-cmd --permanent --add-service=ftp
在火墙开启状态下,永久添加ftp服务。
firewall-cmd --reload
重新加载火墙服务
在这里插入图片描述
6.检测
lftp 172.25.254.166,ls可以看到内容则说明服务器端已经开启vsftpd服务
在这里插入图片描述

4.准备工作

SELinux支持三种模式
Enforcing:强制模式,代表SElinux运行中,且已经正确的开始限制demain/type了;
Permissive:宽容模式
Disable:关闭,SELinux并没有实际运行
注意在ftp服务端,使用getenforce,
若状态是Enforcing,为了不影响后边测试,将其关闭
在这里插入图片描述
vim /etc/sysconfig/selinux
修改disabled
在这里插入图片描述
设置完后reboot重启虚拟机
在这里插入图片描述
重启后查看是否修改成功
在这里插入图片描述

5.FTP服务的使用

1.用户的访问方式:
匿名用户访问
服务端上的本地用户身份登陆
lftp 172.25.254.166 以匿名身份登陆,默认登录的是/var/ftp/
在这里插入图片描述
创建一个新用户tony
在这里插入图片描述
lftp 172.25.254.166 -u tony 以tony的本地用户身份登陆,登陆的是本地用户的家目录/home/tony
在这里插入图片描述
2. 报错id的解析:
500文件系统权限过大
530认证失败,系统服务器不给你登陆或者登陆过程有问题
550服务本身不开放这个功能
553本地文件系统权限过小
3.
vim /etc/vsftpd/vsftpd.conf ##修改配置文件
anonymous_enable=YES|NO ##匿名用户是否可以登陆
local_enable=YES|NO ##本地用户是否可以登陆
write_enable=YES|NO ##ftp是否对登陆用户可写
systemctl restart vsftpd ##修改完后重启

vim /etc/vsftpd/vsftpd.conf ##修改配置文件
anonymous_enable=NO ##匿名用户不可以登陆
在这里插入图片描述
修改完重启systemctl restart vsftpd 。发现匿名用户无法登录ftp
在这里插入图片描述
修改配置文件 anonymous_enable=YES ##匿名用户可以登陆
在这里插入图片描述
修改完重启systemctl restart vsftpd ,发现匿名用户可以登录ftp了
在这里插入图片描述
vim /etc/vsftpd/vsftpd.conf ##修改配置文件
local_enable=NO ##本地用户不可以登陆ftp
在这里插入图片描述
修改完重启systemctl restart vsftpd 。发现本地用户无法登录ftp
在这里插入图片描述530 ##用户认证失败,系统服务器不给本地用户登录

vim /etc/vsftpd/vsftpd.conf ##修改配置文件
local_enable=YES ##本地用户可以登陆ftp
在这里插入图片描述
修改完重启systemctl restart vsftpd ,发现本地用户可以登录ftp了
在这里插入图片描述
vim /etc/vsftpd/vsftpd.conf ##修改配置文件
write_enable=NO ##ftp是否对登陆用户不可写
在这里插入图片描述
修改完重启systemctl restart vsftpd,ftp对登陆用户不可写
在这里插入图片描述550服务本身不开放这个功能

vim /etc/vsftpd/vsftpd.conf ##修改配置文件
write_enable=YES ##ftp是否对登陆用户可写
在这里插入图片描述
修改完重启systemctl restart vsftpd,ftp对登陆用户可写。
在这里插入图片描述
4.匿名用户上传

匿名用户默认是没有上传权限的
在这里插入图片描述550服务本身不开放匿名用户上传这个功能

vim /etc/vsftpd/vsftpd.conf ##修改配置文件
write_enable=YES
anon_upload_enable=YES 在这里插入图片描述
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub ##修改权限
在这里插入图片描述
匿名用户可以在/var/ftp/pub上传了,注意是在pub目录下,因为修改用户权限的时是修改的pub目录,只对pub下的目录或者文件起作用
在这里插入图片描述
5.匿名用户家目录修改
匿名用户默认登录的家目录是/var/ftp/
创建准备要修改的用户家目录
在这里插入图片描述
vim /etc/vsftpd/vsftpd.conf ##修改配置文件
anon_root=/ttt
在这里插入图片描述
修改完重启systemctl restart vsftpd,匿名用户登录的家目录修改成了/ttt
在这里插入图片描述
6.匿名用户建立目录
anon_mkdir_write_enable=YES |NO ##匿名用户可否建立目录
默认匿名用户是无法建立目录的
vim /etc/vsftpd/vsftpd.conf ##修改配置文件
anon_mkdir_write_enable=YES ##匿名用户可以建立目录
在这里插入图片描述
修改完重启systemctl restart vsftpd,匿名用户可以建立目录
在这里插入图片描述
7.匿名用户删除文件
anon_other_write_enable=YES|NO ##匿名用户可否删除文件
vim /etc/vsftpd/vsftpd.conf ##修改配置文件
anon_other_write_enable=YES ##匿名用户可以删除文件
在这里插入图片描述
修改完重启systemctl restart vsftpd,匿名用户可以删除文件
在这里插入图片描述
8.匿名用户下载
anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载
vim /etc/vsftpd/vsftpd.conf ##修改配置文件
anon_world_readable_only=NO ##匿名用户可以下载
在这里插入图片描述
9.匿名用户使用的用户身份修改
在客户端/mnt目录下新建文件file,本来file的所有人和所有组都是root
在这里插入图片描述
上传file到/var/ftp/pub,我们可以看到file的所有人与所有组变成ftp.
在这里插入图片描述
删除/var/ftp/pub里的file
在这里插入图片描述
chown_uploads=YES
chown_usrname=student
chown_upload_mode=0644
在这里插入图片描述
查看tony用户的信息,刚刚上传的文件file的拥有人变成了tony
在这里插入图片描述
10.匿名用户最大上传速率
anon_max_rate=204800
在这里插入图片描述
不限速的情况下上传速度很快
在这里插入图片描述
vim /etc/vsftpd/vsftpd.conf ##修改配置文件
anon_max_rate=204800 ##设置匿名用户上传速率最大为204800
在这里插入图片描述
限速之后匿名用户上传速度降到很低
在这里插入图片描述
11.匿名用户最大链接数imax

vim /etc/vsftpd/vsftpd.conf ##修改配置文件
max_clients=1 ##用户最大链接数为1,即只允许一个用户登录ftp
在这里插入图片描述
修改完重启systemctl restart vsftpd。只允许一个用户登录ftp
在这里插入图片描述

12.本地用户家目录修改
local_root=/directory
创建一个/local
在这里插入图片描述
vim /etc/vsftpd/vsftpd.conf ##修改配置文件
local_root=/local
在这里插入图片描述
修改完重启systemctl restart vsftpd。登录本地用户的家目录修改
在这里插入图片描述
13.本地用户上传文件权限
local_umask=xxx
13.限制本地用户登陆
黑白名单文件
在这里插入图片描述
vim /etc/vsftpd/ftpusers —用户黑名单
在黑名单上的用户永远登陆不了ftp
将test用户写进用户黑名单
在这里插入图片描述
test用户无法登录ftp
在这里插入图片描述
vim /etc/vsftpd/user_list —用户临时黑名单
将tony用户加入用户临时黑名单
在这里插入图片描述
tony用户无法登录ftp
在这里插入图片描述
用户白名单设定
vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO
在这里插入图片描述
systemctl restart vsftpd
/etc/vsftpd/user_list 原来临时黑名单上的用户变成白名单,在白名单上的用户可以登陆ftp
在这里插入图片描述

本地用户可以通过ftp登陆,已经存在的本地用户,可以不通过ftp也可以登陆,权限太大。普通用户最大60000个 2**16,建立不了怎么多用户。所以建立虚拟用户很有必要!

设置虚拟用户登陆
1.编辑一个文件 vim loginusers ##用户管理名单
westos1
123
westos2
123
在这里插入图片描述
在这里插入图片描述

2.加密 db_load -T -t hash -f loginusers loginusers.db
##对用户管理名单加密
##-T:transfer转换
##-t:hash加密
##loginusers:源文件
##loginusers.db:加密后以后缀.db的文件
在这里插入图片描述

3.pam对于用户密码的管理机制
vim /etc/pam.d/ftpauth ##用户的身份和密码的管理机制ftpauth文件
用户 account required pam_userdb.so db=/etc/vsftpd/loginusers
密码 auth required pam_userdb.so db=/etc/vsftpd/loginusers
用户名 只有存在才继续 谁验证(验证工具) 验证这里边的东西,不加db(自动加)
在这里插入图片描述
在这里插入图片描述

4.vim /etc/vsftpd/vsftpd.conf 修改配置文件(pam_service_name=vsftpd 原来的用户管理认证方式)
在这里插入图片描述

pam_service_name=ftpauth ##对用户的身份和密码的管理机制由ftpauth文件来设置
guest_enable=YES ##开机启动
systemctl restart vsftpd ##重启vsftpd服务
在这里插入图片描述
guest_username=tony ##虚拟用户登陆以tony身份登陆其家目录,不写的话默认登陆/var/ftp/
在这里插入图片描述
chmod 555/home/tony ##修改tony用户的家目录的权限,使得其他人可读可执行
在这里插入图片描述
虚拟用户登陆的tony用户的家目录/home/tony
虚拟用户westos1可以登陆ftp了
在这里插入图片描述

ehco $USER 用户的家目录的名和用户的名是对应的 他是如何指定的呢?
以本地用户身份登陆到的是本地用户自己的家目录,如以westos登陆的是/home/westos/
虚拟用户家目录建立如何指定
mkdir -p /ftphome/westos{1…3} ##建立虚拟用户家目录
mkdir -p /ftphome/westos1/westos1data
mkdir -p /ftphome/westos2/westos2data
mkdir -p /ftphome/westos3/westos3data
在这里插入图片描述

vim /etc/vsftpd/vsftpd.conf ##修改配置文件
128 行 local_root=/ftphome/$USER ##虚拟用户家目录指定
在这里插入图片描述

systemctl restart vsftpd ##重启vsftpd服务
在这里插入图片描述

lftpd 172.25.254.188 -u westos1登陆进去发现还是错误的
他会去找/ftphhome/$USER ?
在这里插入图片描述

vim /etc/vsftpd/vsftpd.conf ##继续修改配置文件
128 行 local_root=/ftphome/KaTeX parse error: Expected 'EOF', got '#' at position 7: USER #̲#虚拟用户家目录名与用户名对应…USER ##让系统不要把$USER看成一个目录,而是动态的
在这里插入图片描述

systemctl restart vsftpd ##重启vsftpd服务
lftpd 172.25.254.188 -u westos1 ##以westos1身份登陆的是westos1用户的家目录/ftphome/westos1
ls 看到是 westos1data
在这里插入图片描述

虚拟用户设置虚拟VIP用户可以上传文件,其他用户不可以上传文件
chmod 777 /ftphome/westos*/*
ll /ftphome/westos* ##设置满权限
在这里插入图片描述

lftpd 172.25.254.188 -u westos1
cd westos1date/ ##cd到westos1date目录下,修改的是/ftphome/westos1的权限,但是只对这个目录下的目录和文件起作用
put /etc/passwd ##上传/etc/passwd
550报错 ##匿名用户上传服务没有开启
在这里插入图片描述

vim /etc/vsftpd/vsftpd.conf ##修改配置文件
29行 anon_upload_enable=YES ##开启匿名用户上传服务
在这里插入图片描述

systemctl restart vsftpd ##重启vsftpd服务
lftpd 172.25.254.188 -u westos1
cd westos1date/ ##cd到westos1date目录下
put /etc/passwd ##上传/etc/passwd
发现可以上传。
在这里插入图片描述

但是是所有虚拟用户都可以上传,如果要实现VIP用户可以上传,但是普通用户无法上传
vim /etc/vsftpd/vsftpd.conf ##修改配置文件
29行 #anon_upload_enable=YES ##关闭匿名用户上传服务
在这里插入图片描述

把vip用户的配置文件独立出来
vim /etc/vsftpd/vsftpd.conf ##修改配置文件
130行 user_config_dir=/etc/vsftpd/user_conf
131行 userlist_enable=YES
在这里插入图片描述

mkdir /etc/vsftpd/user_conf ##建立VIP用户的配置文件目录
touch /etc/vsftpd/user_conf/westos1 ##建立VIP用户的配置文件
vim /etc/vsftpd/user_conf/westos1 ##写VIP用户的配置文件
在这里插入图片描述

内容:anon_upload_enable=YES ##VIP用户westos1可以上传权限
在这里插入图片描述

systemctl restart vsftpd ##重启vsftpd服务
测试:
lftpd 172.25.254.188 -u westos1
cd westos1date/ ##cd到westos1date目录下
put /etc/group ##上传/etc/group
westos1用户可以上传
在这里插入图片描述

lftpd 172.25.254.188 -u westos2
cd westos2date/ ##cd到westos2date目录下
put /etc/passwd ##上传/etc/passwd
报错550 用户westos2没有开启这个上传服务
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值