Не люблю я этот selinux..

Вчера поставил на очередную машинку с CentOS zabbix’овского клиента, добавил ту машинку на сервер, всё настроил, бОльшая часть данных на сервер успешно приходила, а вот про MySQL почему-то нет..

Показывало такую ошибку:
"Received value [ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)] is not suitable for value type [Numeric (float)]"

Попробовал на самой машинке – всё работает:

# zabbix_agentd -t mysql.status[Bytes_sent]
mysql.status[Bytes_sent]                      [t|59709]
# zabbix_agentd -t mysql.slave[Seconds_Behind_Master]
mysql.slave[Seconds_Behind_Master]            [t|166]

А когда то же самое запрашивается с сервера, то фиг:

# zabbix_get -s 10.18.19.100 -k 'mysql.status[Bytes_sent]'
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)

Коллеги порекомендовали посмотреть в /var/log/audit/audit.log, и оказалось, что mysql, запускаемый из-под заббикса, почему-то не может ни прочитать .my.cnf, который я для него создал, ни вообще подключиться к mysql’ному серверу через местный socket..

type=AVC msg=audit(1509982155.365:26576): avc:  denied  { read } for  pid=6599 comm="mysql" name="my.cnf" dev="dm-0" ino=166 scontext=system_u:system_r:zabbix_agent_t:s0 tcontext=system_u:object_r:mysqld_etc_t:s0 tclass=file
type=AVC msg=audit(1509982155.366:26577): avc:  denied  { read } for  pid=6599 comm="mysql" name=".my.cnf" dev="dm-7" ino=3148594 scontext=system_u:system_r:zabbix_agent_t:s0 tcontext=unconfined_u:object_r:var_lib_t:s0 tclass=file
type=AVC msg=audit(1509982155.368:26578): avc:  denied  { connectto } for  pid=6599 comm="mysql" path="/storage-mysql/mysql/mysql.sock" scontext=system_u:system_r:zabbix_agent_t:s0 tcontext=system_u:system_r:mysqld_t:s0 tclass=unix_stream_socket

Оказалось, что это selinux не разрешает. Выключил его нафиг, и всё заработало.
Но коллеги сказали, что не положено selinux выключать, так что пришлось его обратно включить, опять перестало работать.

Посоветовали вытащить из лога то, что заббиксу не разрешалось:

#grep "denied.*zabbix_agent" /var/log/audit/audit.log | audit2allow -M zabbix_agent

и всё это явно разрешить:

#semodule -i zabbix_agent.pp

Попробовал, а нифига не поменялось. Ещё раз попробовал, посмотрел, что в этом .pp написано, а всё равно не помогло.
И только после третьего раза заработало, как надо.. Такие вот загадочные грабельки, как обычно.


You can read this post at LiveJournal.
This entry was posted in Uncategorized and tagged , , , , , , , . Bookmark the permalink.

Leave a Reply