SELinux零知识学习十九、SELinux策略语言之类型强制(4)

接前一篇文章:SELinux零知识学习十八、SELinux策略语言之类型强制(3)

二、SELinux策略语言之类型强制

2. 类型、属性和别名

(4)别名

别名是引用类型时的一个备选的名字,能够使用类型名的地方就可以使用别名,包括TE规则、安全上下文和标记语句。别名通常用于策略改变时保持一致性,例如:一个旧策略可能引用了类型netscape_t,更新后的策略可能将类型名改为mozilla_t了,因此同时提供了一个别名netscape_t以保证与旧模块能够正常兼容。

两种方式进行别名声明。第一种方式是在使用type语句声明类型的同时就声明别名。因此在type语句中,声明mozilla_t类型时,可以使用关键字alias声明一个别名netscape_t,如:

type mozilla_t alias netscape_t, domain;

注意:别名声明是放在属性的前面的

第二种方式是使用typealias语句独立于type语句单独声明别名。下面的语句等同于单条type语句:

# 下边这两条语句等同于
type mozilla_t, domain;
typealias mozilla_t alias netscape_t;# 下边这一条语句
type mozilla_t alias netscape_t, domain;

当策略的结构难以在声明类型时同时声明别名的时候,typealias语句很有用。完整的typealias语句语法如下:

typealias 类型名称 alias 别名名称

  • 类型名称

要添加别名的类型的名称,类型必须使用type语句单独声明,并且此处只能指定一个类型名称。

  • 别名名称

一个或多个别名标识符,其命名约束与类型一样。如果同时指定多个别名,别名之间用空格分开,并使用大括号将所有别名括起来,如{aliasa_t aliasb_t}。

域类型和其他类型

我们在“类型”这个词之前加上其它形容词,如:“文件类型”、“目录类型”,这些形容词只是为了描述出类型的用途方向,并没有其它含义,例如文件类型指的是安全上下文中引用的类型与文件有关。事实上,类型也可以用于其它客体类别,在策略语言中对这些类型的用途并没有做限制,SELinux中的所有类型地位相同,都可以用于标记任何客体类别实例,只要授予了适当的访问权。

例如httpd_t域类型可以同时用于进程和文件,再加上一些额外的规则。按照惯例,这在SELinux策略中是要避免出现的,主要是为了使策略更清晰,但在某些情况下,我们需要将同一个类型既用作域类型又要用作文件类型,这完全取决于策略编写者的爱好了。

然而,就域类型而言,出于一些技术上的原因,也最好不要在文件和目录上使用它们。在Linux中,每个进程和文件都会在/proc/文件系统中由内核创建一个,这些客体用于获取和设置这些进程的属性。在SELinux中,进程的类型自动用于这些文件和目录。对于类型为httpd_t的进程而言,如果进程ID是1000,目录/proc/1000/和它下面包括的所有文件及子目录都自动具有httpd_t类型。如果httpd_t也用于普通文件,这就意味着授予其它普通文件访问权时,可能同时也授予了/proc/目录下的文件和目录同等的访问权,这可能并不是所希望的。

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

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

相关文章

EEPROM与Flash的区别

EEPROM与Flash的区别 EEPROMEEPROM内部功能框图实现写入数据内部结构存储管在充电或放电状态下有着不同的阈值电压 问题点EEPROM是如何失效的呢?为何EEPROM不能做大呢? ------------------------------------------------------------------------------…

HTTP请求详解

