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(局域网)测试!
可以登录但是无法上传下载,接下来:
 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.其它用户组可读可执行
 

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

  1. 【CC2530入门教程-增强版】基础技能综合实训案例(基础版)-上位机源码

    [CC2530入门教程-增强版]基础技能综合实训案例(基础版)-上位机源码 广东职业技术学院  欧浩源 一.需求分析 按照指定参数打开串口,与测控终端建立数据传输通道,并根据应用要求实现程序逻辑,具体 ...

  2. 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)

    大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...

  3. Linux ftp服务器部署(最简单的ftp教程)

    之前在阿里云领了一个ECS服务器(顺便说一句,白嫖的,真香~),就想着做点什么,然后试着做个 ftp 站点,因为第一次尝试,结果走了不少弯路.最后终于完成了,研究了两天(哎~,脑壳笨没办法)就想着记录 ...

  4. ftp服务器搭建(windows)+实现ftp图片上传对接

    ftp服务器搭建(windows): vsftpd简介: vsftpd是“very secure FTP daemon”的缩写,是一个完全免费的.开放源代码的ftp服务器软件. 下载地址: http: ...

  5. 搭建FTP(win10版)以及基本FTP操作

    参考链接:https://www.jianshu.com/p/ece21421e246 一.FTP服务器搭建 控制面板 - 程序和功能 - 启动或关闭Windows功能 启动以下功能: 搜索 “Int ...

  6. 阿里云ECS服务器Linux环境下配置php服务器(一)--基础配置篇

    开始安装软件了,我们需要安装的软件有apache,php和MySQL. ps:如果你购买的是北京的服务器,有个安全组需要设置,我全部用的默认设置,暂时还没发现会有什么影响. 首先关闭SELINUX(S ...

  7. Spark (Python版) 零基础学习笔记(一)—— 快速入门

    由于Scala才刚刚开始学习,还是对python更为熟悉,因此在这记录一下自己的学习过程,主要内容来自于spark的官方帮助文档,这一节的地址为: http://spark.apache.org/do ...

  8. Spark (Python版) 零基础学习笔记(二)—— Spark Transformations总结及举例

    1. map(func) 将func函数作用到数据集的每个元素,生成一个新的分布式的数据集并返回 >>> a = sc.parallelize(('a', 'b', 'c')) &g ...

  9. webpack4.x 从零开始配置vue 项目(二)基础搭建loader 配置 css、scss

    序 上一篇已经把基本架子搭起来了,现在来增加css.scss.自动生成html.css 提取等方面的打包.webpack 默认只能处理js模块,所以其他文件类型需要做下转换,而loader 恰恰是做这 ...

随机推荐

  1. 洛谷P5219 无聊的水题 I [prufer序列,生成函数,NTT]

    传送门 思路 有标号无根树的计数,还和度数有关,显然可以想到prufer序列. 问题就等价于求长度为\(n-2\),值域为\([1,n]\),出现次数最多的恰好出现\(m-1\)次,这样的序列有哪些. ...

  2. mysql运维

    反反复复装了好多次的mysql,上学的时候从来没有考虑过稳定性,装起来,能跑通,增删改查没有问题万事大吉.参与工作后参与平台搭建和维护,平台的稳定性是首先必须要考虑的问题,之前装mysql使用经历了密 ...

  3. C# TTS 文字和英文

    using System;using System.Globalization;using System.Linq;using System.Speech.Synthesis;using System ...

  4. Confluence 6 附件存储文件系统的分级

    从 Confluence 3.0 开始,附件的存储方式有了重大的改变和升级.如果你是从 Confluence 2.10 及其早期版本升级上来的,请参考 Upgrading Confluence 页面中 ...

  5. ios集成极光推送:Undefined symbols for architecture arm64: "_dns_parse_resource_record", referenced from:?

    添加libresolv.tbd库,即可解决问题 Undefined symbols for architecture arm64: "_dns_parse_resource_record&q ...

  6. docker 给none镜像打镜像

    1.遇到none的镜像打tag方式: docker  tag  + docker ID    + 命名:版本名 案例:docker  tag  41b7307026c0  gitlab:test 这就 ...

  7. 插件使用一进度条---nprogress

    nprogress 是像youtube一样在顶部出现进度条,用在一些加载比较缓慢的场景中. 官方网站是 http://ricostacruz.com/nprogress/ 源码在 https://gi ...

  8. 解决OS睡眠功能中,移动鼠标就会唤醒

    设备管理器,在相应项目上右键属性.

  9. Squid作代理服务器,用户密码验证,高匿代理

    参考URL: https://www.cnblogs.com/vijayfly/p/5800038.html https://www.cnblogs.com/operaculus/p/5705184. ...

  10. 多线程外排序解决大数据排序问题2(最小堆并行k路归并)

    转自:AIfred 事实证明外排序的效率主要依赖于磁盘,归并阶段采用K路归并可以显著减少IO量,最小堆并行k路归并,效率倍增. 二路归并的思路会导致非常多冗余的磁盘访问,两组两组合并确定的是当前的相对 ...