【摘要】:前面说过,类型体现在安全标签上,所以类型转换就是安全标签的赋值操作。通过伪文件接口/proc/[pid]/attr/current改变进程的安全标签,不过有三个条件:1)只能改变进程自己的安全标签。2)进程具备CAP_MAC_ADMIN能力。3)进程的安全标签等于SMACK内部变量smack_onlycap,或者smack_onlycap为空。SMACK中套接字的安全标签来自创建它的进程,进程可以通过假的扩展属性“security.SMACK64IPIN”和“security.SMACK64IPOUT”来修改。但是SMACK提供了相关的函数让这些系统调用可以成功。
前面说过,类型体现在安全标签上,所以类型转换就是安全标签的赋值操作。
先说主体,即进程的安全标签。进程的安全标签的值有三个来源:
(1)进程复制时,子进程获得父进程的安全标签值。
(2)进程执行系统调用execve()时,如果被执行文件有扩展属性“security.SMACK64EXEC”,则执行execve()后,进程安全标签为被执行文件的扩展属性“security.SMACK64EXEC”的值。
(3)通过伪文件接口/proc/[pid]/attr/current改变进程的安全标签,不过有三个条件:
1)只能改变进程自己的安全标签。
2)进程具备CAP_MAC_ADMIN能力。(www.xing528.com)
3)进程的安全标签等于SMACK内部变量smack_onlycap,或者smack_onlycap为空。
再说客体,SMACK中文件的安全标签来自创建它的进程或文件所在的目录,存储在文件的扩展属性“security.SMACK64”中。
SMACK中套接字的安全标签来自创建它的进程,进程可以通过假的扩展属性“security.SMACK64IPIN”和“security.SMACK64IPOUT”来修改。套接字本身没有扩展属性,用户态进程针对套接字调用设置和查看扩展属性的系统调用本来是不会成功的。但是SMACK提供了相关的函数让这些系统调用可以成功。
在用户态代码中:
在内核代码中:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。