操作系统访问控制机制

使用访问控制技术,可以设置用户对系统资源的访问权限,即限定用户只能访问允许访问的资源。访问控制还可以通过设置文件的属性,来保护文件只能被读而不能被修改,或只允许核准的用户对其进行修改等。

1.1 保护域

把一个进程能对某对象执行操作的权利称为访问权,它可以用一个有序对<对象名,权集>来表示,例如,某进程对文件F1有执行读和写操作的权利,这时,该进程的访问权可表示为<F1,{RW}>

保护域是进程对一组对象访问权的集合,进程只能在指定域内执行操作。因此,保护域规定了进程所能访问的对象和能执行的操作。

不同的保护域可以相交,相交部分表示它们有共同的权限。

补充:

  • R:读操作

  • W:写操作

  • E:执行操作

  • S:切换操作

实例:

在下图所示的3个域中,它们分别是D1D2D3。其中D2D3相交,表明访问权限<O7,{W}>D2D3共享,这表示运行在D2D3上的任意一个进程都可以对对象O7执行写操作。需要注意的是,进程只有在D1中执行时才能读写对象O1,另外,仅在域D3中的进程才能执行对象O6

1.2 访问矩阵

保护域机制是实现系统资源保护的一种模型,我们可以利用一个矩阵来描述这种模型,称之为访问矩阵(Access Matrix)

访问矩阵的行代表域,列代表对象。矩阵的每个条目是一个访问集合。由于列明确定义了对象,可以在访问权限中删除对象名称。条目<i,j>定义了在域Di中执行的进程在访问对象Oi时被允许执行的操作集合。

实例:

在下表所示的访问矩阵中,进程在域D1中执行时,它可以读文件F2,写文件F1F2,执行文件F2F3。进程在域D4中执行时,可以读文件F2F3,写文件F1。只有在域D2中执行的进程才可以访问打印机。

对象域F1F2F3打印机
D1WR, W, EE
D2RW
D3ER
D4R, WR

如果将域本身也看作一个保护对象,可以把域的切换操作添加到访问控制矩阵,这样即可控制域切换。当需要将一个进程切换到另外一个域时,其实就是在一个对象(域)上执行一个操作(切换)。进程必须能够在域之间进行切换,当且仅当访问权限switch∈access(i,j)时,才允许从域Di切换域Dj

实例:

在下表中,一个在域D2中执行的进程可以切换到域D3。域D4中的一个进程可以切换到域D1,而D1中的进程可以切换到域D2

对象域F1F2F3打印机D1D2D3D4
D1WR, W, EES
D2RWS
D3ERSSS
D4R, WRS

1.3 访问矩阵的实现

访问控制表

把访问矩阵按列向量(对象)划分,为每一列建立一张访问控制表ACL(Access Control List)。

在该表中,矩阵中属于该列的所有空项已被删除,只剩下有序对<域,权集>。通常情况下,访问矩阵中的空项远多于非空项,因而使用访问控制表可以显著地减少所占用的存储空间提高查找速度

实例:

进程在域D1中执行时,它可以读、写和执行文件F2。进程在域D3中执行时,可以执行文件F2。由于域D2D4为空,因此,访问控制表中不包含D2D4项,从而节省了存储空间。

对象域F2
D1R, W, E
D3E

访问权限表

把访问矩阵按行(域)划分,为每一行建立一张访问权限表CL(Capability List)。访问权限表是由一个域对每一个对象可以执行的操作集合所构成的表。访问权限表包括两部分:对象名访问权。表中的每一项为该域对某对象的访问权限。

实例:

进程在域D1中执行时,它可以写文件F1,读、写和执行文件F2,执行文件F3

对象域F1F2F3
D1WR, W, EE

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/407868.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

记录一次xpclr检测中报错(“No permission to write in the specified directory: {0}“)

这里写自定义目录标题 报错修正思路&#xff1a;将 -O参数修改成为相对目录加文件名称格式。 报错 看到这个问题&#xff0c;一头雾水&#xff0c;没有写入权限。结果是程序问题。 修正思路&#xff1a;将 -O’参数修改成为相对目录加文件名称格式。 代码&#xff1a;

软件实例,物流货运配货单打印模板软件单据打印查询管理系统软件教程,可以同时打印标签或补打

软件实例&#xff0c;物流货运配货单打印模板软件单据打印查询管理系统软件教程&#xff0c;可以同时打印标签或补打 一、前言 以下软件教程以 佳易王物流单打印查询系统V17.1为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 这个版本在原来基…

linux之JAVA环境配置Tomcat离线安装与启动

文章目录 一、jdk安装具体步骤二、tomcat安装具体步骤三、MySql具体步骤修改密码登录 四、部署单价项目具体步骤 一、jdk安装具体步骤 1、查询是否有jdk java -version 2、进入opt目录 cd /opt 3.连接服务器工具 进入opt目录&#xff0c;把压缩文件上传 4.等待传好之后&am…

二分算法(c++版)

二分的本质是什么&#xff1f; 很多人会认为单调性是二分的本质&#xff0c;但其实其本质并非单调性&#xff0c;只是说&#xff0c;有单调性的可以进行二分&#xff0c;但是有些题目没有单调性我们也可以进行二分。其本质其实是一个边界问题&#xff0c;给定一个条件&#xf…

【flutter】环境安装

安装flutter sdk 下载sdk flutter sdk就包含dart&#xff0c;所以我们只用安装flutter sdk就可以了。 我们去清华大学开源软件镜像站下载&#xff0c;flutter开发中&#xff0c;版本对不上基本项目就跑步起来&#xff0c;如果是团队协同开发的话&#xff0c;建议统一下载指定版…

