使用下面的命令为/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/test1.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)介绍 (181篇文章)
- 访问控制列表 (124篇文章)
- FreeBSD系统安全管理 (8828篇文章)
- FreeBSD使用教程 (6592篇文章)
- Freebsd频道 (698篇文章)
- FreeBSD系统的使用 (96篇文章)
- FreeBSD系统安装与配置之准备篇 (1753次浏览)
- FreeBSD入门安装及汉化 (1472次浏览)
- FreeBSD下安装GNOME桌面 (971次浏览)
- FreeBSD 5.0硬盘安装指南 (707次浏览)
- freebsd5.2.1上安装vmware 3.2.1 (610次浏览)
- FreeBSD 5.1安装VMware全部过程 (571次浏览)
- FreeBSD连载(72):设置和使用DHCP (563次浏览)
- 使用FreeBSD的原因 (506次浏览)
- FreeBSD系统终极安装手册(图) (474次浏览)
- FreeBSD5.3下安装Apache+PHP+MySQL+Tomcat (453次浏览)



