Linux开机启动项总结
在应急响应时有时会遇到系统被植入后门,添加启动项等操作,如果不清楚启动项的话,可能会被黑客植入一些开机启动项,无法彻底清除后门程序,所以在这梳理下启动项的东西
1.操作系统接管硬件以后,首先读入 /boot 目录下的内核文件
2.内核文件加载以后,就开始运行第一个程序 /sbin/init,它的作用是初始化系统环境。由于init是第一个运行的程序,它的进程编号(pid)就是1。其他所有进程都从它衍生,都是它的子进程。
3.许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。
init进程的一大任务,就是去运行这些开机启动的程序。但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。
Linux预置七种运行级别(0-6)。一般来说,0是关机,1是单用户模式(也就是维护模式),6是重启
init进程首先读取文件 /etc/inittab,它是运行级别的设置文件。如果你打开它,可以看到第一行是这样的:
inittab文件中的值都是如下格式:
id:runlevel:action:process
id:
id是指入口标识符,他是个字符串,对于getty、mingetty等,需求id和tty的编号相同,否则getty将不能正常工作。
runlevel:
指定runlevel的级别。能指定多个runlevel级别,也能不为runlevel字段指定特定的值。
运行级别决定了系统启动的绝大部分行为和目的。这个级别从0到6,具有不同的功能。不同的运行级定义如下:
# 0 - 停机(千万别把initdefault设置为0,否则系统永远无法启动)
# 1 - 单用户模式
# 2 - 多用户,没有 NFS
# 3 - 完全多用户模式(标准的运行级)
# 4 - 系统保留的
# 5 - X11 (x window)
# 6 - 重新启动
action:
定义了该进程应该运行在何种状态下,其中action常用的种类有:
wait:切换至某级别运行一次process
respawn:此process终止的话,就重新启动之 initdefault:设置默认运行级别的,process省略
sysinit:设定系统初始化方式,此处一般指定为:/etc/rc.d/rc.sysinit
process:包含init执行的进程
那么,看inittab的配置,系统运行级别为3,运行级别3有些什么程序呢,系统怎么知道每个级别应该加载哪些程序呢?......回答是每个运行级别在/etc目录下面,都有一个对应的子目录,指定要加载的程序。

每个级别都会在在对应的目录下有对应的启动文件

上述文件名都是"字母S+两位数字+程序名"的形式。字母S表示Start,也就是启动的意思(启动脚本的运行参数为start),如果这个位置是字母K,就代表Kill(关闭) 后面的两位数字表示处理顺序,数字越小越早处理。
而且我们注意到,上述的文件都是软链文件,真实文件都存放在 /etc/int.d/目录下面,系统启动的时候都会加载该目录下的文件
我们以iptables举例,对应的软链文件为S08iptables,现在我们用chkconfig改变下启动状态

