lfs下selinux用户空间程序的安装

本文介绍了在Linux From Scratch (Lfs)环境下安装SELinux用户空间程序时遇到的问题及解决方案,包括libselinux、libsemanage等库的安装,并特别提到了lex和flex在编译checkpolicy时引发的语法错误,以及解决该问题的方法。另外,还提及了在未安装PAM的情况下编译policycoreutils导致newrole命令失效的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

selinux的规则在用户空间定义、编译和加载。selinux的使能也可在用户空间进行。这样为selinux的管理提供了很大的灵活性。

在用户空间主要安装的程序主要包括:

selinux库和用户空间程序、需要重新编译连接到libselinux或者打补丁的应用程序(例如:sysvinit、coreutils等)和selinux的参考规则。

这里先写一下selinux用户空间程序吧,主页如下:

http://userspace.selinuxproject.org/trac/wiki/WikiStart


用户空间提供下载的主要包括这几个库和程序:

checkpolicy、libselinux、libsemanage、libsepol、policycoreutils、sepolgen

几个的安装都是直接make就行,没有configure的。安装都是make install。

但libselinux和libsemanage最好   

 make pywrap && make install_pywrap

要不后面python会找不到selinux和semanage的模块的。


其实安装都还简单,都很顺利的成功了,但中间遇到一个极为郁闷的问题。

在后来编译参考规则的时候,一直在报解析规则文件错误。就连最基本的规则

allow bin_t device_t:filesystem associate;

都会报 ":f" 不能识别。

policy/modules/kernel/corecommands.te":18:ERROR 'syntax error' at token ':f' on line 2440:
allow bin_t device_t:filesystem associate;
#line 18
./checkmodule:  error(s) encountered while parsing configuration


找了半天才发现是lfs里面的lex导致checkpolicy编译出问题了

checkpolicy编译的时候会用lex根据policy_scan.l生成y.tab.c。checkpolicy的makefile里面如下:

lex.yy.c: policy_scan.l y.tab.c
$(LEX) policy_scan.l

$(LEX)缺省是lex。

而根据lfs的手册,flex安装的时候把lex弄成如下的脚本了:

cat > /usr/bin/lex << "EOF"
#!/bin/sh
# Begin /usr/bin/lex

exec /usr/bin/flex -l "$@"

# End /usr/bin/lex

而出问题的就是那个 -l 的参数。去了那个参数或者把LEX=flex make就一切都OK了!


今天又发现一个问题,当时安装policycoreutils的时候没有安装PAM,PAM是后来才安装的(讲应用程序安装的时候会提到这个问题)。结果发现使用newrole切换角色的时候提示:

cannot find your entry in the shadow passwd file.

重新配置、编译一下policycoreutils,newrole会链接到libpam进行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值