Вы здесь

MariaDB SELinux bug в Fedora 27

Внезапно столкнулся с багом с SELinux в Fedora 27.
Открыто несколько баг-репортов пользователей, пока они не исправлены.
В /var/log/audit/audit.log

type=AVC msg=audit(1514391607.793:125753): avc: denied { map } for pid=22108 comm="mysqld" path="/var/tmp/#sql_565c_0.MAD" dev="sda2" ino=396175 scontext=system_u:system_r:mysqld_t:s0 tcontext=system_u:object_r:mysqld_tmp_t:s0 tclass=file permissive=1

В /var/log/messages

Dec 27 18:54:05 vps python3[31459]: SELinux is preventing mysqld from map access on the file /var/tmp/#sql_565c_0.MAD.#012#012***** Plugin httpd_unified (89.3 confidence) suggests *********************#012#012If you want to allow httpd to execute cgi scripts and to unify HTTPD handling of all content files.#012Then you must tell SELinux about this by enabling the 'httpd_unified' and 'http_enable_cgi' booleans#012Do#012# setsebool -P httpd_unified=1 httpd_enable_cgi=1#012#012***** Plugin catchall (11.6 confidence) suggests **************************#012#012If you believe that mysqld should be allowed map access on the #sql_565c_0.MAD file by default.#012Then you should report this as a bug.#012You can generate a local policy module to allow this access.#012Do#012allow this access for now by executing:#012# ausearch -c 'mysqld' --raw | audit2allow -M my-mysqld#012# semodule -X 300 -i my-mysqld.pp#012

Вылечил так:

1. Отфильтруем конкретно эту ошибку и создадим правило.
grep mysqld_t /var/log/audit/audit.log | audit2allow -M mariadb_fix

2. Проверим и убедимся, что ничего лишнего не разрешаем:
cat mariadb_fix.te

Получаем

module mariadb_fix 1.0;

require {
type mysqld_t;
type mysqld_tmp_t;
class file map;
}

#============= mysqld_t ==============
allow mysqld_t mysqld_tmp_t:file map;

3. Применяем

semodule -i mariadb_fix.pp

Всё готово!