1.1、根目录下目录结构
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var
1.2、目录结构解释
我们应该知道 Windows 有一个默认的安装目录专门用来安装软件。
Linux 的软件安装目录也应该是有讲究的,遵循这一点,对后期的管理和维护也是有帮助的。
-
/usr
系统级的目录,可以理解为C:/Windows/
, -
/usr/lib
可理解为C:/Windows/System32
。 -
/usr/local
用户级的程序目录,可以理解为C:/Progrem Files/
。用户自己编译的软件默认会安装到这个目录下。 -
/opt
用户级的程序目录,可以理解为D:/Software
,opt
有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf
掉即可。在硬盘容量不够时,也可将/opt
单独挂载到其他磁盘上使用。 -
/usr/src
系统级的源码目录。 -
/usr/local/src
用户级的源码目录。
/opt
Here’s where optional stuff is put. Trying out the latest Firefox beta? Install it to /opt where you can delete it without affecting other settings. Programs in here usually live inside a single folder whick contains all of their data, libraries, etc.
这里主要存放那些可选的程序。你想尝试最新的firefox测试版吗?那就装到/opt目录下吧,这样,当你尝试完,想删掉firefox的时候,你就可 以直接删除它,而不影响系统其他任何设置。安装到/opt目录下的程序,它所有的数据、库文件等等都是放在同个目录下面。
举个例子:刚才装的测试版firefox,就可以装到/opt/firefox_beta目录下,/opt/firefox_beta目录下面就包含了运 行firefox所需要的所有文件、库、数据等等。要删除firefox的时候,你只需删除/opt/firefox_beta目录即可,非常简单。
/usr/local
This is where most manually installed(ie. outside of your package manager) software goes. It has the same structure as /usr. It is a good idea to leave /usr to your package manager and put any custom scripts and things into /usr/local, since nothing important normally lives in /usr/local.
这里主要存放那些手动安装的软件,即不是通过“新立得”或apt-get安装的软件。它和/usr目录具有相类似的目录结构。让软件包管理器来管理/usr目录,而把自定义的脚本(scripts)放到/usr/local目录下面,我想这应该是个不错的主意。
/bin
存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。
/etc
存放系统管理和配置文件
/home
存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
/usr
用于存放系统应用程序,比较重要的目录/usr/local 本地系统管理员软件安装目录(安装系统级的应用)。这是最庞大的目录,要用到的应用程序和文件几乎都在这个目录。
/usr/x11r6
存放x window的目录
/usr/bin
众多的应用程序
/usr/sbin
超级用户的一些管理程序
/usr/doc
linux文档
/usr/include
linux下开发和编译应用程序所需要的头文件
/usr/lib
常用的动态链接库和软件包的配置文件
/usr/man
帮助文档
/usr/src
源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin
本地增加的命令
/usr/local/lib
本地增加的库
/opt
额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里。
/proc
虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
/root
超级用户(系统管理员)的主目录(特权阶级^o^)
/sbin
存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等。
/dev
用于存放设备文件。
/mnt
系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统。
/boot
存放用于系统引导时使用的各种文件
/lib
存放跟文件系统中的程序运行所需要的共享库及内核模块。共享库又叫动态链接共享库,作用类似windows里的.dll文件,存放了根文件系统程序运行所需的共享文件。
/tmp
用于存放各种临时文件,是公用的临时文件存储点。
/var
用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等。
/lost+found
每个分区默认都有一个 lost+found
目录,用来存放 fsck 过程中部分修复的文件的。
二、init进程
2.1、init简介
在redhat 6之前,init是Linux系统操作中不可缺少的程序之一。 是一个由内核启动的用户级进程。
内核启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式来启动其他用户级的进程或服务,在系统启动完成完成后,init将变为守护进程监视系统其他进程。所以,init始终是第一个进程(其PID始终为1)。
内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init.如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。
init作为上帝(内核)派到人间的使者,肩负着光荣而艰巨的任务,它要启动许多进程,init的担子很重,所以它要更快,更高,更强 ,但是老派的init已经捉襟见肘了,在redhat的6、7已经没有了老版的init,将其取而代之upstart和systemd。
在redhat5之前,init进程的程序在如下的目录
/sbin/init
自从redhat5之后,init进程就被其他进程取代了。
2.2、淘汰原因
老派的init在radhat5上搭载,这个程序已经非常古老了,运行效率也不怎么快,它的运行方式是非常笨的,就是一个进程一个进程的启动,启动完这一个再启动另一个,在效率上未免有些差强人意,给开机速度拉后腿,所以被淘汰。ubuntu重新开发了一款类似init名字叫做upstart,这一款init比传统的init运行效率更高,虽然在红帽6依然是叫init这个名字,但是实质上就是upstart,我们通过rpm –qf /sbin/init
就可以查看的到init的安装包其实名字叫做upstart。
但这并不是最好的,最好的叫做“systemd”,这个init可以完全实现多个进程并行启动,现在的7就是用的这个,其实就可以感受到,centos7的开机速度比centos6的要快很多。
init程序位于/sbin/init,它的主配置文件是/etc/inittab。我重点突出了主这个字,正如你所想,init的配置文件不止这一个,但这个无疑是最重要的。正如前面所述,由于init进程有很多问题,已经被淘汰,所以在redhat7之后的/etc/inittab配置文件就再也没有任何内容。并且/sbin/init这个程序也变成了一个软链接,链接到/lib/systemd/systemd
[root@localhost sbin]# ll | grep init*
lrwxrwxrwx. 1 root root 22 6月 21 2020 init -> ../lib/systemd/systemd
-rwxr-xr-x. 1 root root 126688 10月 31 2018 iprinit
lrwxrwxrwx. 1 root root 16 6月 21 2020 telinit -> ../bin/systemctl
三、/etc/init与/etc/init.d
3.1、/etc/init.d/
/etc/init.d/目录下存放的是 System V init 工具 (SysVinit) 使用的脚本。 /etc/init.d/是 Linux 的传统服务管理包,包含 init 程序以及一些用于启动和停止服务并配置它们的基础设施,init程序内核完成初始化后运行的第一个程序,加载到内存后的进程号是1。 具体来说,/etc/init.d/中的文件都是一些 shell 脚本,这些shell脚本是用来执行start,stop,restart,reload(如果支持)等命令,其目的就是管理特定服务的。 这些脚本可以直接调用,例如/etc/init.d/networking start
,也可被其他trigger直接激活执行,这些trigger被软连接在/etc/rcN.d/中。
3.2、/etc/init/
/etc/init 包含 Upstart 使用的配置文件。 Upstart 是 Ubuntu 倡导的一个新的服务管理包。其实Upstart也不新了,最新的服务管理包是Systemd。 /etc/init/ 中的文件是配置文件,告诉 Upstart 如何以及何时启动、停止、重新加载配置或查询服务的状态。 从 lucid开始,Ubuntu 正在从 SysVinit 过渡到 Upstart,这就解释了为什么许多服务都带有 SysVinit 脚本,尽管 Upstart 配置文件是首选。 实际上,SysVinit 脚本是由 Upstart 中的兼容层处理的。
3.3、service命令
在CentOS6或者redhat 6 我们会用service xxx start来启动某个进程,那么它背后究竟执行了什么?
其实service的绝对路径为/sbin/service ,打开这个文件cat /sbin/service,我们会发现其实它就是一个很普通的shell脚本:
在redhat7以前,这个脚本service主要作了如下两点:
-
初始化执行环境变量PATH和TERM PATH=/sbin:/usr/sbin:/bin:/usr/bin 。TERM,为显示外设的值,一般为xterm
-
调用/etc/init.d/文件夹下的相应脚本。
但是在Redhat 7或CentOS 7,这个脚本的作用有一些改变, 就是如果再使用service xxx start 等命令,就会重定向到 /bin/systemctl 。
四、systemd
4.1、systemd简介
传统的Linux系统启动过程主要由著名的init进程(也被称为SysV init启动系统)来处理,而基于init的启动系统被认为有效率不足的问题,systemd是Linux系统机器的另一种启动方式,宣称弥补了以传统Linux SysV init为基础的系统的缺点;Systemd是用来启动守护进程,已成为大多数发行版的标准配置。
在CentOS 7或者RedHat 7之前,我们启动服务一般采取init进行。如果:
# sudo /etc/init.d/mysqld start
# service mysqld start
这种启动方式是有缺点的:
-
是启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
-
是启动脚本复杂。init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。
Systemd就是为了解决这些问题而诞生的。它的设计目标是,为系统的启动和管理提供一套完整的解决方案,根据Linux惯例,字母d是守护进程(daemon)的缩写,Systemd这个名字的含义,就是它要守护整个系统。使用了Systemd,就不需要再用init了。Systemd取代了initd,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。
$ systemctl --version #命令查看Systemd的版本。
Systemd并不是一个命令,而是一组命令,涉及到系统管理的方方面面。
4.2、systemd中的命令
在systemd中,Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。
在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。Systemd通常是所有其它守护进程的父进程。
systemctl 是Systemd的主命令,用于管理系统
#重启系统
$ sudo systemctl reboot
#关闭系统,切断电源
$ sudo systemctl poweroff
#CPU停止工作
$ sudo systemctl halt
#暂停系统
$ sudo systemctl suspend
#让系统进入冬眠状态
$ sudo systemctl hibernate
#让系统进入交互式休眠状态
$ sudo systemctl hybrid-sleep
#启动进入救援状态(单用户状态)
$ sudo systemctl rescue
systemd-analyze 命令用于查看启动耗时
#查看启动耗时
$ systemd-analyze
#查看每个服务的启动耗时
$ systemd-analyze blame
#显示瀑布状的启动过程流
$ systemd-analyze critical-chain
#显示指定服务的启动流
$ systemd-analyze critical-chain atd.service
除了上述的命令,在systemd中还有hostnamectl、localectl、timedatectl、loginctl等命令。
4.3、systemctl示例
查看命令版本号
[root@localhost sbin]# systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN
systemd和systemctl的位置
[root@localhost sbin]# whereis systemd
systemd: /usr/lib/systemd /etc/systemd /usr/share/systemd /usr/share/man/man1/systemd.1.gz
[root@localhost sbin]# whereis systemctl
systemctl: /usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz
检查systemd是否运行
[root@localhost sbin]# ps -eaf | grep [s]ystemd
root 1 0 0 07:44 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 3121 1 0 07:44 ? 00:00:00 /usr/lib/systemd/systemd-journald
root 3156 1 0 07:44 ? 00:00:00 /usr/lib/systemd/systemd-udevd
root 6055 1 0 07:44 ? 00:00:00 /usr/lib/systemd/systemd-logind
dbus 6065 1 0 07:44 ? 00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
4.4、Unit
Systemd可以管理所有系统资源,不同的资源统称为 Unit(单位),Unit一共分成以下12种。
Service unit:系统服务
Target unit:多个Unit构成的一个组
Device Unit:硬件设备
Mount Unit:文件系统的挂载点
Automount Unit:自动挂载点
Path Unit:文件或路径
Scope Unit:不是由Systemd启动的外部进程
Slice Unit:进程组
Snapshot Unit:Systemd快照,可以切回某个快照
Socket Unit:进程间通信的socket
Swap Unit:swap文件
Timer Unit:定时器
Unit状态
systemctl status命令用于查看系统状态和单个Unit的状态。
#显示系统状态
$ systemctl status
#显示单个Unit的状态
$ sysystemctl status bluetooth.service
#显示远程主机的某个Unit的状态
$ systemctl -H root@rhel7.example.com status httpd.service
Unit管理
对于用户来说,最常用的是下面这些命令,用于启动和停止Unit(主要是service)。
#立即启动一个服务
$ sudo systemctl start apache.service
#立即停止一个服务
$ sudo systemctl stop apache.service
#重启一个服务
$ sudo systemctl restart apache.service
#杀死一个服务的所有子进程
$ sudo systemctl kill apache.service
#重新加载一个服务的配置文件
$ sudo systemctl reload apache.service
#重载所有修改过的配置文件
$ sudo systemctl daemon-reload
#显示某个 Unit 的所有底层参数
$ systemctl show httpd.service
#显示某个 Unit 的指定属性的值
$ systemctl show -p CPUShares httpd.service
#设置某个 Unit 的指定属性
$ sudo systemctl set-property httpd.service CPUShares=500
依赖关系
Unit之间存在依赖关系:A依赖于B,就意味着Systemd在启动A的时候,同时会去启动B。 systemctl list-dependencies命令列出一个Unit的所有依赖。
$ systemctl list-dependencies nginx.service
上面命令的输出结果之中,有些依赖是Target类型(详见下文),默认不会展开显示。如果要展开Target,就需要使用--all参数。
$ systemctl list-dependencies --all nginx.service
Unit的配置文件
每一个Unit都有一个配置文件,告诉Systemd怎么启动这个Unit。Systemd默认从目录/etc/systemd/system/读取配置文件。但是里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/,真正的配置文件存放在那个目录。
systemctl enable命令用于在上面两个目录之间,建立符号链接关系。
$ sudo systemctl enable clamd@scan.service
#等同于
$ sudo ln -s '/usr/lib/systemd/system/clamd@scan.service' '/etc/systemd/system/multi-user.target.wants/clamd@scan.service'
如果配置文件里面设置了开机启动,systemctl enable命令相当于激活开机启动,与之对应的,systemctl disable命令用于在两个目录之间,撤销符号链接关系,相当于撤销开机启动。
$ sudo systemctl disable clamd@scan.service
配置文件的后缀名,就是该Unit的种类,比如sshd.socket;如果省略,Systemd默认后缀名为.service,所以sshd会被理解成sshd.service。
如果需要详细学习,请参考https://www.linuxprobe.com/systemd-command.html
五、Centos7防火墙
5.1、FirewallD简介
firewallD与iptables关系
iptables 和 firewalld 都是工作在用户空间、用来定义规则的工具,本身不是防火墙,他们定义的规则,可以让内核空间当中的netfilter读取,并且实现防火墙工作。
netfilter是操作系统核心层内部的一个数据包处理模块,它具有如下功能:
1.网络地址转换 nat
2.数据包内容修改 mangle
3.数据包过滤的防火墙功能 filter
centos7 默认使用firewalld ;iptables默认无法被systemctl控制,需要安装iptables-services、iptables-devel这两个依赖包。
firewalld和 iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结 构以及使用方法不一样罢了。
我们这里所说的结构并不是firewalld软件的结构,而是配置文件的结构。 在具体介绍firewalld配置文件结构之前学生先来给大家介绍一下firewalld的配置模式,firewalld的配置模式设计的非常巧妙,而且这种设计思路也非常值得我们借鉴和学习。
FirewallD 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。它支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项。它也支持允许服务或者应用程序直接添加防火墙规则的接口。 以前的 system-config-firewall/lokkit 防火墙模型是静态的,每次修改都要求防火墙完全重启。这个过程包括内核 netfilter 防火墙模块的卸载和新配置所需模块的装载等。而模块的卸载将会破坏状态防火墙和确立的连接。相反,firewall daemon 动态管理防火墙,不需要重启整个防火墙便可应用更改。因而也就没有必要重载所有内核防火墙模块了。不过,要使用 firewall daemon 就要求防火墙的所有变更都要通过该守护进程来实现,以确保守护进程中的状态和内核里的防火墙是一致的。另外,firewall daemon 无法解析由 iptables 和 ebtables 命令行工具添加的防火墙规则。
守护进程通过 D-BUS 提供当前激活的防火墙设置信息,也通过 D-BUS 接受使用 PolicyKit 认证方式做的更改。
5.2、FirewallD特性
-
守护进程 应用程序、守护进程和用户可以通过 D-BUS 请求启用一个防火墙特性。特性可以是预定义的防火墙功能,如:服务、端口和协议的组合、端口/数据报转发、伪装、ICMP 拦截或自定义规则等。该功能可以启用确定的一段时间也可以再次停用。 通过所谓的直接接口,其他的服务(例如 libvirt )能够通过 iptables 变元(arguments)和参数(parameters)增加自己的规则。 amanda 、ftp 、samba 和 tftp 服务的 netfilter 防火墙助手也被“守护进程”解决了,只要它们还作为预定义服务的一部分。附加助手的装载不作为当前接口的一部分。由于一些助手只有在由模块控制的所有连接都关闭后才可装载。因而,跟踪连接信息很重要,需要列入考虑范围。
-
静态防火墙(system-config-firewall/lokkit) 使用 system-config-firewall 和 lokkit 的静态防火墙模型实际上仍然可用并将继续提供,但却不能与“守护进程”同时使用。用户或者管理员可以决定使用哪一种方案。 在软件安装,初次启动或者是首次联网时,将会出现一个选择器。通过它你可以选择要使用的防火墙方案。其他的解决方案将保持完整,可以通过更换模式启用。 firewall daemon 独立于 system-config-firewall,但二者不能同时使用。
-
区域 网络区域定义了网络连接的可信等级。这是一个一对多的关系,这意味着一次连接可以仅仅是一个区域的一部分,而一个区域可以用于很多连接。
-
预定义服务 服务是端口和/或协议入口的组合。备选内容包括 netfilter 助手模块以及 IPv4、IPv6地址。
-
端口和协议 定义了 tcp 或 udp 端口,端口可以是一个端口或者端口范围。
-
ICMP阻塞 可以选择 Internet 控制报文协议的报文。这些报文可以是信息请求亦可是对信息请求或错误条件创建的响应。
-
伪装 私有网络地址可以被映射到公开的IP地址。这是一次正规的地址转换。
-
端口转发 端口可以映射到另一个端口以及/或者其他主机。
-
哪个区域可用? 由firewalld 提供的区域按照从不信任到信任的顺序排序。
-
丢弃 任何流入网络的包都被丢弃,不作出任何响应。只允许流出的网络连接。
-
阻塞 任何进入的网络连接都被拒绝,并返回 IPv4 的 icmp-host-prohibited 报文或者 IPv6 的 icmp6-adm-prohibited 报文。只允许由该系统初始化的网络连接。
-
公开 用以可以公开的部分。你认为网络中其他的计算机不可信并且可能伤害你的计算机。只允许选中的连接接入。
-
外部 用在路由器等启用伪装的外部网络。你认为网络中其他的计算机不可信并且可能伤害你的计算机,只允许选中的连接接入。
-
隔离区(dmz) 用以允许隔离区(dmz)中的电脑有限地被外界网络访问。只接受被选中的连接。
-
工作 用在工作网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
-
家庭 用在家庭网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
-
内部 用在内部网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
-
受信任的 允许所有网络连接。
-
我应该选用哪个区域? 例如,公共的 WIFI 连接应该主要为不受信任的,家庭的有线网络应该是相当可信任的。根据与你使用的网络最符合的区域进行选择。
-
由NetworkManager控制的网络连接 防火墙不能够通过 NetworkManager 显示的名称来配置网络连接,只能配置网络接口。因此在网络连接之前 NetworkManager 将配置文件所述连接对应的网络接口告诉 firewalld 。如果在配置文件中没有配置区域,接口将配置到 firewalld 的默认区域。如果网络连接使用了不止一个接口,所有的接口都会应用到 fiwewalld。接口名称的改变也将由 NetworkManager 控制并应用到firewalld。
-
由脚本控制的网络 对于由网络脚本控制的连接有一条限制:没有守护进程通知 firewalld 将连接增加到区域。这项工作仅在 ifcfg-post 脚本进行。因此,此后对网络连接的重命名将不能被应用到firewalld。同样,在连接活动时重启 firewalld 将导致与其失去关联。现在有意修复此情况。最简单的是将全部未配置连接加入默认区域。
-
使用firewalld 图形界面工具:firewall-config firewall-cmd命令行工具:firewall-cmd
5.3、FirewallD配置
Firewalld命令
#进程与状态相关
systemctl start firewalld.service #启动防火墙
systemctl stop firewalld.service #停止防火墙
firewall-cmd --state #查看防火墙状态
firewall-cmd --reload #更新防火墙规则
firewall-cmd --state #查看防火墙状态
firewall-cmd --reload #重载防火墙规则
firewall-cmd --list-ports #查看所有打开的端口
firewall-cmd --list-services #查看所有允许的服务
firewall-cmd --get-services #获取所有支持的服务
#区域相关
firewall-cmd --list-all-zones #查看所有区域信息
firewall-cmd --get-active-zones #查看活动区域信息
firewall-cmd --set-default-zone=public #设置public为默认区域
firewall-cmd --get-default-zone #查看默认区域信息
firewall-cmd --zone=public --add-interface=eth0 #将接口eth0加入区域public
#接口相关
firewall-cmd --zone=public --remove-interface=eth0 #从区域public中删除接口eth0
firewall-cmd --zone=default --change-interface=eth0 #修改接口eth0所属区域为default
firewall-cmd --get-zone-of-interface=eth0 #查看接口eth0所属区域
#端口控制
firewall-cmd --add-port=80/tcp --permanent #永久添加80端口例外(全局)
firewall-cmd --remove-port=80/tcp --permanent #永久删除80端口例外(全局)
firewall-cmd --add-port=65001-65010/tcp --permanent #永久增加65001-65010例外(全局)
firewall-cmd --zone=public --add-port=80/tcp --permanent #永久添加80端口例外(区域public)
firewall-cmd --zone=public --remove-port=80/tcp --permanent #永久删除80端口例外(区域public)
firewall-cmd --zone=public --add-port=65001-65010/tcp --permanent #永久增加65001-65010例外(区域public)
注:如果某个接口不属于任何Zone,那么这个接口的所有数据包使用默认的Zone的规则。
命令含义
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
Systemctl命令
systemctl start firewalld.service #启动服务
systemctl stop firewalld.service #关闭服务
systemctl reloadt firewalld.service #重载配置
systemctl restart firewalld.service #重启服务
systemctl status firewalld.service #显示服务的状态
systemctl enable firewalld.service #在开机时启用服务
systemctl disable firewalld.service #在开机时禁用服务
systemctl is-enabled firewalld.service #查看服务是否开机启动
systemctl list-unit-files|grep enabled #查看已启动的服务列表
systemctl --failed #查看启动失败的服务列表
关闭CentOS7自带Firewall启用iptables
yum install iptables-services #安装iptables
systemctl stop firewalld.service #停止firewalld
systemctl mask firewalld.service #禁止自动和手动启动firewalld
systemctl start iptables.service #启动iptables
systemctl start ip6tables.service #启动ip6tables
systemctl enable iptables.service #设置iptables自启动
systemctl enable ip6tables.service #设置ip6tables自启动
注:静态防火墙规则配置文件是 /etc/sysconfig/iptables 以及 /etc/sysconfig/ip6tables
常用命令
vi /usr/lib/firewalld/services/ssh.xml
vi /usr/lib/firewalld/services/html.xml
systemctl enable firewalld.service
systemctl restart firewalld.service
firewall-cmd --state
firewall-cmd --zone=public --permanent --add-port=8502/tcp
vi /etc/firewalld/zones/public.xml
<port protocol="tcp" port="8502"/>
systemctl restart firewalld.service
2.3、firewall 配置
The configuration for firewalld is stored in various XML files in /usr/lib/firewalld and /etc/firewalld。
firewalld 的配置存储在 /usr/lib/firewalld 和 /etc/firewalld 中的各种 XML 文件中
注意:以下firewalld 的操作只有重启之后才有效:service firewalld restart