Shell 启用 selinux 的脚本

Shell script to enable selinux

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

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

if sestatus | grep -q disabled; then
    yum -y install selinux-policy selinux-policy-targeted policycoreutils-python
fi

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

有人在 GitHub 某处整理了脚本吗?我们使用的是 Amazon Linux,但我认为 CentOS 或 RHEL 的步骤是相同的​​。

好的,我将之前不正确的脚本更改为适合您的脚本。比我更有 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 ;}')
    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 行附加到以 kernel 开头的任何行,然后在根目录中为您创建一个空的 .autorelabel 文件。您需要 运行 以 root 身份运行该脚本,因为它将在 root 拥有的目录中创建和编辑文件,但它会完全满足您的需要。

最终使用:

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