CentOS7 下的配置FTP服务器增强版~(零基础学会FTP配置)

2023-11-11

ps:原文不知出处,但是原文也不能正常启动,这里做了一些修改!如果能正常配置请在下方留言让更多的人看到,因为之前我本人照着网上的教程安装卸载了十多次也无法正常使用,不希望后面的兄弟继续浪费时间,如果不能使用,也请劳烦贴出相应的错误!
参考:
一、 防火墙设置CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙

1.  安装iptables防火墙

# 先检查是否安装了iptables(如果提示iptables:unrecognized service 则表示系统尚未安装)

service iptables status

# 安装iptables

yum install iptables

# 升级iptables

yum update iptables 

# 安装iptables-services

yum install iptables-services

2. 关闭Firewall

# 停止firewall 服务

systemctl stop firewalld.service         

# 禁用firewall 服务   

systemctl mask firewalld.service         

# 禁止firewall服务开机启动 

systemctl disable firewalld.service      

# 查看firewall服务状态

firewall-cmd --state         

3. 查看Iptables所在目录与配置文件

#安装完成后,配置文件默认所在位置

#/etc/sysconfig/iptables

4. 设置现有规则

# 查看iptables现有规则  

iptables -L -n                  

# 先允许所有,不然有可能会杯具

iptables -P INPUT ACCEPT        

# 清空所有默认规则       

iptables -F      

# 清空所有自定义规则                                        

iptables -X         

# 所有计数器归0                                    

iptables -Z                                             

4.1 iptables 规则设置

# 允许来自于lo接口的数据包(本地访问)

iptables -A INPUT -i lo -j ACCEPT

# 允许本机对外访问

iptables -A OUTPUT -j ACCEPT

# 允许接受本机请求之后的返回数据 RELATED,是为FTP设置的

iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT

# 开放22端口(SSH)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 开放21、20端口(FTP)

iptables -A INPUT -p tcp --dport 21 -j ACCEPT

iptables -A INPUT -p tcp --dport 20 -j ACCEPT

# 开放80端口(HTTP)

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 开放443端口(HTTPS)

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 允许ping

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

# 10060到10090是Vsftpd被动模式需要的端口,可自定义一段大于1024的tcp端口

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10090 -j ACCEPT

# 这两条的意思是在INPUT表和FORWARD表中拒绝所有其他不符合上述任何一条规则的数据包。

并且发送一条host prohibited的消息给被拒绝的主机。

iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited

注:防火墙的规则是从上到下解析的

4.2 保存规则设定

# 保存上述规则

service iptables save

# 查看iptables现有规则

iptables -L -n   

4.3 开启iptables服务 

# 最后重启防火墙使配置生效

systemctl restart iptables.service

# 设置防火墙开机启动

systemctl enable iptables.service

# 查看状态

systemctl status iptables.service

# 确定是否enabled

systemctl list-unit-files | grep iptables


二、 关闭SELINUX

vi /etc/selinux/config

#SELINUX=enforcing # 注释掉

#SELINUXTYPE=targeted # 注释掉

SELINUX=disabled # 增加

:wq! # 保存退出

setenforce 0 # 使配置立即生效
如果出现: setenforce: SELinux is disabled解决办法(很多是没有注意到这个细节导致最后ftp无法访问!)

如果在使用setenforce命令设置selinux状态的时候出现这个提示:setenforce: SELinux is disabled

那么说明selinux已经被彻底的关闭了

如果需要重新开启selinux,请按下面步骤:

vi /etc/selinux/config

更改为:SELINUX=1

必须重启linux,不重启是没办法立刻开启selinux的

重启完以后,使用getenforce,setenforce等命令就不会报“setenforce: SELinux is disabled”了
然后再重复:
SELINUX=disabled  # 增加
保存退出
setenforce 0 # 使配置立即生效
如果没有出现setenforce: SELinux is disabled就继续下一步,否则请先将此问题解决!


三、 安装vsftpd 

# 安装vsftpd

yum install -y vsftpd 

yum -y install ftp vsftpd

# 安装vsftpd虚拟用户配置依赖包

yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI 

# 启动

