Маленький файл, большой файл. У меня есть одна привычка — всегда максимально исключать дисковый ввод-вывод. Один из способов сделать это — поместить файл в массив. Конечно, для этого требуется, чтобы env $IFS был установлен соответствующим образом для файла, но исключает ввод-вывод.
data=( $(cat customer-info) )
Тогда ты можешь выбрать из этого...
FIRST_NAME=$(echo "${data[@]}" | tr ' ' '\n' | grep "$customer_id" | cut -f5 -d,)
Другой метод может состоять в том, чтобы назначить массиву только те два бита, которые нужны, например так...
data=( $(grep "${customer_id}" customer-info | cut -d, -f5,6) )
Стандартная процедура устранения неполадок SELinux:
ausearch -m avc,user_avc,selinux_err -i
. Если да, интерпретируйте их и/или позвольте Audit2why интерпретировать их для вас. Если нет, переходите на 4. semodule -DB
, чтобы сделать SELinux подробным, затем воспроизведите проблему и вернитесь к пункту 3. Если SELinux блокируется, SELinux записывает в журнал. Вам необходимо записывать события, чтобы вы могли интерпретировать проблему, прежде чем вы сможете реализовать решение.
Вы не предоставили никаких журналов событий SELinux, поэтому на данный момент я могу только строить догадки. Это может иметь отношение к меткам вашей пользовательской /data
точки монтирования. Если libvirt не может пройти /data
, то он никогда не сможет добраться до образов.
Для тех из вас, у кого есть соответствующие ошибки в audit.log
, если это новая установка, вы можете использоватьaudit2allow
для автоматического создания правильных конфигураций SELinux. Я лично запускаю это только при новых установках, так как вы потенциально можете разрешить несанкционированное программное обеспечение SELinux, если не будете осторожны.
Permissive
. semodule -DB
и снова запустите сбойную программу; логи должны быть созданы. После этого запустите semodule -B
, чтобы отключить подробное ведение журнала. audit2allow -w -a
-, это покажет вам, что блокируется, в удобочитаемой -форме. audit2allow -a
для просмотра правила Type Enforcement, которое разрешает запрещенный доступ audit2allow -a -M newrules
, чтобы создать пользовательский модуль.Параметр -M
создает файл Type Enforcement (.te )с именем, указанным с помощью -M
, в вашем текущем рабочем каталоге semodule -i newrules.pp
Enforcing
; тестовый функционал. Я рекомендую only
запускать это на новых строящихся серверах, так как вы потенциально можете позволить приложениям использовать обходы SELinux, которые не требуются. Это может быть опасно на рабочем сервере. Если у вас есть несколько вещей, упомянутых в audit2allow
, вы можете использовать grep
, как указано в документации Red Hat. Пожалуйста, обратитесь к официальной документации по ссылке audit2allow.
Вам необходимо присвоить папке образа соответствующую метку, которая разрешает совместное чтение/запись содержимого виртуальной машины. Эта метка должна иметь тип svirt_image_t:s0
.
semanage fcontext -a -t svirt_image_t "/data/libvirt/images(/.*)?"
restorecon -vR /data/libvirt/images
При монтаже добавить context
в качестве опции:
mount... /data/libvirt/images -o context="system_u:object_r:svirt_image_t:s0"
// keep default for user and role, but type is important: ^--------------^
SELinux теперь разрешает доступ к ISO из менеджера VM/QEMU/virt -.