HTTP请求格式 请求报文通常包含以下部分: 请求行(Request Line): 包括请求方法、请求的URL和协议版本。 示例:GET /index.html HTTP/1.1 请求头(Request Headers): 包含了一系列的键值对,用来描述客户端请求的相关信息,比如Accept(告诉服务器客户端能够处理的MIME类型…

Java多线程(3)

Java多线程(3) 深入剖析Java线程的生命周期,探秘JVM的线程状态! 线程的生命周期 Java 线程的生命周期主要包括五个阶段:新建、就绪、运行、阻塞和销毁。 **新建(New):**线程对象通过 new 关键字创建&…

tamarin运行

首先我们找到安装tamarin的文件位置,找到以后进入该文件夹下 ubuntuubuntu:~$ sudo find / -name tamarin-prover /home/linuxbrew/.linuxbrew/var/homebrew/linked/tamarin-prover /home/linuxbrew/.linuxbrew/Cellar/tamarin-prover /home/linuxbrew/.linuxbrew/…

mac下vue-cli从2.9.6升级到最新版本

由于mac之前安装了 vue 2.9.6 的版本,现在想升级到最新版本,用官方给的命令: npm uninstall vue-cli -g 发现不行。 1、究其原因:从vue-cli 3.0版本开始原来的npm install -g vue-cli 安装的都是旧版,最高到2.9.6。安…

基于Netty实现的简单聊天服务组件

目录 基于Netty实现的简单聊天服务组件效果展示技术选型:功能分析聊天服务基础设施配置(基于Netty)定义组件基础的配置(ChatProperties)定义聊天服务类(ChatServer)定义聊天服务配置初始化类&am…

后端接口错误总结

今天后端错误总结: 1.ConditionalOnExpression(“${spring.kafka.exclusive-group.enable:false}”) 这个标签负责加载Bean,因此这个位置必须打开,如果这个标签不打开就会报错 问题解决:这里的配置在application.yml文件中 kaf…

数据结构之双向带头循环链表函数功能实现与详细解析

个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.前言 2.带头双…

Linux Docker图形化工具Portainer如何进行远程访问?

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 前言 Portainer 是一个轻量级的容器管理工具,可以通过 Web 界面对 Docker 容器进行管理和监控。它提供了可…

Flutter最新稳定版3.16 新特性介绍

Flutter 3.16 默认采用 Material 3 主题,Android 平台预览 Impeller,DevTools 扩展等等 欢迎回到每季度一次的 Flutter 稳定版本发布,这次是 Flutter 3.16。这个版本将 Material 3 设为新的默认主题,为 Android 带来 Impeller 预览…

SpringBoot使用DevTools实现后端热部署

📑前言 本文主要SpringBoot通过DevTools实现热部署的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句&…

Windows使用ssh远程连接(虚拟机)Linux(Ubuntu)的方法

步骤 1.Windows下载一个SSH客户端软件 要使用SSH连接,当然得先有一个好用的客户端软件才方便。 我这里使用的是WindTerm,一个开源免费的SSH连接工具,用什么软件不是重点。 这里默认你已经生成过SSH的密钥了,如果没有&#xff0c…

C语言 字符函数汇总,模拟实现各字符函数(炒鸡详细)

目录 求字符串长度 strlen 示例 模拟实现strlen 长度不受限制的字符串函数 strcpy 示例 模拟实现strcpy strcat 模拟实现strcat strcmp 示例 模拟实现strcmp 长度受限制的字符串函数介绍 strncpy 示例 模拟实现strncpy strncat 示例 模拟实现strncat s…

前端js常用代码段总结

持续更新中… 以下内容仅供参考。如有错误,欢迎指正! 判断一个对象是否拥有某个属性 场景介绍 1、项目中后端返回的字段,有些时候存在有些时候不存在,前端的逻辑需要依靠这个字段 方法总结 Reflect.has() 静态方法 Reflect.has…

Spring Boot 中使用 ResourceLoader 加载资源的完整示例

ResourceLoader 是 Spring 框架中用于加载资源的接口。它定义了一系列用于获取资源的方法,可以处理各种资源,包括类路径资源、文件系统资源、URL 资源等。 以下是 ResourceLoader 接口的主要方法: Resource getResource(String location)&am…

【Hello Go】Go语言异常处理

Go语言异常处理 异常处理error接口panicrecover延时调用错误问题 异常处理 error接口 Go语言引入了一个关于错误处理的标准模式 它是Go语言内建的接口类型 它的定义如下 type error interface {Error() string }Go语言的标准库代码包errors为用户提供了以下方法 package e…

人工智能轨道交通行业周刊-第65期(2023.10.30-11.19)

本期关键词:高铁自主创新、智慧城轨、调车司机、大模型垂直应用、大模型幻觉 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro轨道…

Kafka快速入门

文章目录 Kafka快速入门1、相关概念介绍前言1.1 基本介绍1.2 常见消息队列的比较1.3 Kafka常见相关概念介绍 2、安装Kafka3、初体验前期准备编码测试配置介绍 bug记录 Kafka快速入门 1、相关概念介绍 前言 在当今信息爆炸的时代,实时数据处理已经成为许多应用程序和…

汽车虚拟仿真视频数据理解--CLIP模型原理

CLIP模型原理 CLIP的全称是Contrastive Language-Image Pre-Training,中文是对比语言-图像预训练,是一个预训练模型,简称为CLIP。该模型是 OpenAI 在 2021 年发布的,最初用于匹配图像和文本的预训练神经网络模型,这个任…

【Ubuntu】设置永不息屏与安装 dconf-editor

方式一、GUI界面进行设置 No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focal打开 Ubuntu 桌面环境的设置菜单。你可以通过点击屏幕右上角的系统菜单,然后选择设置。在设置菜单中,…