systemctl start vsftpd.service

# 查看vsftpd服务的状态

systemctl status vsftpd.service

systemctl list-unit-files | grep vsftpd.service

# 设置vsftpd开机启动

systemctl enable vsftpd.service 


四、 配置

# 备份默认配置文件

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak 

# 执行以下命令进行设置
sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./g" '/etc/vsftpd/vsftpd.conf'

#之后添加下列内容到vsftpd.conf末尾

vim /etc/vsftpd/vsftpd.conf


use_localtime=YES

listen_port=21

chroot_local_user=YES

idle_session_timeout=300

guest_enable=YES

guest_username=vsftpd

user_config_dir=/etc/vsftpd/vconf

data_connection_timeout=1

virtual_use_local_privs=YES

pasv_min_port=10060

pasv_max_port=10090

accept_timeout=5

connect_timeout= 1

echo -e "use_localtime=YES\nlisten_port=21\nchroot_local_user=YES\nidle_session_timeout=300 \

ndata_connection_timeout=1\nguest_enable=YES\nguest_username=vsftpd \

nuser_config_dir=/etc/vsftpd/vconf\nvirtual_use_local_privs=YES \

npasv_min_port=10060\npasv_max_port=10090 \

naccept_timeout=5\nconnect_timeout=1" >> /etc/vsftpd/vsftpd.conf


五、 建立虚拟用户名单文件

touch /etc/vsftpd/virtusers

# 编辑虚拟用户名单文件:(第一行账号,第二行密码,注意:不能使用root做用户名,系统保留)

vi /etc/vsftpd/virtusers

web1

123456

web2

123456

web3

123456


六、 生成虚拟用户数据文件

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

#设定PAM验证文件,并指定对虚拟用户数据库文件进行读取

chmod 600 /etc/vsftpd/virtusers.db 


七、 在/etc/pam.d/vsftpd文件添加以下信息

# 修改前先备份 

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak

# 将auth及account的所有配置行均注释掉

vi /etc/pam.d/vsftpd

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

注:如果系统为32位,上面改为lib,否则配置失败


八、 新建系统用户vsftpd,用户目录为/home/vsftpd, 用户登录终端设为/bin/false(即:使之不能登录系统)

useradd vsftpd -d /home/vsftpd -s /bin/false

chown -R vsftpd:vsftpd /home/vsftpd


九、 建立虚拟用户个人Vsftp的配置文件

mkdir /etc/vsftpd/vconf

cd /etc/vsftpd/vconf

touch web1 web2 web3 # 这里创建三个虚拟用户配置文件

mkdir -p /home/vsftpd/web1/

vi web1 # 编辑用户web1配置文件,其他的跟这个配置文件类似

local_root=/home/vsftpd/web1/

write_enable=YES

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES


十、 重启vsftpd服务器

systemctl restart vsftpd.service

# 查看vsftpd服务的状态

systemctl status vsftpd.service

systemctl list-unit-files | grep vsftpd

最后在浏览器或者我的电脑里输入 ftp://192.168.163.126(局域网)测试!
可以登录但是无法上传下载,接下来:
新建文件夹m:
mkdir /home/vsftpd/web1/m/
因为web1目录的所有者为root,所以ftp帐号web1不能进行下载

 

chown -R vsftpd:vsftpd /home/vsftpd/web1/m/
这样 /home/vsftpd/web1/m/  m这个目录的所有者为vdftpd即ftp帐号自己,web1帐号就能在m文件夹下进行上传下载删除!
  /****************************************************************************************************************************************************************************/
一般情况下,为了网站更安全,我们需要给文件或文件夹设置权限,在采用FTP登录的方式下,经常会用到755,766,777,644等设置。
具体这些数字都代表什么意思呢?
这三个数字分别表示:不同用户或用户组的权限。
    第一个数字 表示文件所有者的权限
    第二个数字 表示与文件所有者同属一个用户组的其他用户的权限
    第三个数字 表示其它用户组的权限。
