今天,我意识到在 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 和 MySql 安装mysql_secure_installation
。其他内容均未更改。
答案1
符号链接始终是全球可读/可写的。目标文件的权限是唯一重要的事情。更改符号链接的权限会更改目标文件的权限:
$ 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
不是所有人都可写的。因此,用户将无法覆盖它,无论符号链接如何。