Сегодня я понял, что в Ubuntu 18.04 обычный конфигурационный файл MySQL (версия 5.7.26) в /etc/mysql/my.cnf
является символической ссылкой и доступен для чтения / записи. Интересно, что файл, на который он указывает, является еще одной символической ссылкой, указывающей на my.cnf
. Это почему? И если мы хотим изменить конфигурацию, какой файл мы должны редактировать? Кроме того, не является ли это действительно ужасным решением сделать его доступным для чтения / записи по умолчанию?
# ls -l /etc/mysql/
drwxr-xr-x 2 root root 4096 May 21 16:30 conf.d
-rwxr-xr-x 1 root root 120 Apr 25 18:10 debian-start
-rw------- 1 root root 317 May 21 16:30 debian.cnf
lrwxrwxrwx 1 root root 24 May 21 16:30 my.cnf -> /etc/alternatives/my.cnf
-rw-r--r-- 1 root root 839 Aug 3 2016 my.cnf.fallback
-rw-r--r-- 1 root root 682 Jan 12 2018 mysql.cnf
drwxr-xr-x 2 root root 4096 May 21 16:30 mysql.conf.d
# ls -l /etc/alternatives/my.cnf
lrwxrwxrwx 1 root root 20 May 21 16:30 /etc/alternatives/my.cnf -> /etc/mysql/mysql.cnf
Примечание. Это чистая версия Ubuntu & amp; Установка MySql с помощью команды mysql_secure_installation
. Больше ничего не изменилось.
Симлинки всегда доступны для чтения и записи. Права доступа к целевому файлу - единственное, что имеет значение. Изменение разрешений для символической ссылки изменяет разрешения для целевого файла:
$ ls -l
total 0
-rw-r--r-- 1 vidarlo users 0 May 21 19:10 a
lrwxrwxrwx 1 vidarlo users 1 May 21 19:10 b -> a
$ chmod 755 b
$ ls -la
-rwxr-xr-x 1 vidarlo users 0 May 21 19:10 a
lrwxrwxrwx 1 vidarlo users 1 May 21 19:10 b -> a
Цель, /etc/mysql/mysql.cnf
не доступна для записи во всем мире. Таким образом, пользователь не сможет перезаписать его независимо от символических ссылок.