No RHEL5, eu tenho um pequeno banco de dados MySQL que tem que gravar arquivos temporários. Para acelerar este processo, eu gostaria de mover o diretório temporário para / dev / shm colocando a seguinte linha em my.cnf:
tmpdir=/dev/shm/mysqltmp
Eu posso criar / dev / shm / mysqltmp muito bem e fazer
chown mysql:mysql /dev/shm/mysqltmp
chcon --reference /tmp/ /dev/shm/mysqltmp
Eu tentei fazer o SELinux feliz aplicando as mesmas configurações que estão em vigor para / tmp / (e / var / tmp /), que é presumivelmente onde o MySQL está gravando seus arquivos tmp se o tmpdir estiver indefinido.
O problema é que o SELinux reclama que o MySQL tem acesso a esse diretório. Eu recebo o seguinte em / var / log / messages:
SELinux is preventing mysqld (mysqld_t) "getattr" to /dev/shm (tmpfs_t).
SELinux é uma amante difícil. Detalhes:
Source Context root:system_r:mysqld_t
Target Context system_u:object_r:tmpfs_t
Target Objects /dev/shm [ dir ]
Source mysqld
Source Path /usr/libexec/mysqld
Port <Unknown>
Host db.example.com
Source RPM Packages mysql-server-5.0.77-3.el5
Target RPM Packages
Policy RPM selinux-policy-2.4.6-255.el5_4.1
Selinux Enabled True
Policy Type targeted
MLS Enabled True
Enforcing Mode Enforcing
Plugin Name catchall_file
Host Name db.example.com
Platform Linux db.example.com 2.6.18-164.2.1.el5 #1 SMP
Mon Sep 21 04:37:42 EDT 2009 x86_64 x86_64
Alert Count 46
First Seen Wed Nov 4 14:23:48 2009
Last Seen Thu Nov 5 09:46:00 2009
Local ID e746d880-18f6-43c1-b522-a8c0508a1775
ls -lZ / dev / shm mostra
drwxrwxr-x mysql mysql system_u:object_r:tmp_t mysqltmp
e permissões para / dev / shm em si são
drwxrwxrwt root root system_u:object_r:tmpfs_t shm
Eu também tentei
chcon -R -t mysqld_t /dev/shm/mysqltmp
e definindo o grupo em / dev / shm para o mysql sem melhores resultados. Não deveria ser o suficiente para dizer ao SELinux, hey, este é um diretório temporário como o MySQL estava usando antes?
Sem desligar o SELinux, como faço isso funcionar? Preciso editar os arquivos de políticas do SELinux?