Linux melhorado com segurança (SELinux) é um módulo de kernel Linux que fornece um framework para configurar o sistema de controle de acesso obrigatório (MAC) para muitos recursos no sistema. Ele é ativado por padrão em algumas distribuições Linux, incluindo RHEL, CentOS, Fedora e outras distribuições Linux similares. O SELinux impede os programas de acessar arquivos, diretórios ou portos, a menos que esteja configurado para acessar esses recursos.
- verificando se o SELinux está activo
- colocando temporariamente o mysqld no modo permissivo
- construir e carregar a Política de SELinux do servidor
- configurar os contextos de arquivos
- configurar o contexto do ficheiro para a pasta de dados
- configurar o contexto do ficheiro para os ficheiros de Registo
- configurar o contexto do ficheiro para as opções ficheiros
- , Permitindo o Acesso para o Tmpfs de Contexto do Arquivo
- problemas com SELinux questões
- permissões do Sistema de arquivos Erros
- SELinux e MariaDB em um porto diferente
- gerando Políticas de SELinux com audit2allow
verificando se o SELinux está activo
para verificar se o SELinux está activo, execute o comandogetenforce
. Por exemplo:
getenforce
colocando temporariamente o mysqld no modo permissivo
quando está a resolver problemas que pensa que o SELinux possa estar a causar, pode ajudar a colocar temporariamente o mysqld_t
no modo permissivo. Isto pode ser feito executando o comando semanage
. Por exemplo:
sudo semanage permissive -a mysqld_t
Se isso resolveu o problema, então significa que a política atual do SELinux é o culpado. Você precisa ajustar a Política de SELinux ou etiquetas para MariaDB.
construir e carregar a Política de SELinux do servidor
o servidor MariaDB vem com uma política de SELinux que não é compilado ou carregado por padrão. Em muitos sistemas, a política é instalada em /usr/share/mysql/policy/selinux/mariadb-server.fc
. A fim de construí-lo e carregá-lo, execute o seguinte:
configurar os contextos de arquivos
SELinux usa contextos de arquivos como uma maneira de determinar quem deve ser capaz de acessar esse arquivo.
os contextos de ficheiros são geridos com os comandossemanage fcontext
erestorecon
.
Em muitos sistemas, o semanage
utilitário é instalado por policycoreutils-python
pacote, e o restorecon
utilitário é instalado por policycoreutils
pacote. Você pode instalar esses com o seguinte comando:
sudo yum install policycoreutils policycoreutils-python
de Um arquivo ou diretório atual contexto pode ser verificado por meio da execução de ls
com o --context
ou --scontext
opções.
configurar o contexto do ficheiro para a pasta de dados
se usar uma pasta personalizada para datadir
, então poderá ter de definir o contexto do ficheiro para essa pasta. O contexto do ficheiro SELinux para os ficheiros de dados do MariaDB é mysqld_db_t
. Você pode determinar se este contexto de arquivo está presente em seu sistema e quais arquivos ou diretórios que está associado, executando o seguinte comando:
sudo semanage fcontext --list | grep mysqld_db_t
Se você gostaria de definir o contexto do arquivo para o seu diretório personalizado para o seu datadir
e, em seguida, que pode ser feito executando o semanage fcontext
e restorecon
comandos. Por exemplo:
sudo semanage fcontext -a -t mysqld_db_t "/mariadb/data(/.*)?"sudo restorecon -Rv /mariadb/data
Se você gostaria de verificar a atual contexto de arquivo, você pode fazer isso executando ls
com o --context
ou --scontext
opções. Por exemplo:
configurar o contexto do ficheiro para os ficheiros de Registo
Se usar uma pasta personalizada para os ficheiros de Registo, então poderá ter de definir o contexto do ficheiro para essa pasta. O contexto de arquivo SELinux para arquivos de log do MariaDB é mysqld_log_t
. Você pode determinar se este contexto de arquivo está presente em seu sistema e quais arquivos ou diretórios que está associado, executando o seguinte comando:
sudo semanage fcontext --list | grep mysqld_log_t
Se quiser definir o contexto do ficheiro para a sua pasta personalizada para ficheiros de Registo, então isso pode ser feito executando os comandos semanage fcontext
e restorecon
. Por exemplo:
sudo semanage fcontext -a -t mysqld_log_t "/var/log/mysql(/.*)?"sudo restorecon -Rv /var/log/mysql
Se você gostaria de verificar a atual contexto de arquivo, você pode fazer isso executando ls
com o --context
ou --scontext
opções. Por exemplo:
ls --directory --scontext /var/log/mysql
configurar o contexto do ficheiro para as opções ficheiros
Se usar uma pasta personalizada para os ficheiros das opções, então poderá ter de definir o contexto do ficheiro para essa pasta. O contexto de arquivo SELinux para os arquivos de opção MariaDB é . Você pode determinar se este contexto de arquivo está presente em seu sistema e quais arquivos ou diretórios que está associado, executando o seguinte comando:
sudo semanage fcontext --list | grep mysqld_etc_t
Se quiser definir o contexto do ficheiro para a sua pasta personalizada para os ficheiros de opções, então isso poderá ser feito executando os comandos semanage fcontext
e restorecon
. Por exemplo:
sudo semanage fcontext -a -t mysqld_etc_t "/etc/mariadb(/.*)?"sudo restorecon -Rv /etc/mariadb
Se você gostaria de verificar a atual contexto de arquivo, você pode fazer isso executando ls
com o --context
ou --scontext
opções. Por exemplo:
ls --directory --scontext /etc/mariadb
, Permitindo o Acesso para o Tmpfs de Contexto do Arquivo
Se você quiser montar o seu tmpdir
em um tmpfs
sistema de arquivos ou queria usar uma tmpfs
sistema de ficheiros /run/shm
em seguida, você pode precisar para permitir que o mysqld_t
para ter acesso a um casal tmpfs relacionados com os contextos de ficheiros. Por exemplo:
problemas com SELinux questões
pode ser necessário resolver problemas relacionados com SELinux em casos como:
- MariaDB está usando uma porta não-padrão.
- MariaDB está lendo ou escrevendo para alguns arquivos (datadir, arquivos de log, arquivos de opção, etc.) localizado em caminhos não-padrão.
- MariaDB está usando um plugin que requer acesso a recursos que as instalações padrão não usam.
permissões do Sistema de arquivos Erros
Se as permissões do sistema de arquivos para alguns MariaDB diretório parece bem, mas o MariaDB log de erro ainda tem erros de aparência semelhante à seguinte:
em Seguida, verifique o SELinux é /var/log/audit/audit.log
para entradas de log semelhante à seguinte:
Se vir algum item semelhante a este, então provavelmente terá de ajustar os contextos de ficheiros para alguns ficheiros ou directórios. Veja Configurar os contextos de arquivos para mais informações sobre como fazer isso.
SELinux e MariaDB em um porto diferente
portos TCP e UDP estão habilitados para a permissão se ligar também. Se você estiver usando um porto diferente, ou alguns portos Galera, configure SELinux para ser capaz de usar esses portos:
sudo semanage port -a -t mysqld_port_t -p tcp 3307
gerando Políticas de SELinux com audit2allow
em alguns casos, um sistema MariaDB pode precisar de políticas não-padrão. É possível criar estas políticas a partir do log de auditoria SELinux usando oaudit2allow
utilitário. The semanage
and semodule
utilities will also be neededed.
Em muitos sistemas, o audit2allow
e semanage
utilitários são instalados por policycoreutils-python
pacote, e o semodule
utilitário é instalado por policycoreutils
pacote. Você pode instalá-los com o seguinte comando:
sudo yum install policycoreutils policycoreutils-python
O seguinte processo pode ser usado para gerar uma política de log de auditoria:
- Remover dontaudits da política:
sudo semodule -DB
- colocar Temporariamente
mysqld_t
em modo permissivo. Por exemplo:
sudo semanage permissive -a mysqld_t
- iniciar MariaDB.
- Faça o que estava causando erros de SELinux.
- Use gerado o log de auditoria para criar uma diretiva:
sudo grep mysqld /var/log/audit/audit.log | audit2allow -M mariadb_localsudo semodule -i mariadb_local.pp
- Puxe
mysqld_t
de modo permissivo. Por exemplo:
sudo semanage permissive -d mysqld_t
- Restaurar dontaudits para a política:
sudo setmodule -B
O mesmo procedimento pode ser utilizado se o MariaDB é iniciado, mas o SELinux impede de funcionar corretamente. Por exemplo, o SELinux pode impedir o plugin PAM de autenticar usuários. A solução é a mesma-habilitar auditoria, mudar para permissivo, fazer, o que o SELinux não lhe permitiu, criar uma política a partir do log de auditoria.
Quando descobrir quaisquer permissões de SELinux necessárias, por favor comunique as permissões necessárias ao registo de erros do seu sistema operativo para que todos os utilizadores possam beneficiar do seu trabalho (por exemplo, Red Hat Bugzilla https://bugzilla.redhat.com/).