为什么 mysqld 将 /var/log/mysql 的用户/组设置为“s”权限?

为什么 mysqld 将 /var/log/mysql 的用户/组设置为“s”权限?

在 Ubuntu 中sudo apt-get install mysql-server,该软件包将:

  • 创建一个帐户mysql
  • /var/lib/mysql创建具有权限的存储目录drwx------ 4 mysql mysql
  • /var/log/mysql具有权限创建日志目录drwxr-s--- 2 mysql adm

为什么?在我看来,的权限/var/log/mysql应该是。你能给我一些关于位和“adm”组drwxr-x--- 4 mysql mysql的见解/惯例吗?s

答案1

接收+接收

由于 mysqld 在该mysql帐户下运行,该帐户已经是所有者/var/lib/mysql,只有“用户”权限位适用;根本不需要授予组任何访问权限。(如果一个无知的管理员将普通用户添加到组中,甚至可能产生安全问题的风险;mysql如果目录是 g+rx,这将允许此类用户绕过 MySQL 权限检查。)

加加

在目录中,“setgid” g+s 位意味着在里面创建的新项目将从目录继承其组,而不是从进程继承。这意味着所有日志文件都将归 :adm 所有,无论 mysqld 本身属于哪个组。

管理员

授予对系统日志文件的读取权限实际上是“adm”的唯一目的。(过去,这些文件通常保存在 中/usr/adm,当然,这是用户帐户的主目录adm。)

我并不完全清楚其名称的起源,但我猜测其区别在于从事系统管理工作的“操作员”和根据系统使用日志负责会计和付款的“管理员”。

相关内容