权限分为三种: 读(r=4),写(w=2),执行(x=1)。
综合起来还有可读可执行5(rx=5=4+1)、可读可写6(rw=6=4+2)、可读可写可执行7(rwx=7=4+2+1)。
所以,755 设置用户的权限为:
1.文件所有者可读可写可执行 2.与文件所有者同属一个用户组的其他用户可读可执行 3.其它用户组可读可执行
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CentOS7 下的配置FTP服务器增强版~(零基础学会FTP配置) 的相关文章

  • Linux系统基础命令

    Linux系统常用基本命令 ls 查看当前目录下所有文件 注 蓝色 文件夹 白色 普通文件 绿色 拥有执行权限的文件 红色 压缩文件 touch 示例 touch filename txt 在当前目录下创建一个文件 注 文件名区分大小写 文
  • 【LeetCode】83. 删除排序链表中的重复元素

    83 删除排序链表中的重复元素 简单 方法 一次遍历 思路 由于给定的链表是排好序的 因此重复的元素在链表中出现的位置是连续的 因此我们只需要对链表进行一次遍历 就可以删除重复的元素 从指针 cur 指向链表的头节点 随后开始对链表进行遍历
  • 【时间序列数据挖掘】ARIMA模型

    目录 0 前言 一 移动平均模型MA 二 自回归模型AR 三 自回归移动平均模型ARMA 四 自回归移动平均模型ARIMA 总结 0 前言 传统时间序列分析模型 ARIMA模型是一个非常灵活的模型 对于时间序列的好多特征都能够进行描述 比如
  • MYSQL数据库测评及整改

    1 查询数据库版本 select version 2 查询已安装的插件 show plugins 3 查询插件安装的位置 show variables like plugin dir 4 查询用户 选择数据库 select host use
  • 阿里云OCR图片识别

    阿里云OCR图片识别 请求参数 Body 请求示例 java 正常返回示例 错误码定义 阿里云OCR图片识别 单字识别 表格识别 旋转功能 准备条件 阿里云OCR图片识别API购买 初次购买1分钱500次接口调用 请求参数 Body 图像数
  • Java多线程——为什么弃用stop、suspend、resume方法

    初始的Java版本定义了一个stop方法用来终止一个线程 以及一个suspend方法用来阻塞一个线程直至另一个线程调用resume stop和suspend方法有一些共同点 都试图控制一个给定线程的行为 stop suspend和resum
  • 利用Python写Api

    初学者 仅作笔记参考 因为没使用web框架 采用的原生sql进行数据查询有点呆板 from mysql Database import Demo from utils tools import Tools import flask json
  • 运行快捷指令_iOS 13 快捷指令无法运行的解决办法

    升级 iOS13 以后 快捷指令 App 也迎来全新版本 新设计的快捷指令 App 有诸多不同 尤其在权限控制上更为严格 这导致部分快捷指令打开时报错的问题 首次添加快捷指令规则后 运行时提示 无法打开 XXX 这个问题其实很容易解决 方法
  • linux 下 redis 设置密码

    在服务器上 这里以linux服务器为例 为redis配置密码 1 第一种方式 当前这种linux配置redis密码的方法是一种临时的 如果redis重启之后密码就会失效 1 首先进入redis 如果没有开启redis则需要先开启 root
  • matlab函数结果,从Matlab函数返回多个输出变量

    一些选择 添加一个参数以指定控制台的详细输出 但默认情况下将其设置为false function A B C test x y z verbose if nargin 3 verbose false end A 2 x B 2 y C 2
  • JavaScript基础--es6新增的数组方法

    今天给大家介绍一些es6新增的常用数组方法 1 映射数组 map 方法 目的 为了操作原数组 但不改变原数组的值 作用 map 方法返回一个新数组 数组中的元素为原始数组元素调用函数处理后的值 不会对空数组进行检测 返回值 新数组 一定和原
  • 欧拉角的理解

    1 欧拉角概念 百度百科 欧拉角 用来确定定点转动刚体位置的3个一组独立角参量 欧拉角由章动角 旋进角 即进动角 和自转角 组成 欧拉角为欧拉首先提出而得名 维基百科 Euler angles 莱昂哈德 欧拉用欧拉角来描述刚体在三维欧几里得
  • 【100%通过率 】【华为OD机试真题 c++/java】关联端口组合并【 2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 有M 1 lt M lt 10 个端口组 每个端口组是长度为N 1 lt N lt 100 的整数数组 如果端口组间存在2个及以上不同端口相同
  • pycharm 退出scientific mode科学模式

    之前工作需要进入scientific mode将pycharm调成科学模式 后来使用bert模型发现一直报错 也没改动代码 困惑了大半天 偶然的机会 退出scientific mode发现不报错了 这里记录一下 我用的是pycharm社区版
  • 理解LSTM网络(翻译)

    Translated on December 19 2015 本文为博客 Understanding LSTM Networks 的翻译文章 原文链接 http colah github io posts 2015 08 Understan
  • MySQL数据库TDSQL架构分析及采用策略扩容流程

    MySQL数据库TDSQL架构分析及采用策略扩容流程 2016 10 14 22 16 401人阅读 评论 0 收藏 编辑 删除 分类 mysql 105 随着业务的发展 基于内存的NoSQL解决方案HOLD平台在高峰期一天支撑3000亿读
  • 太强大了!Packet Tracer抓包功能

    首先 咱们开启Cisco Packet Tracer软件 我这用的是5 3版 英文实在不好的可以将软件汉化 推荐使用英文版 对学习有好处 开启软件后 正常模式是实模式 如图 点击右下角的模式切换咱们切换到 模拟模式 界面如下 好 咱们先关掉
  • CSS3弹性盒子(Flex Box)

    CSS3弹性盒子 Flex Box 一 容器的属性 flex directionflex wrapflex flowjustify contentalign itemsalign content 1 flex direction属性决定主轴
  • Qt基础知识-创建Qt程序,Qt Creater常用快捷键,创建组件,对象树

    1 简介 Qt是一个跨平台的图形引擎 1991年由奇趣科技开发 优点 跨平台 接口简单易于上手 一定程度上简化了垃圾回收机制 2 创建Qt程序 名称 不能有空格 不能有中文 路径 不能有中文 创建cpp文件时选择继承的3个类 Qwidget

