Я перенес свой /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

Errcode 13 является EACCESS. Файл /tmp/ibVLn1jR еще не существует. Как это может быть сбой разрешений?

1 ответ1

2

SELinux включен? (Команда getenforce вернет Enforcing если это так.)

Если это так, политика SELinux, скорее всего, не позволяет mysqld записывать в каталог tmp, который является символической ссылкой на другой каталог - каталог, для которого не определена политика. Вы можете проверить это, запустив setenforce 0 от имени пользователя root, чтобы перевести систему в разрешающий режим. Если Kmail работает, вам нужно настроить политику для каталога /store.

Если вы используете рабочий стол с графическим интерфейсом, утилита sealert укажет на проблему и скажет вам, что делать. В противном случае вам потребуется использовать один из инструментов аудита командной строки SELinux.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .