Por que estou fazendo o EACCESS gravar em um diretório chmod 777?

0

Mudei meu /tmp para outro disco rígido para economizar o desgaste no 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 .

Eu posso criar arquivos em /tmp/ como um usuário não-root, mas o KMail não será iniciado, o log de erros do mysql contém

/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. O arquivo /tmp/ibVLn1jR ainda não existe. Como isso pode ser uma falha de permissões?

    
por spraff 07.01.2015 / 14:57

1 resposta

2

O SELinux está ativado? (O comando getenforce retornará Enforcing se for.)

Nesse caso, a política do SELinux provavelmente impedirá que o mysqld grave em um diretório tmp que seja vinculado a outro diretório - um diretório para o qual nenhuma política é definida. Você pode testar isso executando setenforce 0 como root para colocar o sistema no modo permissivo. Se o Kmail funcionar, você precisará configurar a política para o diretório / store.

Se você estiver executando uma área de trabalho da GUI, o utilitário sealert indicará o problema e informará o que fazer. Caso contrário, você precisará usar uma das ferramentas de auditoria de linha de comando do SELinux.

    
por 07.01.2015 / 18:37