深入理解SELinux与Cron及相关编程应用
1. 使用SELinux的cron
SELinux感知型应用的一个例子是cron,确切地说是一组cron实现,因为并不存在单一的cron应用。常见的cron实现包括vixie - cron、cronie和fcron。
cron实现会为特定的Linux用户调用命令。由于这些命令并非固定不变(cron的主要目的是允许为特定用户甚至系统本身运行任何命令),因此很难创建一个足够精细的策略来适应cron提供的所有功能。对于SELinux而言,cron为一个用户或另一个用户调用命令并没有区别,涉及的只是cron域(crond_t)和命令的目标类型(如bin_t)。
因此,许多cron实现都具备了SELinux感知能力,允许其选择合适的目标上下文。
操作步骤:
要与支持SELinux的cron进行正确交互,需遵循以下步骤:
1. 确保crontab文件被正确标记:用户crontab使用user_cron_spool_t,系统crontab使用system_cron_spool_t。
2. 检查/etc/selinux/mcs/contexts/default_contexts或/etc/selinux/mcs/contexts/users/*中system_r:crond_t域的目标上下文。
3. 使crontab文件上下文成为目标域的入口点。例如,如果用户的目标域是其自身的用户域(如user_t),则user_cron_spool_t必须被视为u