Как исправить проблему «Нет контекста безопасности SELinux (/ etc / crontab)»? - PullRequest
1 голос
/ 10 октября 2019

Я включил SELinux в моем проекте yocto (ветвь воина), но cron не работает из-за некоторого контекста SELinux. Я использую политику minimum SELinux. Вот ошибка из /var/log/messages

Oct  9 04:50:01 panther2 cron.info crond[261]: ((null)) No SELinux security context (/etc/crontab)        
Oct  9 04:50:01 panther2 cron.info crond[261]: (root) FAILED (loading cron table)                       

Вот некоторые контексты для соответствующих файлов,

root@panther2:~# ps -efZ | grep cron
system_u:system_r:kernel_t:s0   root       464     1  0 04:54 ?    00:00:00 /usr/sbin/crond -n

root@panther2:~# ls -lZ /etc/crontab 
-rw-------. 1 root root system_u:object_r:unconfined_t:s0 653 Oct  9  2019 /etc/crontab

root@panther2:~# ls -lZ /usr/sbin/crond 
-rwxr-xr-x. 1 root root system_u:object_r:unlabeled_t:s0 68160 Oct  9  2019 /usr/sbin/crond

Любая помощь? Спасибо !!

1 Ответ

0 голосов
/ 23 октября 2019

undefined_t - это тип для связи с активными объектами (процессами). Вы связали это с / etc / crontab, который является пассивной сущностью (файлом). Процессы делают вещи и, следовательно, нуждаются в разрешениях. Объекты (пассивные сущности) управляются активными сущностями, и поэтому типы, связанные с файлами, обычно не имеют разрешений, связанных с ними, за исключением разрешения связываться с файловой системой, где это применимо.

unlabeled_t указывает, что / usr /sbin / crond либо имеет недопустимую метку, либо вообще не имеет метки, связанной с ней.

Cron поддерживает SELinux. Cron запускает задачи от имени системы или от имени пользователей (используя pam_selinux). Эти задачи обычно запускаются с разрешениями, отличными от разрешений, связанных с контекстом самого crond. Crond пытается определить, в каком контексте запускать заданную задачу, просматривая метку crontab (/ ett / crontab - это crontab для системных задач), а затем используя эту метку, чтобы определить, в каком контексте следует запускать задачу с использованием libselinux API,Он определяет, может ли тип, связанный с crontab, использоваться для запуска задачи с заданным контекстом, а затем определяет, есть ли у него разрешения на запуск задачи с заданным контекстом.

В вашем случае, указанном выше, определен crond(с помощью SELinux API), что контекст, связанный с системным crontab (/ etc / crontab), не может быть использован для запуска задач с контекстом, с которым он хотел выполнить задачу.

Вам необходимо сделатьубедитесь, что контекст, связанный с / etc / crontab, действителен и его можно использовать в качестве точки входа в контекст, с которым вы хотите, чтобы crond запускал задачу.

Если вам нужен пример, посмотрите на политику cronи файлы конфигурации контекста cron, включенные в ссылочную политику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...