Примечание: Меня все еще интересует ответ на мою проблему, но я действительно хотел опубликовать используемый мной метод обхода, который дает только в качестве полезной информации, если audit2why
работал так, как я ожидал.
В Howto for SELinux на CentOS.org есть раздел по устранению неполадок. В нем рассказывается о том, как использовать sealert
для предоставления удобочитаемой информации, извлеченной из журнала "/var/log/audit/audit.log". Таким образом, простой запуск
sudo sealert -a /var/log/audit/audit.log > ~/logfile.txt
позволил мне прочитать нужную мне информацию и получить предложения о правильном контексте безопасности для моих веб-каталогов.
SELinux is preventing /usr/sbin/php-fpm from write access on the directory /srv/dpca/www/images.
***** Plugin httpd_write_content (92.2 confidence) suggests ***************
If you want to allow php-fpm to have write access on the images directory
Then you need to change the label on '/srv/dpca/www/images'
Do
# semanage fcontext -a -t httpd_sys_rw_content_t '/srv/dpca/www/images'
# restorecon -v '/srv/dpca/www/images'
Опять же, если кто-то знает о моем первоначальном вопросе о audit2why
, я все равно хотел бы знать.
Параметры, передаваемые в командной строке ядра, не обязательно должны иметь значение для ядра:в документации по параметрам ядра говорится
The kernel parses parameters from the kernel command line up to “--”; if it doesn’t recognize a parameter and it doesn’t contain a ‘.’, the parameter gets passed to init: parameters with ‘=’ go into init’s environment, others are passed as command line arguments to init. Everything after “--” is passed as an argument to init.
Это не относится к init
и root
, которые на самом деле являются параметрами ядра и обрабатываются ядром. На них также может воздействовать пространство пользователя -, так как они появляются в /proc/cmdline
. (Таким образом, например, systemd принимает во внимание параметр ядра quiet
для уменьшения своего вывода.)
Когда ядро загружается с помощью initramfs, параметр root
не используется ядром напрямую, а параметр init
используется только в случае сбоя rdinit
. init
запуск обрабатывается в kernel_init
, который работает следующим образом:
rdinit
в командной строке ядра, либо /init
), которое доступно, ядро пытается запустить это; init
в командной строке ядра ), ядро пытается выполнить это и паникует, если не может; /sbin/init
, /etc/init
, /bin/init
и /bin/sh
; если ни один из них не может быть запущен, он паникует . Когда есть initramfs, все это происходит там, и целевой том не монтируется ядром. Что происходит после ядро запускает первую init
программу (как правило, /init
сценарий в initramfs )зависит от программы, а не от ядра. Аргументы, не переданные в init
, по-прежнему доступны в /proc/cmdline
, если смонтирована файловая система /proc
.
Передача пользовательских аргументов ядра — это один из способов настройки системы во время установки KickStart, например, PXE-сервер может установить:
linuxefi /c7/vmlinuz ks=http://.../ks/c7 lab ksdevice=eth0 net.ifnames=0 biosdevname=0
где lab
затем используется в конфигурации KickStart, чтобы делать другие вещи, чем для других сборок системы:
%pre
...
case " $(cat /proc/cmdline)" in
...
*\ lab*)
filesystems_lab
;;
*)
filesystems_common
;;
...
Здесь можно настроить макет файловой системы, отличный от используемого в других типах систем. Будем надеяться, что для локальных настроек используются другие метки, отличные от используемых ядром, учитывая задействованное единое пространство имен.