- 1、本文档共43页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MAC 策略入口函数参考
1 通用的模块入口函数
1.1 mpo_init
void mpo_init(struct mac_policy_conf *conf);
参数 说明 锁定
conf MAC 策略定义
策略加载事件。当前进程正持有策略链表上的互斥锁,因此是非睡眠的,对其他内核子
系统的调用也须慎重。如果需要在策略初始化阶段进行可能造成睡眠阻塞的存储分配操作 ,
可以将它们放在一个单独的模块 SYSINIT() 过程中集中进行。
1.2 mpo_destroy
void mpo_destroy(struct mac_policy_conf *conf);
参数 说明 锁定
conf MAC 策略定义
策略加载事件。必须持有策略链表互斥锁,因此需要慎重行事。
1.3 mpo_syscall
int mpo_syscall(struct thread *td, int call, void *arg);
参数 说明 锁定
td 调用线程
call 策略特有的系统调用编号
arg 系统调用参数的指针
该入口函数提供策略复用的系统调用,这样策略模块不需要为其向用户进程提供的每一
个额外服务而注册专用的系统调用。由应用程序提供的策略注册名字来确定提供其所申请
服务的特定策略,所有参数将通过该入口函数传递给被调用的策略。当实现新服务时,安
全模块必须在必要时通过 MAC 框架调用相应的访问控制检查机制。比方说,假如一个策
略实现了某种额外的信号功能,那么它应该调用相关的信号访问控制检查,以接受 MAC 框
架中注册的其他策略的检查。
注意: 不同的模块需要并发地手动进行copyin()拷贝系统调用数据。
1.4 mpo_thread_userret
void mpo_thread_userret(struct thread *td);
参数 说明 锁定
td 返回线程
1
使用该入口函数,策略模块能够在线程返回用户空间时(系统调用返回、异常返回等
等)进行 MAC 相关的处理工作。使用动态进程标记的策略需要使用该入口函数,因为在
处理系统调用的过程中,并不是在任意时刻都能申请到进程锁的;进程的标记可能表示传
统的认证信息、进程历史记录或者其他数据。为使用该入口函数,对进程信任状所作的修改
可能被存放在 p_label ,该域受一个进程级自旋锁的保护;接下来,设置线程级的
TDF_ASTPENDING 标志位和进程级的PS_MACPENDM标志位,表明将调度一个对 userret
入口函数的调用。通过该入口函数,策略可以在相对简单的同步上下文中创建信任状的替
代品。策略编程人员必须清楚,需要保证与调度一个 AST 相关的事件执行次序,同时所执
行的 AST 可能很复杂,而且在处理多线程应用程序时可能被重入。
2 操作标记
2.1 mpo_init_bpfdesc_label
void mpo_init_bpfdesc_label(struct label *label);
参数
文档评论(0)