GNU/Linux >> Znalost Linux >  >> Cent OS

Jak vypsat a nastavit kontext SELinux pro server MySQL

Co je kontext SELinux

Když je v systému vynucen SELinux, kontroluje pravidla, který proces může přistupovat ke kterým souborům, adresářům a portům. Každý soubor, proces, adresář a port má speciální bezpečnostní štítek známý jako kontext SELinux, což je název používaný k určení, zda má proces přístup k souboru, adresáři nebo portu. Ve výchozím nastavení zásada nepovoluje žádnou interakci, pokud explicitní pravidlo neudělí přístup.

Štítky SELinux mají různé kontexty:uživatel, role, typ a citlivost. Většina příkazů Linuxu má volbu -Z pro zobrazení kontextů SELinux. Například ps, ls, cp a mkdir všechny používají volbu -Z k zobrazení nebo nastavení kontextů SELinux souboru, adresáře, procesu nebo portu.

Server MySQL čte z různých souborů a zapisuje do nich, pokud u těchto souborů není správně nastaven kontext SELinux, proces mysqld může být zablokován v přístupu k souborům. V některých případech to může zabránit mysqld v protokolování chyb.

Jak vypsat aktuální kontext MySQL

Aktuální kontexty můžete vypsat pomocí:

# semanage fcontext -l | grep -i mysql

Jak nastavit kontext datového adresáře

Výchozí umístění datového adresáře je /var/lib/mysql/ , použitý kontext SELinux je mysqld_db_t . Pokud upravíte konfigurační soubor tak, aby používal jiné umístění pro datový adresář nebo kterýkoli ze souborů běžně v datovém adresáři (např. binární protokoly), možná budete muset nastavit kontext pro nové umístění pomocí

# semanage fcontext -a -t mysqld_db_t "/path/to/my/custom/datadir(/.*)?"
# restorecon -Rv /path/to/my/custom/datadir
# semanage fcontext -a -t mysqld_db_t "/path/to/my/custom/logdir(/.*)?"
# restorecon -Rv /path/to/my/custom/logdir

Jak nastavit kontext souboru protokolu chyb

Výchozí umístění pro RedHat RPM je /var/log/mysqld.log , použitý kontext SELinux je mysqld_log_t . Pokud upravíte konfigurační soubor tak, aby používal jiné umístění, možná budete muset nastavit kontext pro nové umístění pomocí:

# semanage fcontext -a -t mysqld_log_t "/path/to/my/custom/error.log"
# restorecon -Rv /path/to/my/custom/error.log

Jak nastavit kontext souboru PID

Výchozí umístění souboru PID je /var/run/mysqld/mysqld.pid , použitý kontext SELinux je mysqld_var_run_t . Pokud upravíte konfigurační soubor tak, aby používal jiné umístění, možná budete muset nastavit kontext pro nové umístění pomocí:

# semanage fcontext -a -t mysqld_var_run_t "/path/to/my/custom/pidfile/directory/.*?"
# restorecon -Rv /path/to/my/custom/pidfile/directory

Jak nastavit kontext soketu unixové domény

Výchozí umístění pro soket domény unix je /var/lib/mysql/mysql.sock , použitý kontext SELinux je mysqld_var_run_t . Pokud upravíte konfigurační soubor tak, aby používal jiné umístění, možná budete muset nastavit kontext pro nové umístění pomocí:

# semanage fcontext -a -t mysqld_var_run_t "/path/to/my/custom/mysql.sock"
# restorecon -Rv /path/to/my/custom/mysql.sock

Jak nastavit kontext portu TCP

Výchozí port TCP je 3306 , použitý kontext SELinux je mysqld_port_t . Pokud upravíte konfigurační soubor tak, aby používal jiný port TCP, nebo povolíte replikaci skupiny, která používá další port (obvykle port 13306), možná budete muset nastavit kontext pro nový port pomocí:

# semanage port -a -t mysqld_port_t -p tcp 13306
# restorecon

Jak nastavit kontext adresáře secure_file_priv

Pro verze MySQL od 5.5.53, 5.6.34 a 5.7.16. Instalace RPM serveru vytvoří adresář /var/lib/mysql-files/, ale nenastaví kontext SELinux na tento adresář. Tento adresář je určen k použití pro operace, jako je „SELECT … INTO OUTFILE ‘. Pokud povolíte používání tohoto adresáře nastavením secure_file_priv, možná budete muset nastavit kontext pomocí:

# semanage fcontext -a -t mysqld_db_t "/var/lib/mysql-files/(/.*)?"
# restorecon -Rv /var/lib/mysql-files

Pokud toto nastavíte na nové umístění, budete muset upravit cestu. Další informace o této proměnné najdete na https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv. Z bezpečnostních důvodů by tento adresář nikdy neměl být v datovém adresáři.

Požadované nástroje

Binární soubor semanage je součástí balíčku policycoreutils-python:

# yum install policycoreutils-python

Chcete-li používat semanage s dřívějšími verzemi RHEL 6 s pythonem 2.6, možná budete muset nainstalovat backport modulu CollectionedDict python pomocí python-pip z úložiště EPEL.

Nainstalujte úložiště EPEL:

# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/$(uname -m)/epel-release-6-8.noarch.rpm

Nainstalujte python-pip:

# yum install python-pip

Pokud instalace python-pip vrátí tuto chybu:

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

možná budete muset aktualizovat své certifikáty SSL CA pomocí:

# yum --disablerepo=epel -y update ca-certificates


Cent OS
  1. Jak nastavit Ubuntu/Debian LAMP Server

  2. Jak nainstalovat a nastavit mysql 8 na Ubuntu 20.04

  3. Jak nastavit server a klienta NFS na Ubuntu 20.04

  1. Jak resetovat kořenové heslo MySQL pro prostý server, server cPanel a server Plesk?

  2. Nastavení serveru DHCP na CentOS 8 – Jak na to?

  3. Jak nastavit bloky serveru Nginx na Ubuntu a CentOS

  1. Jak nainstalovat a nakonfigurovat NTP pro synchronizaci času v CentOS?

  2. Jak nainstalovat MySQL Server na CentOS 7

  3. Co jsou režimy SELinux a jak je nastavit