启用selinux的Shell脚本

时间:2018-08-01 13:49:55

标签: bash selinux

如何在具有root访问权限的bash脚本中以编程方式启用selinux?

我已经知道我可以像这样安装必要的软件包:

/boot/grub/menu.lst

但是如何编写以下步骤的脚本:

  • "selinux=1 security=selinux"中,将.autorelabel附加到内核行
  • 在根目录中创建一个空的<section class="bg-primary text-white mb-0" id="about"> <div class="container"> <h2 class="text-center text-uppercase text-white">Map</h2> <div id="map" style="height=450px"></div> </div> </section> 文件

有人在GitHub某个地方放了一个脚本吗?我们正在使用Amazon Linux,但我认为CentOS或RHEL的步骤相同。

2 个答案:

答案 0 :(得分:0)

好吧,我将不正确的先前脚本更改为适合您的脚本。对sed经验比我更丰富的人可能会使selinux产品线成为一线产品,但这就是我所拥有的:

#!/bin/bash
if sestatus | grep -q disabled; then
    yum -y install selinux-policy selinux-policy-targeted policycoreutils-python
fi
while IFS= read -r line; do
    firstStr=$(echo $line | awk '{print $1;}')
    if [[ $firstStr = 'kernel' ]] ; then
        echo "$line selinux=1 security=selinux" >> outFile.txt
    else
        echo $line >> outFile.txt
    fi
done < /etc/grub/menu.lst
mv outFile.txt /etc/grub/menu.lst
touch /.autorelabel

这应该对您有用,它所要做的就是将selinux行附加到以内核开头的任何行,然后在根目录中为您创建一个空的.autorelabel文件。您需要以root用户身份运行脚本,因为它将在root拥有的目录中创建和编辑文件,但是它将完全满足您的需要。

答案 1 :(得分:0)

最终使用:

if ! cat /boot/grub/menu.lst | grep -q "selinux=1 security=selinux"; then
    yum -y install selinux-policy selinux-policy-targeted policycoreutils-python
    sed -i -e 's/kernel\s[^\n]*/& selinux=1 security=selinux/g' /boot/grub/menu.lst
    yum -y update
    touch /.autorelabel
    echo "[Remediated] selinux enabled, reboot required"
else
    echo "[Skipping] selinux appears to be enabled"
fi