自学linux——18.FTP服务器的搭建
Centos7下FTP服务器的搭建
一、FTP的作用
文件传输协议(File Transfer Protocol,FTP),是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用 20、21 号端口,其中20端口是数据端口用于进行数据传输,21端口为命令端口,用于接收客户端发出的相关FTP命令和参数
FTP协议工作模式有两种:主动模式和被动模式,其中被动模式是默认的工作模式
A.主动模式:FTP 服务器主动向客户端发起连接请求
B.被动模式:FTP 服务器等待客户端发起连接请求
由于FTP一般部署在企业内网,如果开启并配置了防火墙,有时候需要将FTP的工作模式设置为主动模式,才可以传输数据
二、vsftpd(FTP守护进程)三种认证模式
1.匿名开放模式:任何人都可以无需密码验证而直接登录到FTP服务器
2.本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式
3.虚拟用户模式:需要为FTP服务单独 建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在 服务器系统中实际上是不存在的,仅供 FTP 服务程序进行认证使用。是三种模式中最安全的一种认证模式,用的最多
三、vsftpd.conf的主要参数(根据实际情况来进行配置权限)
四、搭建流程
1.服务器端vsftpd的安装
① 通过rpm命令查看是否已经安装过vsftpd,如果没有安装则通过yum命令安装
rpm - q vsftpd #查看是否安装vsftpd
yum -y install vsftpd #下载vsftpd
②安装完成后,是否成功查看配置文件/etc/vsftpd/
rpm -q vsftpd #查看是否安装vsftpd
ll /etc/vsftpd #查看配置文件
2.匹配认证模式
(1)匿名开放模式:匿名用户可以上传、下载、创建、删除、更名文件的权限
A.服务器端:
① 把主配置文件备份,删除注释的参数,再重定向将其覆盖到主配置文件
cat /etc/vsftpd/vsftpd.conf #查看配置文件(注释看多不好看,把注释删除)
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak #配置文件备份
ll /etc/vsftpd #查看文件(夹)
grep -v "#" /etc/vsftpd/vsftpd.conf.bak >/etc/vsftpd/vsftpd.conf #删除注释的参数,再重定向将其覆盖到配置文件
cat /etc/vsftpd/vsftpd.conf #查看配置文件(已没有注释参数)
②写入相应的权限
vim /etc/vsftpd/vsftpd.conf #编辑配置文件
anon_umask=022 #匿名用户上传文件的umask的值
anon_upload_enable=YES #允许匿名用户上传文件
anon_mkdir_write_enable=YES #允许匿名用户创建目录
anon_other_write_enable=YES #允许匿名用户其他的权限(重命名,删除)
③重启vsftpd服务,并添加到开机启动
systemctl restart vsftpd #重启服务
systemctl enable vsftpd #添加到开机启动
④在/var/ftp/pub/下创建文件
cd /var/ftp/pub/ #切换路径
touch 文件名 #创建文件
⑤清除防火墙的默认策略(或直接关掉防火墙)
systemctl stop firewalld #关闭防火墙
yum -y install iptables-services #下载iptables
systemctl enable iptables #开启自启
systemctl start iptables #启动iptables
iptables -F #清除策略
service iptables save #保存配置
若直接关闭防火墙则不需要以上的操作,因为实际工作当中为了安全防火墙是开启的,而防火墙默认禁止了ftp传输的端口,因此清除防火墙的默认策略,centos7中没有service iptables save指令来保存防火墙的规则,所有采用以上的方式来实现
⑥修改ftp用户的权限
ll -d /var/ftp/pub #查看pub目录
chown -Rf ftp /var/ftp/pub #改变ftp用户的权限
ll -d /var/ftp/pub #查看pub目录
通过查看pub目录发现只有root用户才有写入的权限,所以直接把pub目录所有者改为ftp用户,让ftp用户也拥有写入的权限
⑦修改ftp域相关的规则(或直接关掉SELinux,方法见17)
getenforce #查看SELinux的状态
getsebool -a | grep ftp #查看ftp的规则
setsebool -P ftpd_full_access=on #修改ftpd_full_access为永久打开
实际工作中SELinux一般都是开启的,当SELinux状态为开启,查看与ftp域相关的策略,修改当中的规则
B.客户机端:
①通过rpm命令查看是否已经安装过ftp,如果没有安装则通过yum命令安装
rpm -q ftp #查看是否安装ftp
yum -y install ftp #下载ftp
②用ftp连接下载文件
ftp 服务器地址 #连接服务器端
匿名开放认证模式下,账户统一为 anonymous,密码为空,进入后
ls #查看文件/目录
cd pud #切换路径
ls #查看文件/目录
get 文件名 #下载文件
quit(exit) #退出
ll #可以查看到刚下载的目录
③用ftp连接创建目录
ftp 服务器地址 #连接服务器端
anonymous 用户名 密码为空
mkdir 文件名 #创建目录
ls #查看刚创建的目录
rmdir 文件名 #删除目录
回服务器端,用 ll /var/ftp/pub可以查看刚从客户机端创建的目录
(2)本地用户模式
A.服务器端:
①关闭匿名模式,开启本地匿用户模式,并添加相应的参数
anonymous_enable=NO #关闭匿名模式登录
local_enable=YES #允许本地用户登录
write_enable=YES #可写权限
local_umask=022 #本地用户模式创建文件的 umask 值
userlist_enable=YES #启用“禁止用户名单”
userlist_deny=YES #开启用户作用名单文件功能
vsfftpd服务默认开启了匿名模式和本地用户模式,如果没有手动配置一下
②重启vsftpd服务
systemctl restart vsftpd #重启
systemctl enable vsftpd #自启
③创建用户设置密码
useradd 用户名 #添加用户
passwd 用户名 #给用户设置密码
输入密码指令后,会提示输入密码和确认密码
B.客户机端
用ftp连接服务器后,用刚创建的用户密码登录就可以进行操作。
注意:
a.本地用户模式不用修改用户的权限,因为连接后默认访问的是该用户的家目录(/home/ftptest)
b.该模式下默认禁止root和大部分系统用户登录,如果非登不可,就在服务器端删除/etc/vsftpd/user_list和/etc/vsftpd/ftpusers路径下的同个用户名
(3)虚拟用户模式
A.服务器端
①在vuser.list中创建用户信息
cd /etc/vsftpd/ #切换路径
vim vuser.list #创建用户信息
用户1
密码
用户2
密码
②转换用户文件格式(db_load命令)
db_load #查看是否安装此命令(若有显示如下)
usage: db_load [-nTV] [-c name=value] [-f file]
[-h home] [-P password] [-t btree | hash | recno | queue] db_file
usage: db_load -r lsn | fileid [-h home] [-P password] db_file
yum -y install db4 #若没有则下载(有就略过此步)
db_load -T -t hash -f vuser.list vuser.db #明文的vuser.list文件转换为了vuser.db格式的文件
file vuser.db #看是否转换成功(成功如下)
vuser.db: Berkeley DB (Hash, version 9, native byte-order)
ll vuser.db #查看
chmod 600 vuser.db #降低该文件的权限
rm -rf vuser.list #删除明文文件
③创建PAM文件
vim /etc/pam.d/vsftpd.vu #创建并编辑.du文件
auth required pam_userdb.so db=/etc/vsftpd/vuser #db参数
account required pam_userdb.so db=/etc/vsftpd/vuser #db参数
.vu的文件名可以任意,用于虚拟用户认证,db参数为上一步db_load命令生成的数据库文件的路径,不用写后缀名
④创建本地用户来映射虚拟用户
useradd -d /var/ftpdir -s /sbin/nologin virtual #创建虚拟用户的映射账户
chmod -Rf 755 /var/ftpdir/ #修改权限
创建本地用户来映射虚拟用户,避免 系统无法处理虚拟用户所创建文件的属性权限
⑤添加虚拟用户模式的参数
anonymous_enable=NO #禁止匿名开放模式
local_enable=YES #允许本地用户模式
guest_enable=YES #开启虚拟用户模式
guest_username=virtual #指定虚拟用户账户
pam_service_name=vsftpd.vu(将vsftpd修改为vsftpd.vu) #指定PAM文件,存放于/etc/pam.d/目录下
allow_writeable_chroot=YES #允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求
在本地模式的基础上添加虚拟用户模式的参数,必须关闭匿名模式,开启本地模式,且修改pam_service_name参数为vsftpd.vu
⑥设置虚拟用户的权限
mkdir /etc/vsftpd/a(任意) #创建用户目录,此目录对应之前创建的用户
cd a/ #切换到创建的目录路径
touch 用户1(默认查看权限) #创建之前一样的用户并写入相应的权限
vim 用户2 #创建之前一样的用户并写入相应的权限
anon_upload_enable=YES #上传权限
anon_mkdir_write_enable=YES #写的权限
anon_other_write_enable=YES #重命名,删除权限 vim /etc/vsftpd/vsftpd.conf #定义虚拟用户不同权限的配置文件所存放的路径
user_config_dir=/etc/vsftpd/a(文件中添加)
⑦重启vsftpd服务
systemctl restart vsftpd
B.客户机端
ftp连接用虚拟用户1和用户2登录进行测试了,实现各自之前设置的权限即可
总结:
1.涉及到服务的配置,要考虑防火墙和SELinux的因素
2.配置了服务,都要加入开机启动中,让其每次重启自动生效
3.出现问题从用户权限、目录权限、网络防火墙、SELinux服务几个方面去考虑
自学linux——18.FTP服务器的搭建的更多相关文章
- Linux篇---ftp服务器的搭建
一.前述 企业中linux搭建ftp服务器还是很实用的,所以本文针对centoos7和centoos6搭建服务器教程做个总结. 二.具体 1.显示如下图则表示已安装 vsftp软件.如果未显示则需要安 ...
- Linux:FTP服务器的搭建
FTP服务器的简介 系统用户 即系统本机的用户.Linux一般不会针对实体用户进行限制,因此实体用户可以针对整个文件 系统进行工作.但通常不希望他们通过FTP方式远程访问系统. 虚拟用户 只能采用FT ...
- 自学linux——20.Samba服务器的搭建
Samba服务器的搭建 一.Samba的认识 1.Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件 2.Samba不仅用于Linux与windows系统直接的文件共享和打印共 ...
- 自学linux——21. NFS服务器的搭建
NFS服务器的搭建 1.NFS的认识 NFS(Network File System即网络文件系统)服务最大的功能就是可以透过网络,让不同的机器.不同的操作系统.可以彼此分享文件,可以将远程 Linu ...
- Linux中FTP服务器的搭建
vmware12上安装的CentOs6.8,最终实现物理机上的windows10能正常访问CentOs上的FTP服务器. 一.查看是否安装有ftp相关的安装包. # rpm -qa | grep vs ...
- 自学linux——19.TFTP服务器的搭建
TFTP服务器的搭建 1.TFTP的认识 TFTP(Trivial File Transfer Protocol)简单文件传输协议,是一种基于UDP协议在客户端和服务器之间进行简单文件传输的协议,不需 ...
- 《Linux下FTP服务器搭建及FTP使用》
.LOGAndy:mxtd114 <Linux下FTP服务器搭建> 0.root登录 1.安装ftp # yum -y install ftp 2.安装vsftpd # yum -y in ...
- linux下Ftp环境的搭建
Ftp环境的搭建 1.ftp软件的安装 使用ssh远程连接linux系统,上传和下载一些文件,Ftp是不可少的 Ftp的安装很简单,远程登录系统后使用命令 yum list vsftpd 通过提示 ...
- Linux启动ftp服务器530 Permission denied解决方法(已试,行)
Linux启动ftp服务器530 Permission denied解决方法重新在虚拟机下安装了linux.现在我想启动linux自带的ftp服务器:#service vsftpd start . ...
随机推荐
- Dapr Golang HTTP 调用
Dapr Golang HTTP 调用 版本介绍 Go 版本:1.15 Dapr Go SKD 版本:0.11.1 工程结构 从上图可知,新建 3 个 Go 启动项目,cmd 为启动项目目录,其中 c ...
- Linux 基础命令及基本目录
Linux 基础命令及基本目录 一.网卡 1.网卡配置文件路径 /etc/sysconfig/network-scripts/ifcfg-eth0 配置文件: TYPE=Ethernet # 以太 ...
- 鸿蒙开发板外设控制 之 实现物理按键的“长按事件”(按键通用框架 V0.0.2)
我在之前的帖子<实现按键"按下事件"和"释放事件"的通用框架(V0.0.1)>中阐述了DTButton-V0.0.1的设计思路,并且也在帖子中开源了 ...
- C++ 数据结构 2:栈和队列
1 栈 1.1 栈的基本概念 栈(stack)又名堆栈,它是一种 运算受限的线性表.限定 仅在表尾进行插入和删除操作 的线性表.表尾被称为栈顶,相对地,把另一端称为栈底. 1.1.1 特点 它的特殊之 ...
- 卡特兰数 洛谷P1641 [SCOI2010]生成字符串
卡特兰数 参考博客 介绍 卡特兰数为组合数学中的一种特殊数列,用于解决一类特殊问题 设\(f(n)\)为卡特兰数的第n项 其通项公式为 \[f(n)=\frac{2n\choose n}{n+1} \ ...
- 《Machine Learning in Action》—— 剖析支持向量机,单手狂撕线性SVM
<Machine Learning in Action>-- 剖析支持向量机,单手狂撕线性SVM 前面在写NumPy文章的结尾处也有提到,本来是打算按照<机器学习实战 / Machi ...
- 14flask 渲染富文本编辑器
转载一个flask 渲染富文本编辑器: https://blog.csdn.net/qq_32198277/article/details/53355249 这里会产生一个问题: 通过富文本编辑器的数 ...
- springboot-rabbitmq之hello-world(一)
概念介绍 这里引用rabbit官网的一张图 image.png 大概意思就是生产着把消息发送到队列然后消费者消费消息 springboot实现 hello-world比较简单这里直接上代码 生产者 声 ...
- Pandas_数据读取与存储数据(全面但不精炼)
Pandas 读取和存储数据 目录 读取 csv数据 读取 txt数据 存储 csv 和 txt 文件 读取和存储 json数据 读取和存储 excel数据 一道练习题 参考 Numpy基础(全) P ...
- [MIT6.006] 7. Counting Sort, Radix Sort, Lower Bounds for Sorting 基数排序,基数排序,排序下界
在前6节课讲的排序方法(冒泡排序,归并排序,选择排序,插入排序,快速排序,堆排序,二分搜索树排序和AVL排序)都是属于对比模型(Comparison Model).对比模型的特点如下: 所有输入ite ...