我将其移至/tmp
另一个硬盘以节省 SSD 的磨损。
ls -aolh /
lrwxrwxrwx 1 root 10 Jan 3 17:22 tmp -> /store/tmp
ls -aolh /store
drwxrwxrwx 13 root 4.0K Jan 7 13:51 tmp
ls -aolh /store/tmp/
drwxrwxrwx 13 root 4.0K Jan 7 13:54 .
我可以/tmp/
以非 root 用户身份创建文件,但 KMail 无法启动,mysql 错误日志包含
/usr/sbin/mysqld: Can't create/write to file '/tmp/ibVLn1jR' (Errcode: 13)
150107 13:49:56 InnoDB: Error: unable to create temporary file; errno: 13
150107 13:49:56 [ERROR] Plugin 'InnoDB' init function returned error.
150107 13:49:56 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
150107 13:49:56 [ERROR] Unknown/unsupported storage engine: innodb
150107 13:49:56 [ERROR] Aborting
错误代码 13 是 EACCESS。该文件/tmp/ibVLn1jR
尚不存在。这怎么会是权限失败呢?
答案1
SELinux 是否启用了?(如果已启用,getenforce
命令将返回。)Enforcing
如果是这样,SELinux 策略可能会阻止 mysqld 写入符号链接到另一个目录的 tmp 目录——该目录没有定义策略。您可以通过setenforce 0
以 root 身份运行以将系统置于宽容模式来测试这一点。如果 Kmail 可以正常工作,那么您需要为 /store 目录配置策略。
如果您正在运行 GUI 桌面,该sealert
实用程序将指出问题并告诉您该怎么做。否则,您需要使用 SELinux 命令行审计工具之一。