m4宏定义

SELinux使用m4宏语言写可重用的策略规则。m4宏定义提供了易用的操作组合,它本身不属于SELinux策略语言的。m4宏语言的用法可查找m4宏语言用户手册http://cm.bell-labs.com/    7thEdMan/vol2/m4。

下面列出Apache HTTP 宏定义文件$SELINUX_SRC/macros/program/apache_macros.te的前面一些内容:

define(`apache_domain', `         #定义宏apache_domain,后面从符号“`”到“’”是它的定义内容

undefine(`apache_single_user')  #取消宏定义apache_single_user

ifdef(`single_userdomain', `    #如果定义了宏single_userdomain

ifelse($1, sys, `', `            #如果参数$1为sys,则返回空,否则定义宏apache_single_user

define(`apache_single_user')

')dnl end if                  # dnl表示它之后的字符为注释

')dnl end ifdef single_userdomain

ifdef(`apache_single_user', `                               #如果定义了apache_single_user

typealias $1_home_t alias httpd_$1_content_t;       #定义类型别名

typealias $1_home_t alias httpd_$1_htaccess_t;

typealias $1_home_t alias httpd_$1_script_exec_t;

typealias $1_home_t alias httpd_$1_script_ro_t;

typealias $1_home_t alias httpd_$1_script_rw_t;

typealias $1_home_t alias httpd_$1_script_ra_t;

file_type_auto_trans(httpd_$1_script_t, tmp_t, $1_tmp_t)  #调用类型转换宏

', `

#这是网页的类型

type httpd_$1_content_t, file_type, homedirfile, sysadmfile;

ifelse($1, sys, `          #如果参数$1为sys,则进行类型别名定义

typealias httpd_sys_content_t alias httpd_sysadm_content_t;

')

......                     #省略了其他规则的定义

')

宏定义apache_domain的使用方法如下:

apache_domain(sys)

宏定义apache_domain调用时,其内容中的$1将用sys替换,例如:

type httpd_$1_htaccess_t, file_type, sysadmfile;

上面一行语句将变为下面一行语句:

type httpd_sys_htaccess_t, file_type, sysadmfile;

selinux m4语言语法相关推荐

  1. SELinux策略语言--客体类别和许可

    1. 简介 SELinux策略语言主要描述policy.conf的相关语法,其相关部分如下图所示: 2. 客体类别 定义内核支持的客体类别和许可的策略语言指令,并对SELinux系统中内核客体类别标准 ...

  2. SELinux策略语言--类型强制(编写TE规则)

    1. 简介 SELinux策略语言主要描述policy.conf的相关语法,其相关部分如下图所示: 2. 类型强制概念 SELinux策略大部分内容都是由多条类型强制规则构成的,这些规则控制被允许的使 ...

  3. JScript多语言语法加亮引擎显示(代码精简)

    上一篇文章<JScript中正则表达式用法详解>中讲解了JScript中怎样使用正则表达式,这篇文章就给出一个实际应用的例子.昨晚我一边研究JScript中正则表达式的使用就一边在做JSc ...

  4. Neo4j-Cypher语言语法

    为什么80%的码农都做不了架构师?>>>    Neo4j-Cypher语言语法 本文是记录Neo4j图数据库中实用的Cypher语言语法. Cypher是什么 "Cyph ...

  5. 下列符合c语言语法的字符常量是,C语言程序设计(周经亚)选择题练习-chapter 5.doc...

    选择题练习一 下叙述中正确的是 [1] . A)在C程序中,main函数必须位于程序的最前面 B)C程序的每行中只能写一条语句 C)C语言本身没有输入输出语句 D)在对一个C程序进行编译的过程中,可发 ...

  6. java语言语法--- Java标识符(标识符命名规则)、Java关键字、Java变量(变量的声明、赋值、使用)和常量(字符常量、字面常量)(包括Java字节码文件反汇编命令javap)

    java语言语法- Java标识符.Java关键字.Java变量和常量(包括Java字节码文件反汇编命令javap) 1.标识符 (1)读音:biao zhi fu (2)什么是标识符? (摘自百度百 ...

  7. c语言语法格式规范(1)常量的非法与合法

    c语言语法格式规范(1)常量的非法与合法 首先确定常量的类型 整型 确定进制,查看各位数的范围是否超界. 8进制常量以前导 0 开始,每位数只能到7 例如:05188 非法 16进制常量以 0x 开始 ...

  8. c语言中建一个文件的语法,C语言语法介绍_文件.ppt

    C语言语法介绍_文件 第十三章 本章要点 文件的基本概念 文件的基本函数 文件的顺序读写 文件的随机读写 文件简单应用 主要内容 13.1 C文件概述 13.2 文件类型指针 13.3 文件的打开与关 ...

  9. JScript多语言语法加亮引擎改进(修正多行注释识别)

    原先多行注释识别的正则/\*.*?\*/不能正常识别,现在修正为:/\*[.\b\w\W]*\*/          呵呵,简直乱写,反正可以用了就是.         其次行识别现在还没有真正起作用 ...

最新文章

  1. js中显示一个指定html文档,JS实现选定指定HTML元素对象中指定文本内容功能示例...
  2. MySQL导数据工具对比
  3. c3p0数据源配置抛出Could not load driverClass com.mysql.jdbc.Driver的解决方案
  4. Android 开源项目集合
  5. Excel2003Training(1)-浅谈Excel的5个小技巧
  6. linux 读取飞信信息,Linux下飞信
  7. swap(a,b)值交换的4种方法
  8. Xcode怎样调整模拟器大小
  9. PostgreSQL的安装和启动方法大全
  10. 敏捷开发生态系统系列之一:序言及需求管理生态(客户价值导向-可工作软件-响应变化)...
  11. java集合类习题_Java集合练习
  12. 新买的电脑,为什么浏览器(谷歌)很卡,卡到爆,浏览器很卡怎么解决?
  13. python中相对路径怎么写,python相对路径写法
  14. 三极管共射放大电路的放大倍数怎么设计?
  15. 最小公倍数求法 (3种代码思路供参考 ) --(C语言实现)-- 详解
  16. 理解复数域上的向量空间
  17. ROS学习之路的整理
  18. HC-SR501人体红外感应模块程序
  19. 快速提升网站排名的方法
  20. android选择相册图片并显示

热门文章

  1. GreenPlum 数据库启动关闭及数据库状态检查
  2. 数组里面都是人的名字,分割成:例如:老杨|老苏|老邹…”(老杨,老苏,老邹,老虎,老牛,老蒋,老王,老马)
  3. 家族关系查询系统程序设计算法思路_数据结构课程设计(家族关系查询系统)
  4. python鱼眼图像识别_图像变换之矫正---鱼眼图像的矫正简介
  5. BIM模型一键输出 3D Tiles (for Cesium) 和 glTF/blg
  6. 海奥华预言--第七章 慕大陆和远东岛
  7. RabbitMQ Server简介和安装教程
  8. 手机游戏毕业设计论文
  9. 【数据分析学习笔记day09】数据分析实战案例:2016美国大选民意调查统计+2016年美国总统大选民意调查数据统计+示例代码1 +示例代码2:
  10. 什么是 NFT Gala Games? 元宇宙 Town Star 新手村攻略教程