频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

FreeBSD 5.0中强制访问控制机制的使用与源代码分析(1)

来源: 作者: 出处:巧巧读书 2007-10-09 进入讨论组
上一页 1 2 3 4 5 下一页 

  使用下面的命令为/tmp文件系统打上标记,告诉系统在mount的时候加载扩展文件系统。其中-l标志表明扩展文件系统是用于MAC标记的,详见man page:  cd /
  umount /tmp
  runefs -l enable /tmp
  mount /tmp

  cd /tmp/.attribute/system

  由于文件系统mount的时候启用的扩展属性名为freebsd.mac,而我们需要的扩展属性名为mac_mls(原因说参见MAC框架分析部分),所以我们必须使用下面的命令激活属性名为mac_mls的扩展属性:  extattrctl enable /tmp system mac_mls ./freebsd.mac

  至此,/tmp文件系统的扩展属性配置完毕,我们可以尝试使用下面的命令来改变/tmp/test这个文件的MAC标记:

    setfmac mls/high /tmp/test

  1.4 操作MLS标记

  和所有的系统功能一样,MLS标记既可以在控制台由命令来得到或设置,也可以在程序中通过系统调用来得到或进行设置,下面是对这两种方式的简单的介绍。

  控制台命令主要有三个,即getfmac,用于得到文件或目录的MAC标记;setfmac用于设置文件或目录的MAC标记;getpmac,用于得到当前进程的MAC标记。另外的一个命令setpmac在当前系统中支持得不好。

  如果使用的是MLS策略,那么返回的MAC标记为mls/[single_mac]([mac_range]),其中mls为策略名,后面用"/"与标记数据隔开。[single_mac]为单一的MAC标记,可能为"low"或"high"或"equal"。[mac_range]为一个MAC标记范围,往往主体(进程)有一个范围。一个MAC标记的例子为:mls/low(low-high)。

  在应用程序中,可以使用的系统调用请参见/usr/src/sys/sys/mac.h文件中#ifndef _KERNEL这个块中提供的函数原型,值得注意的是,man page中的有些接口参数及返回值类型有误,请以mac.h文件中的类型为准。

  下面是几个最常用的函数的使用方法:

  mac_get_proc,mac_get_file的用法:

    struct mac myMac;
    char ss[60] = "mls";
    myMac.m_string = ss;
    myMac.m_buflen = 60;
    mac_get_proc(&myMac);
    mac_get_file("/tmp/test",&myMac);

  mac_set_proc,mac_set_file的用法:

    struct mac myMac;
    myMac.m_string = "mls/high";
    myMac.m_buflen = strlen(myMac.m_string);
    mac_set_proc(&myMac);
    mac_set_file("/tmp/test",&myMac);

URL:http://www.qqread.com/freebsd/s348130.html 更多文章 更多内容请看访问控制列表(ACL)介绍访问控制列表FreeBSD系统安全管理专题,或进入讨论组讨论。
上一页 1 2 3 4 5 下一页 
收藏此文】【 】【打印】【关闭
较早的文章:FreeBSD其他安装问题

较新的文章:使用 FreeBSD 的原因
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章