【踩坑】PyTorch中指定GPU不生效和GPU编号不一致问题

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 指定GPU不生效问题 解释&#xff1a;就是使用os.environ["CUDA_VISIBLE_DEVICES"] "1"后&#xff0c;后面使用起来仍然是cuda0. 解决&#xff1a;在最开头就使用 import os os.environ[&…

python-mysql协程并发常用操作封装

目录 前言封装代码测试代码参考 前言 协程异步操作MYSQL是常用的&#xff0c;博主这里在GitHub上找了两个包&#xff0c;databases和aiomysql&#xff0c;第一个包除了mysql外还支持其他的数据库&#xff0c;且操作MYSQL时底层也是使用的aiomysql&#xff0c;但文档内容比较少…

【大数据】Flink 内存管理(三):TaskManager 内存分配(理论篇)

Flink 内存管理&#xff08;三&#xff09;&#xff1a;TaskManager 内存分配 1.配置 Total Memory2.配置 Heap and Managed Memory2.1 Task (Operator) Heap Memory2.2 Managed Memory 3.配置 Off-Heap Memory&#xff08;Direct or Native&#xff09;4.详细内存模型5.Framew…

YOLO系列论文阅读(v1--v3)

搞目标检测&#xff0c;绕不开的一个框架就是yolo&#xff0c;而且更糟糕的是&#xff0c;随着yolo的发展迭代&#xff0c;yolo网络可以做的事越来越多&#xff0c;语义分割&#xff0c;关键点检测&#xff0c;3D目标检测。。。这几天决定把YOLO系列彻底梳理一下&#xff0c;在…

C++的STL常用算法->常用遍历算法、常用查找算法、常用排序算法、常用拷贝和替换算法、常用算术生成算法、常用集合算法

#include<iostream> using namespace std; #include <algorithm> #include <vector> //常用遍历算法 for_each //普通函数 void print01(int val) { cout << val << " "; } //仿函数 //函数对象 class print02 { public: v…

Wireshark TS | Linux 系统对时问题

问题描述 节前业务运维同事提交了一个 case &#xff0c;说是部署在新业务区域的 Linux 服务器和老业务区域的 Linux 服务器无法对时&#xff0c;脚本里使用的是 clockdiff 命令&#xff0c;无法正常返回结果&#xff0c;而在老业务区域两台服务器之间执行命令就正常&#xff…

Java基于微信小程序的校园二手物品交易系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

公厕智慧化_智慧化的公厕

公厕智慧化是现代城市建设中的重要一环。通过信息化、数字化和智慧化技术手段&#xff0c;实现对公共厕所的高效管理和服务&#xff0c;不仅提升了城市环境质量&#xff0c;还改善了居民生活品质。智慧公厕的智慧化包括监测、管理、服务和设备的智慧化&#xff0c;利用先进科技…

Unity中URP实现水体效果(水的深度)

文章目录 前言一、搭建预备场景1、新建一个面片&#xff0c;使其倾斜一个角度&#xff0c;来模拟水底和岸边的效果2、随便创建几个物体&#xff0c;作为与水面接触的物体3、再新建一个面片&#xff0c;作为水面 二、开始编写水体的Shader效果1、新建一个URP基础Shader2、把水体…

汇编语言movs指令学习

字符串传送指令(Move String Instruction) movs 该指令是把指针DS:SI所指向的字节、字或双字传送给指针ES:DI所指向内存单元&#xff0c;并根据标志位DF对寄存器DI和SI作相应增减。该指令的执行不影响任何标志位。 记不清这指令是8086就有的&#xff0c;还是386以后新加的&…

【Redis】常见的5种数据类型(上)

文章目录 1 :peach:前言:peach:2 :peach:Redis 基本的全局命令:peach:2.1 :apple:keys:apple:2.2 :apple:exists:apple:2.3 :apple:del:apple:2.4 :apple:expire:apple:2.5 :apple:ttl:apple:2.6 :apple:type:apple: 3 :peach:单线程架构:peach:4 :peach:Redis 的 5 种常见数据…

Qt_纯虚函数的信号和槽

简介 在C中&#xff0c;纯虚函数是一个在基类中声明但没有实现的虚函数。纯虚函数的声明以 “ 0” 结尾。纯虚函数的目的是为了提供一个接口&#xff0c;但是不提供实现。派生类必须实现纯虚函数&#xff0c;否则它也会成为一个抽象类。纯虚函数可以在基类中定义&#xff0c;也…

MySQL--索引结构

索引-索引结构 1. 概述2. 二叉树3. B-Tree4. BTree5. Hash 1. 概述 MySQL的索引是在存储引擎层实现的&#xff0c;不同的存储引擎有不同的索引结构&#xff0c;主要包含以下几种&#xff1a; 上述是MySQL中所支持的所有的索引结构&#xff0c;下面展示不同的存储引擎对于索引…

力扣382.链表随机节点

Problem: 382. 链表随机节点 文章目录 题目描述思路复杂度Code 题目描述 思路 由水塘抽样易得&#xff0c;当遇到i个元素&#xff0c;有 1 / i 1/i 1/i的概率选择该元素&#xff1b;则在实际操作中我们定义一个下标i从1开始遍历每次判断rand() % i 0&#xff08;该操作就是判断…

Chrome插件(二)—Hello World!

本小节将指导你从头到尾创建一个基本的Chrome插件&#xff0c;你可以认为是chrome插件开发的“hello world”&#xff01; 以下详细描述了各个步骤&#xff1a; 第一步&#xff1a;设置开发环境 确保你拥有以下工具&#xff1a; 文本编辑器&#xff1a;如Visual Studio Cod…
最新文章