Bash 用于启用selinux的Shell脚本
如何在具有根访问权限的bash脚本中以编程方式启用selinux 我已经知道我可以安装以下必要的软件包:Bash 用于启用selinux的Shell脚本,bash,selinux,Bash,Selinux,如何在具有根访问权限的bash脚本中以编程方式启用selinux 我已经知道我可以安装以下必要的软件包: if sestatus | grep -q disabled; then yum -y install selinux-policy selinux-policy-targeted policycoreutils-python fi 但如何编写以下步骤的脚本: 在/boot/grub/menu.lst中,向内核行追加“selinux=1 security=selinux” 在根目
if sestatus | grep -q disabled; then
yum -y install selinux-policy selinux-policy-targeted policycoreutils-python
fi
但如何编写以下步骤的脚本:
- 在
中,向内核行追加/boot/grub/menu.lst
“selinux=1 security=selinux”
- 在根目录中创建一个空的
文件.autorelabel
是否有人在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 $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
#/bin/bash
如果sestatus | grep-q被禁用;然后
yum-y安装selinux策略selinux策略目标policycoreutils python
fi
而IFS=读取-r行;做
firstStr=$(echo$行| awk'{print$1;}')
如果[[$firstStr='kernel']];然后
echo“$line selinux=1 security=selinux”>>outFile.txt
其他的
echo$line>>outFile.txt
fi
完成
这应该适合您,它将要做的是将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
CentOS没有
/etc/grub/
。你是在问如何在文件中添加一行吗?这可能更适合我们的姐妹网站。在寻找预先编写的脚本时寻求帮助的问题在这里显然是离题的(请参见“有些问题仍然离题”列表中的第4步),而您单独询问的两个步骤从编程角度来看几乎完全无关。此外,前半部分与,第二个是复制的。/etc/grup/menu.lst
正在覆盖文件,而不是附加到文件。此外,OP希望使用内核命令行附加到特定行,而不是在整个文件的末尾(在文件末尾添加selinux=1 security=selinux
是无效的GRUB语法)。用于自动重新标记支持的“根目录”是/
,而不是/root
。哇,你完全正确。对不起,我开得太快了,没注意到。我将据此修正我的答案。只是想了解一下,OP是否希望将它附加到内核行中,比如kernel/boot/vmlinuz-2.6.32.130.el6.i686 ro root=LABEL=/1 rhgb quiet
-->kernel/boot/vmlinuz-2.6.32.130.el6.i686 ro root=LABEL=/1 rhgb quiet selinux=1 security=selinux
?