当我们执行 chkconfig --level 3 iptables off 后,iptables状态变为以K打头的文件,也就是系统启动后是要关闭的(在level3运行级别下)
上述说明针对的都是Centos5及以前的版本,在Centos6下不太一样,在上图1中,我们看到系统给出的说明中,系统在/etc/inittab中定义完运行级别后,其他的都不生效,而系统的初始化操作都在 /etc/init/*.conf文件中完成,例如系统初始化,是在/etc/init/rc.conf完成,我们查看下该文件

该文件执行了 exec /etc/rc.d/rc $RUNLEVEL命令,我们来看一下/etc/rc.d/rc这个脚本做了什么,脚本较长,简单理解就是
遍历 /etc/rc$RUNLEVEL.d/目录下的脚本文件,以K开头的就关闭,以S开头的就启动,和上面所说的过程是一样的
综上,我们在应急的时候需要排查的启动项有:
/etc/rc.d/rc
/etc/rc
/etc/rc.local
/etc/rc.d/rc.local
/etc/rc.d/rc
/etc/init/*.conf
/etc/rc$runlevel.d/ 该目录下都是链接的可执行文件,也可以自己添加可执行程序
以上目录都是重点排查的启动项目
另外一个添加启动项的地方在 /etc/profile里面,还有 /etc/profile.d/目录下以sh结尾的文件
Linux开机启动项总结的更多相关文章
- linux开机启动项问题。6版本与7版本不同之处 。
参考 网址:https://blog.csdn.net/weixin_41909810/article/details/82775247
- Linux minilogd占用内存过高及开机启动项修改
minilogd: 今天发现一台服务起的内存正常占用应该在70左右,但是内存占用却到了90%以上,用top查看发现minilogd占用了30%左右的内存,是不符合预期的,查看开机启动项并无minilo ...
- Linux 添加开机启动项的三种方法
linux 添加开机启动项的三种方法. (1)编辑文件 /etc/rc.local 输入命令:vim /etc/rc.local 将出现类似如下的文本片段: #!/bin/sh## This scri ...
- Linux 系统开机启动项清理
一般情况下,常规用途的 Linux 发行版在开机启动时拉起各种相关服务进程,包括许多你可能无需使用的服务,例如蓝牙bluetooth.Avahi. 调制解调管理器ModemManager.ppp-dn ...
- Linux的那些事-系统启动(增加开机启动项)
1 /etc/init.d 2 /etc/inittab 3 /etc/rc.d/init.d 1. /etc/init.d 是一般开机的启动服务存放在这个目录下,至于实现机制,其实 ...
- linux开机启动
开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程.分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径. 启动第一步--加载BIOS 当你打开计算机电源,计算机 ...
- linux系统设置服务开机启动3种方法,Linux开机启动程序详解
linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图 方法2:利用命令行chkconfig命令进行设置 简要说明 ...
- CentOS7 添加开机启动项
centos6 加入开机启动: vim /etc/rc.d/rc.local 注意命令不要出错,重启后生效 或者 centos 7 下: vim /lib/systemd/system/ ...
- linux开机启动详细流程图
linux开机启动详细流程图: 一.BIOS 加电自检当你按电源开关开机时,电脑会首先去启动BIOS(基本输入输出系统),BIOS一般是集成在主板上的.BIOS 的工作1.检测连接硬件,比如显卡,内存 ...
随机推荐
- 【Leetcode_easy】687. Longest Univalue Path
problem 687. Longest Univalue Path 参考 1. Leetcode_easy_687. Longest Univalue Path; 2. Grandyang; 完
- 车道线检测github集锦
re1. github_lane_detection; end
- self-attention详解
编写你自己的 Keras 层 对于简单.无状态的自定义操作,你也许可以通过 layers.core.Lambda 层来实现.但是对于那些包含了可训练权重的自定义层,你应该自己实现这种层. 这是一个 K ...
- 简单的api实现以及动态函数调用
实现一个简单的api功能,环境python2.7 请求方法:curl http://ip:8000/?name={api中的方法名}|python -m json.tool 只需编写api的方法即可 ...
- 【VS开发】网络SOCKET编程INADDR_ANY选项
INADDR_ANY选项 网络编程中常用到bind函数,需要绑定IP地址,这时可以设置INADDR_ANY INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或&q ...
- go os.State类用法
参考文章: https://blog.csdn.net/weixin_43851310/article/details/87988648
- 综合练习1,划分vlan,单臂路由,DHCP服务及其限制网段、租期,设置根桥,OSPF路由通告综合练习
实验要求: 1.在LSW1上分别给vlan10和vlan20做DHCP网段分别为192.168.10.0/24.192.168.20.0/24禁用192.168.10.200-253,192.168. ...
- K8S从入门到放弃系列-(5)kubernetes集群之kube-apiserver部署
摘要: 1.kube-apiserver为是整个k8s集群中的数据总线和数据中心,提供了对集群的增删改查及watch等HTTP Rest接口 2.kube-apiserver是无状态的,虽然客户端如k ...
- Spring IoC 详解(四)
Spring IoC 概述 IoC:Inverse of Control(控制反转) 为了更好的理解用可以这样通俗易懂的这样讲:IOC主要是说是new一个类来使用,方式分为:开发这手动创建和Sprin ...
- quartz 简单定时器
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...