# rpm -q centos-release

I'm trying to get zabbix-agent to access mysqld (using mysqladmin ping), but the process fails with the following errors(in auditlog):

type=AVC msg=audit(1690802455.685:134747): avc:  denied  { connectto } for  pid=18714 comm="mysqladmin" path="/var/lib/mysql/mysql.sock" scontext=system_u:system_r:zabbix_agent_t:s0 tcontext=s
ystem_u:system_r:mysqld_t:s0 tclass=unix_stream_socket permissive=0
type=SYSCALL msg=audit(1690802455.685:134747): arch=c000003e syscall=42 success=no exit=-13 a0=3 a1=7ffe8b63b500 a2=6e a3=7ffe8b63ade0 items=0 ppid=18635 pid=18714 auid=4294967295 uid=997 gid=
995 euid=997 suid=997 fsuid=997 egid=995 sgid=995 fsgid=995 tty=(none) ses=4294967295 comm="mysqladmin" exe="/usr/bin/mysqladmin" subj=system_u:system_r:zabbix_agent_t:s0 key=(null)

Running this through audit2allow gives me the fix, but with a warning:

#============= zabbix_agent_t ==============

#!!!! The file '/var/lib/mysql/mysql.sock' is mislabeled on your system.  
#!!!! Fix with $ restorecon -R -v /var/lib/mysql/mysql.sock
#!!!! This avc can be allowed using the boolean 'daemons_enable_cluster_mode'
allow zabbix_agent_t mysqld_t:unix_stream_socket connectto;

Searching for the expected permission for /var/lib/mysql/mysql.sock I see the following:

/etc/selinux/targeted/contexts/files/file_contexts:/var/lib/mysql/mysql\.sock   -s      system_u:object_r:mysqld_var_run_t:s0

The actual permission matches:

srwxrwxrwx. mysql mysql system_u:object_r:mysqld_var_run_t:s0 /var/lib/mysql/mysql.sock

Looking at the process contexts:

 # ps -eZf  |grep -E '^LABEL|mysqld|zabbix' |grep -v grep
LABEL                           UID        PID  PPID  C STIME TTY          TIME CMD
system_u:system_r:mysqld_safe_t:s0 mysql  6331     1  0 Feb04 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
system_u:system_r:mysqld_t:s0   mysql     6644  6331  1 Feb04 ?        2-05:50:59 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
system_u:system_r:zabbix_agent_t:s0 zabbix 18926   1  0 11:25 ?        00:00:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
system_u:system_r:zabbix_agent_t:s0 zabbix 18927 18926  0 11:25 ?      00:00:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
system_u:system_r:zabbix_agent_t:s0 zabbix 18928 18926  0 11:25 ?      00:00:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
system_u:system_r:zabbix_agent_t:s0 zabbix 18929 18926  0 11:25 ?      00:00:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
system_u:system_r:zabbix_agent_t:s0 zabbix 18930 18926  0 11:25 ?      00:00:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]

Next, when I try to add the created rule to the policy, I get an error for mysqld_t:

zabbix_home.te:22:ERROR 'unknown type mysqld_t' at token ';' on line 22:                                                                                                                        
allow zabbix_agent_t mysqld_t:unix_stream_socket connectto;                                                                                                                                     
allow zabbix_agent_t mysqld_var_run_t:sock_file write;                                                                                                                                          
checkmodule:  error(s) encountered while parsing configuration                                                                                                                                  
checkmodule:  loading policy configuration from zabbix_home.te           

My questions are:

  • Why is my target context is mysqld_t instead of mysqld_var_run_t?
  • How do I fix this?


You must log in to answer this question.

Browse other questions tagged .