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

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.mzph.cn/news/30416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二叉树题目:根据二叉树创建字符串

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:根据二叉树创建字符串 出处:606. 根据二叉树创建字符串 难度 3 级 题目描述 要求 给你二叉树的根结…

ubuntu 安装 nvidia 驱动

ubuntu 安装 nvidia 驱动 初环境与设备查询型号查询对应的驱动版本安装驱动验证驱动安装结果 本篇文章将介绍ubuntu 安装 nvidia 驱动 初 希望能写一些简单的教程和案例分享给需要的人 环境与设备 系统:ubuntu 设备:Nvidia GeForce RTX 4090 查询型…

Linux C 语言 mosquitto 方式 MQTT 发布消息

1 说明 采用 mosquitto 库,实现对主题发布消息。 其中服务器有做限制,需要对应的 cilent id ,cafile 、certfile 、keyfile 等配置 2 开发环境 采用ubuntu 直接编译调试 安装mosquitto 库 sudo apt install libmosquitto-dev sudo apt-ge…

PyTorch 微调终极指南:第 2 部分 — 提高模型准确性

一、说明 如今,在训练深度学习模型时,通过在自己的数据上微调预训练模型来迁移学习已成为首选方法。通过微调这些模型,我们可以利用他们的专业知识并使其适应我们的特定任务,从而节省宝贵的时间和计算资源。本文分为四个部分&…

亿欧智库:2023中国宠物行业新趋势洞察报告(附下载)

关于报告的所有内容,公众【营销人星球】获取下载查看 核心观点 户外赛道本质上迎合了全球共性需求的增长,从养宠意愿的转化到养宠生活的需求,多层次的需求推动行业发展新趋势 从需求端进行分析,可以将养宠意愿的转化分为三个层…

OSPF 动态路由协议 路由传递

影响OSPF路由选择的因素: 1.OSPF路由的开销值:宽带参考值默认为100. COST1000/接口带宽。此时接口 带宽的值可更改,更改后只改变参考数值,带宽仍然为初始值。 注意:更改COST需要 在路由的入方向,数据的出方…

3分钟了解别人如何用ChatGPT打造独特个人IP(成为网红)的

​想必你也有所察觉,在当前形势下,打造个人IP非常重要。许多有影响力的CEO和网红都在打造自己IP。如果你还没有建立自己的个人IP,那么现在正是开始的时候。而且,相比以前,你甚至都不需要找专业的个人IP顾问了&#xff…

【数据结构OJ题】轮转数组

原题链接:https://leetcode.cn/problems/rotate-array/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 1. 方法一:暴力求解,将数组的第一个元素用临时变量tmp存起来,再将数组其他元素往右挪动一步&…

编译iOS系统可用的FFmpeg

在进行编译之前,需要做一些准备工作安装必备文件: 1 安装 gas-preprocessor FFmpeg-iOS-build-script 自动编译脚本需要使用到 gas-preprocessor . 执行 sudo git clone https://github.com/bigsen/gas-preprocessor.git /usr/local/bin/gas sudo c…

ChatGPT会取代搜索引擎吗?BingChat、GoogleBard与ChatGPT区别

目前暂时不会,ChatGPT为代表的聊天机器人很可能会直接集成到搜索中,而不是取代它。微软已经通过Bing Chat和Bing做到了这一点,它将“聊天”选项卡直接放入Bing搜索的菜单中。Google、百度也分别开始尝试通过其AI生成技术将Google Bard、文心一…

创建好的VMware虚拟机如何连接上外网?MobaX和XShell如何连接虚拟机

配置虚拟机网卡 首先点击VMware菜单栏,编辑-虚拟网络编辑器-更改设置 选择VMnet8-NAT设置,并记住子网IP之后有用 记住网关IP 修改实际创建的虚拟机网卡 修改设置,vi /etc/sysconfig/network-scripts/ifcfg-ens32 修改前: 修…

FineBI 人力资源 专题

此处使用FineBI处理人力资源数据,数据来源于HR_database数据文件,将此文件拷贝到安装目录下 然后配置数据库连接 在【公共数据】中新建一个文件夹,并将之前数据库中需要用到的表放入此处,更新数据。显示如下。 这时候首先要建立…

PCI 简易通讯控制器有黄色感叹号

一、问题描述 设备管理器中,其他设备中显示 “PCI 简易通讯控制器”驱动未安装,显示黄色感叹号: 二、原因分析 右键该驱动,查看属性ID,显示为: PCI \ VEN_8086&DEV_1C3A&SUBSYS…

react-virtualized可视化区域渲染的使用

介绍 github地址:https://github.com/bvaughn/react-virtualized 实例网址:react-virtualized如果体积太大,可以参考用react-window。 使用 安装: yarn add react-virtualized。在项目入口文件index.js中导入样式文件&#xff…

集合工具类 Collections:提升集合操作效率

文章目录 多元素添加:addAll 方法随机置换:shuffle 方法自定义对象排序:sort 方法总结 在Java的集合框架中,Collections 是一个包含了许多操作集合的静态方法的工具类。通过使用 Collections 类提供的方法,我们能够更加…

FineReport 使用汇总(不定期更新)

1,下载地址 免费下载FineReport - FineReport报表官网 这里注意 2,后台统计 sql 还是需要自己写 就会有数据 而直接查询表, 没有数据 不过,可能是我不会用。还需要再研究。

事务,不只ACID | 京东物流技术团队

1. 什么是事务? 应用在运行时可能会发生数据库、硬件的故障,应用与数据库的网络连接断开或多个客户端端并发修改数据导致预期之外的数据覆盖问题,为了提高应用的可靠性和数据的一致性,事务应运而生。 从概念上讲,事务…

用C语言高效地打印杨辉三角

假设杨辉三角的通项公式为a(n),则打印形式如下: 然而我们知道,它应该是这样的: 三角形两边的值都为1,且每个元素的值都为该元素正上方和其正上方前面的元素的值之和。 为了实现这个代码,我们需要知道每行首…

最新SQLMap进阶技术

点击星标,即时接收最新推文 本文选自《web安全攻防渗透测试实战指南(第2版)》 五折购买链接:u.jd.com/3ibjeF6 SQLMap进阶:参数讲解 (1)--level 5:探测等级。 参数“--level 5”指需…

数据库签名的那些事儿

写在前面,关于签名的应用场景 除了我们后端经常使用的接口签名来校验数据这些常见的场景,对于数据安全性要求比较严格的业务来说,大部分落库的核心数据 也都需要签名,为啥? 因为怕数据库的数据被篡改数据或者被攻击了&#xff0c…