随机推荐

  • Nagle算法

    说明 本文是最近项目上使用tcp时遇到的问题找到的原因 参考了网络上的几篇文章整理出来 如有版权问题 请留言 Nagle算法用于对缓冲区内的一定数量的消息进行自动连接 该处理过程 称为Nagling 通过减少必须发送的封包的数量 提高了网络
  • ArabellaCPC 2019 I:Bashar and Hamada 贪心

    Bashar and Hamada 给你一个长度为 n 的数组 选k个数 使F ai aj k个数 i j 求k 2 3 n时 F的最大值 首先n 2时 肯定选择数组中的最大值和最小值 这样F2 max min F2最大 n 3时 在F2的
  • R语言文本分析《三国演义》

    数据读取与包的加载 由于最近对文本分析比较感兴趣 所以分析三国演义的文本 getwd setwd E 三国 library jiebaR library ggplot2 library jpeg library reshape2 libra
  • 2023年信息与通信工程国际会议(JCICE 2023)

    2023年信息与通信工程国际会议 JCICE 2023 重要信息 会议网址 www jcice org 会议时间 2023年3月17 19日 召开地点 西安 截稿时间 2023年2月10日 录用通知 投稿后2周内 收录检索 EI Scopu
  • 如何升级composer

    最近 使用composer时 发现提示升级了 本文记录一下composer的升级过程 升级composer 升级的办法嘛 也很简单 1 方法一 1 先获取composer安装地址 composer h 2 再用 1 获取的地址 compos
  • 为什么要使用Struts框架

    在JavaWEB项目中 原生的Servlet作为控制器在项目开发中难免会有一些弊端 1 每一个请求编写一个servlet 针对一个小功能模块就可能需要四个以上的自定义的Servlet 2 Servlet处理请求时需要调用多次的getPara
  • vue3的基本使用(超详细)

    一 初识vue3 1 vue3简介 2020年9月18日 vue3发布3 0版本 代号大海贼时代来临 One Piece 特点 无需构建步骤 渐进式增强静态的 HTML 在任何页面中作为 Web Components 嵌入 单页应用 SPA
  • 【暑期每日一题】洛谷 P6437 [COCI2011-2012#6] JACK

    题目链接 P6437 COCI2011 2012 6 JACK 洛谷 计算机科学教育新生态 luogu com cn 题目描述 给定 n 个正整数 a1 an 请从中选择 3 个数字 满足他们的和不大于给定的整数 m 请求出这个和最大可能是
  • IP地址、子网掩码、网关、DNS的关系及sicket的常识

    1 什么是IP地址 32 4 8 255 D 1111 1111 B 28 1 所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址 按照TCP IP协议规定 IP地址用二进制来表示 每个IP地址长32bit 比特换
  • 怎么在java中关闭一个thread

    怎么在java中关闭一个thread 我们经常需要在java中用到thread 我们知道thread有一个start 方法可以开启一个线程 那么怎么关闭这个线程呢 有人会说可以用Thread stop 方法 但是这个方法已经被废弃了 根据O
  • ai画面怎么调大小_AI中怎么把图像等比例扩大或缩小尺寸

    展开全部 AI中么把图像等比例扩大或缩小尺寸步骤如e69da5e6ba903231313335323631343130323136353331333366303830下 1 打开ai的软件 执行菜单栏中文件 新建 或者直接使用快捷键Ctrl
  • 什么是Agent

    一方面 Agent技术为解决新的分布应用问题提供了有效途径 另一方面 Agent技术为全面准确地研究分布计算系统的特点提供了合理的概念模型 在分布计算领域 人们通常把在分布式系统中持续自主发挥作用的 具有以下特征的活着的计算实体称为Agen
  • gh-ost大表DDL工具源码阅读

    gh ost大表DDL工具源码阅读 最终目的 开发环境与测试数据库准备 一个简单的ddl案例 debug分析程序执行过程 vscode debug配置 变量介绍 核心处理逻辑 分析我的需求 最终目的 尝试通过阅读源码 多测试熟悉gh ost
  • 多线程学习

    线程的三种创建方式 1 继承Thread类 创建线程的快捷方式一 继承Thread 重写run方法 调用start开启线程 总结 注意线程开启不一定执行 由cpu调度执行 public class TestThread1 extends T
  • 可迭代对象__iter__(), __next__()

    一 解释 在 Python 中 迭代是指逐个访问容器 如列表 元组 集合 字典等 中的元素 为了实现迭代 我们需要使用可迭代对象和迭代器 可迭代对象 Iterable 具有 iter 方法的对象被称为可迭代对象 这个方法返回一个迭代器 迭代
  • git使用socks5代理提示:Unsupported proxy syntax in 127.0.0.1:1080

    提示说是语法错误 打开 gitconfig文件查看代理 http proxy socks5 127 0 0 1 1080 https proxy socks5 127 0 0 1 1080 去掉前后的单引号 错误消失 http proxy
  • sql server 2008 r2各个版本的区别与选择

    windows server 2012 r2 standard安装sql server 2008 R2 https blog csdn net maoiur article details 78322175https blog csdn n
  • UniCode编码表

    Unicode编码则是采用双字节16位来进行编号 可编65536字符 基本上包含了世界上所有的语言字符 它也就成为了全世界一种通用的编码 而且用十六进制4位表示一个编码 非常简结直观 为大多数开发者所接受 特别是十六进制编码后 可以解决汉字
  • java泛型的简介说明

    转自 java泛型的简介说明 下文笔者讲述java泛型的简介说明 如下所示 在JDK5中 Java语言引入了泛型机制 但是这种泛型机制其实是通过类型擦除来实现 即Java中的泛型只在程序源代码中有效 源代码阶段提供类型检查 在编译后的字节码
  • CentOS7 下的配置FTP服务器增强版~(零基础学会FTP配置)

    ps 原文不知出处 但是原文也不能正常启动 这里做了一些修改 如果能正常配置请在下方留言让更多的人看到 因为之前我本人照着网上的教程安装卸载了十多次也无法正常使用 不希望后面的兄弟继续浪费时间 如果不能使用 也请劳烦贴出相应的错误 参考 h