Ubuntu, usuário não pode escrever em um diretório e não vejo por que não


2

Eu tenho um diretório, / var / www / someProject / backup / mysql, e eu quero que o usuário mysql escreva nele. Toda vez que tento escrever nele com o usuário mysql, recebo um erro "não consigo ler / gravar". No entanto, o diretório é 777, como você pode ver aqui:

drwxrwxrwx 2 aUser users 4096 2010-03-17 17:14 mysql

Eu também tentei chown o diretório para mysql: mysql, assim como o diretório home do usuário mysql, mas sem sorte, isso não mudou nada.

O que eu estou fazendo errado aqui? Ou o usuário do mysql é limitado ao seu diretório home de alguma outra forma no Ubuntu? Estive me incomodando por dias agora, esse problema tão qualquer ajuda muito apreciada.


777 permissões estão erradas na maioria dos casos.
geek

Eu sei, e por isso está mudando o dono, já que eu não quero que o mysql se torne o dono, apenas experimentando coisas para fazer isso funcionar. Alguma ideia do que eu posso estar fazendo errado aqui? Eu sou bem noob em relação ao linux.
Peter

Você poderia adicionar a mensagem de erro exata que está vendo? Existe alguma informação adicional no arquivo de log mysql?
Dominik

A mensagem de erro completa é: Mensagem: Erro de execução da instrução Mysqli: Não é possível criar / gravar no arquivo '/var/www/someProject/backup/mysql/1269005862_tableName.sql' (Errcode: 13) Felicidades por tentar me ajudar Dominik
Peter

Apenas verifiquei meus logs mysql e eles estão vazios
Peter

Respostas:


2

Você precisa ter certeza de que o usuário mysql é capaz de acessar o diretório / var / www / someProject / backup / mysql, isto é, ele deve ter pelo menos o 'x' em todos os diretórios pai.

Certifique-se também de que o erro não seja causado pela sua configuração do SELinux (se você estiver usando o SELinux).


Oi Dominik, eu apenas tracei todos os diretórios do var para o mysql e todos eles têm o x certo para os outros, já que o mysql não é o dono nem pertence ao grupo de nenhum deles. Por exemplo: drwxr-xr-x 16 raiz raiz 4096 2009-09-15 09:56 var
Peter

+1 para o SELinux. A configuração padrão do SELinux é extremamente protetora do mysql.
Satanicpuppy

Esse servidor em particular está rodando no Ubuntu, e eu não acho que o selinux venha com a instalação padrão do Ubuntu.
Peter

@ Dominik, isso foi muito útil. Ainda não cheguei lá, mas descobri que, embora o meu Ubuntu não execute o selinux, ele faz o apparmor e: 3 processos estão no modo enforcer: / usr / sbin / mysqld (8486) ...
Peter

2

Com a ajuda de Dominik acima, descobri que o Ubuntu está executando o apparmor. Cito da wikipedia:

O AppArmor permite que o administrador do sistema associe a cada programa um perfil de segurança que restringe os recursos desse programa

Com certeza, entre esses programas estava o mysqld. Portanto, não o usuário foi o problema, mas as restrições impostas ao processo pelo apparmor. Eu encontrei a solução aqui

sudo touch /etc/apparmod.d/disable/usr.sbin.mysqld
sudo /etc/init.d/apparmor reload

Isto faz do mysqld um processo livre que para mim, nesse servidor, não é problema. Então, depois de dias de busca, o problema foi corrigido!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.