第十六章、【Linux】程序管理与SELinux初探

news/2025/3/19 21:36:19/

16.1 什么是程序 (process)

在Linux 系统当中:“触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个 ID ,称为 PID,同时依据启发这个程序的使用者与相关属性关系,给予这个 PID 一组有效的权限设置。” 从此以后,这个 PID 能够在系统上面进行的动作,就与这个 PID 的权限有关了!

16.1.1 程序与程序 (process & program)

如何产生一个程序?就是“执行一个程序或指令”就可以触发一个事件而取得一个PID。系统是仅认识binary file的,那么当我们要让系统工作的时候,当然就是需要启动一个 binary file,那个 binary file 就是程序 (program)。

那我们知道,每个程序都有三组人马的权限,每组人马都具有 r/w/x 的权限,所以:“不同的使用者身份执行这个 program 时,系统给予的权限也都不相同!”举例来说,我们可以利用touch 来创建一个空的文件,当 root 执行这个 touch 指令时,他取得的是 UID/GID = 0/0 的权限,而当 dmtsai (UID/GID=501/501) 执行这个 touch 时,他的权限就跟 root 不同。概念图如下:

                                      

                                     图16.1.1、程序被载入成为程序以及相关数据的示意图

如上图所示,程序一般是放置在实体磁盘中,然后通过使用者的执行来触发。触发后会载入到内存中成为一个个体,那就是程序。 为了操作系统可管理这个程序,因此程序有给予执行者的权限/属性等参数,并包括程序所需要的指令码与数据或文件数据等, 最后再给予一个PID 。系统就是通过这个 PID 来判断该 process 是否具有权限进行工作的。

举个更常见的例子,我们要操作系统的时候,通常是利用连线程序或者直接在主机前面登陆,然后取得我们的 shell。shell就是bash,bash在/bin/bash,同时间的每个人登陆都是执行/bin/bash,不过每个人取得的权限就是不同。也就是说,我们可以这样看:

                              

                                                 图16.1.2、程序与程序之间的差异

也就是说,当我们登陆并执行 bash 时,系统已经给我们一个 PID 了,这个 PID 就是依据登陆者的 UID/GID (/etc/passwd)。以上面的图 16.1.2 配合图 16.1.1 来做说明的话,我们知道 /bin/bash 是一个程序 (program),当 dmtsai 登陆后,他取得一个 PID 号码为2234 的程序,这个程序的 User/Group 都是 dmtsai ,而当这个程序进行其他作业时,例如上面提到的 touch 这个指令时, 那么由这个程序衍生出来的其他程序在一般状态下,也会沿用这个程序的相关权限的!

让我们将程序与程序作个总结:

程序 (program):通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等), 为实体文件的型态存在;

程序 (process):程序被触发后,执行者的权限与属性、程序的程序码与所需数据等都会被载入内存中, 操作系统并给予这个内存内的单元一个识别码 (PID),可以说,程序就是一个正在运行中的程序。

子程序与父程序:

在上面的说明里面,我们有提到所谓的“衍生出来的程序”,当我们登陆系统后,会取得一个 bash 的 shell ,然后,我们用这个 bash 提供的接口去执行另一个指令,例如 /usr/bin/passwd 或者是 touch 等等,那些另外执行的指令也会被触发成为 PID,那个后来执行指令才产生的 PID 就是“子程序”了,而在我们原本的 bash 环境下,就称为“父程序”了。

                      

                                                    图16.1.3、程序相关系之示意图

程序彼此之间是有相关性的。以上面的图示来看,连续执行两个 bash后,第二个 bash 的父程序就是前一个 bash。因为每个程序都有一个 PID ,那某个程序的父程序该如何判断?就通过 Parent PID (PPID) 来判断即可。


http://www.ppmy.cn/news/1021545.html

相关文章

《合成孔径雷达成像算法与实现》Figure3.7

代码复现如下: clc clear all close all%参数设置 TBP 100; %时间带宽积 T 10e-6; %脉冲持续时间%参数计算 B TBP/T; …

GOLANG进阶 之 接口(interface) 与 管道(channel)

好久没有跟新过文章了,小编最近有点忙,写文章的频率下降了许多,但是还是会持续跟新的,希望关注的同学仔细学习。 首先讲一下接口具体是个啥?小白可以结合官方定义和小编自己的理解共同学习下 官方解释:接口…

uniapp开发小程序-分包(微信错误码:800051)

在使用uniapp开发小程序时,上传的时候因为文件过大,显示上传失败。 以下是开发过程中遇到的问题及解决方法: 1. 问题一:因为文件过大,显示上传失败 ①尝试过把本地使用的图片压缩到最小; ②把图片转换为网…

内网隧道—HTTP\DNS\ICMP

本文仅限于安全研究和学习,用户承担因使用此工具而导致的所有法律和相关责任! 作者不承担任何法律和相关责任! HTTP隧道 Neo-reGeorg Neo-reGeorg 是一个旨在积极重构 reGeorg 的项目,目的是: 提高可用性&#xff0…

什么是IMAP协议?

IMAP(Internet Message Access Protocol)是一个应用层协议,用于访问和管理存储在远程服务器上的电子邮件。相比于POP3,IMAP提供了更加丰富的功能,特别适用于需要在多台设备上访问电子邮件的用户。以下是关于IMAP的详细…

FreeRTOS源码分析-11 软件定时器

目录 1 软件定时器概念及其应用 1.1 软件定时器定义 1.2 FreeRTOS软件定时器介绍 1.3 FreeRTOS软件定时器工作原理 2 软件定时器函数应用 2.1 功能需求 2.2 API 2.3 功能实现 3 软件定时器原理源码分析 3.1 软件定时器控制块 3.2 软件定时器任务&软件定时器创建 …

Lecoode有序数组的平方977

题目建议: 本题关键在于理解双指针思想 题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 文章讲解:代码随想录 视频讲解: 双指针法经典题目 | LeetCode:977.有序数组的平方_哔哩…

在用的二手电动汽车,雨季时,要注意保养哪些地方?

二手电动汽车在雨季的保养有一些特别需要注意的地方。首先,你要确保你的车子有足够的防水措施。电动汽车的电池组和控制系统通常都装在车辆底部,而这些部分是最怕水的。如果这些部分进水,可能会导致严重的电气故障,甚至可能会引起…