前些天尝试在Fedora 25上修改SELinux Policy。做这项工作需要编译SELinux Policy。在实践中碰到了一些问题,现在把正确的步骤写在下面:
大体上说,有两个选择,一个是从Fedora的源码rpm包编译,另一个是从源码编译。
1. 利用源码rpm编译:
a) 获取RPM
dnf download --source --destdir `pwd` selinux-policy-targeted
b) 准备编译环境
dnf install rpm-build
mkdir -p~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
echo '%_topdir %(echo $HOME)/rpmbuild'> ~/.rpmmacros
rpmbuild --rebuild./selinux-policy-3.13.1-225.13.fc25.src.rpm
利用源码RPM包编译,相对比较简单,但是对于需要频繁修改源码的场景,就不是那么方便了。下面介绍直接利用源码编译。
2. 利用源码编译
a) 获取源码
git clonehttps://github.com/fedora-selinux/selinux-policy.git
git clonehttps://github.com/fedora-selinux/selinux-policy-contrib.git
在selinux-policy/policy/modules目录中,创建子目录"contrib",将所有selinux-policy-contrib中的文件拷贝到这个目录下
touch selinux-policy/policy/modules/admin/metadata.xml
storage = module
改为
storage = base
c) 编译
make UNK_PERMS=allow NAME=targeted TYPE=mcs DISTRO=redhat UBAC=n DIRECT_INITRC=n MONOLITHIC=n MLS_CATS=1024 MCS_CATS=1024 bare
make UNK_PERMS=allow NAME=targeted TYPE=mcs DISTRO=redhat UBAC=n DIRECT_INITRC=n MONOLITHIC=n MLS_CATS=1024 MCS_CATS=1024 conf
make UNK_PERMS=allow NAME=targeted TYPE=mcs DISTRO=redhat UBAC=n DIRECT_INITRC=n MONOLITHIC=n MLS_CATS=1024 MCS_CATS=1024 base
make bare; make conf; make base
更多内容:www.zhian-tech.com