Ubuntu, пользователь не может писать в каталог, и я не понимаю, почему нет

2542
Peter

У меня есть каталог, / var / www / someProject / backup / mysql, и я хочу, чтобы пользователь mysql написал в него. Каждый раз, когда я пытаюсь записать в него пользователя mysql, я получаю сообщение об ошибке «не могу прочитать / написать». Тем не менее, каталог 777, как вы можете видеть здесь:

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

Я также попытался добавить каталог к ​​mysql: mysql, точно так же, как домашний каталог пользователя mysql, но, к счастью, это ничего не изменило.

Что я здесь не так делаю? Или пользователь mysql ограничен своим домашним каталогом каким-либо другим способом в Ubuntu? Вот уже несколько дней меня мучает эта проблема, поэтому любая помощь очень ценится.

2
777 разрешений неверны в большинстве случаев. geek 14 лет назад 0
Я знаю, и поэтому меняется владелец, так как я не хочу, чтобы mysql становился владельцем, просто пробовал что-то, чтобы заставить это работать. Есть идеи, что я могу здесь делать не так? Я довольно нуб к Linux. Peter 14 лет назад 0
Не могли бы вы добавить точное сообщение об ошибке, которое вы видите? Есть ли дополнительная информация в лог-файле mysql? Dominik 14 лет назад 0
Полное сообщение об ошибке: Сообщение: Ошибка выполнения оператора Mysqli: Невозможно создать / записать в файл '/var/www/someProject/backup/mysql/1269005862_tableName.sql' (Errcode: 13) Приветствует попытку помочь мне Доминик Peter 14 лет назад 0
Просто дважды проверил мои логи mysql и они пустые Peter 14 лет назад 0
Я только что проверил свой системный журнал, и там я нашел это: 19 марта 16:51:49 имя_сервера ядро: [13584.420001] type = 1503 аудит (1269013909.540: 24): операция = "inode_create" request_ mask = "a ::" denied_mask = "a ::" fsuid = 112 name = "/ var / www / someProject / backup / mysql / 1269013909_tableName.sql" pid = 8554 prof ile = "/ usr / sbin / mysqld" Peter 14 лет назад 0

2 ответа на вопрос

2
Dominik

Вы должны убедиться, что пользователь mysql действительно может получить доступ к каталогу / var / www / someProject / backup / mysql, т.е. он должен иметь как минимум право 'x' на все родительские каталоги.

Также убедитесь, что ошибка не вызвана настройкой SELinux (если вы используете SELinux).

Привет, Доминик, я только что проследил каждый каталог от var до mysql, и все они имеют право x для других, так как mysql не является владельцем и не принадлежит к группе ни одного из них. Например: drwxr-xr-x 16 root root 4096 2009-09-15 09:56 var Peter 14 лет назад 0
+1 для SELinux. Конфигурация SELinux по умолчанию крайне защищает mysql. Satanicpuppy 14 лет назад 0
Этот конкретный сервер работает в Ubuntu, и я не думаю, что selinux поставляется со стандартной установкой Ubuntu. Peter 14 лет назад 0
@ Доминик, это было действительно полезно. Я еще не там, но я обнаружил, что хотя моя Ubuntu не запускает selinux, она выполняет apparmor и: 3 процесса находятся в принудительном режиме: / usr / sbin / mysqld (8486) ... Peter 14 лет назад 0
2
Peter

С помощью вышеупомянутого Доминика я обнаружил, что в Ubuntu работает apparmor. Я цитирую из Википедии:

AppArmor позволяет системному администратору связать с каждой программой профиль безопасности, ограничивающий возможности этой программы.

Конечно же, среди этих программ был mysqld. Так что проблема была не в пользователе, а в ограничениях, наложенных на процесс apparmor. Затем я нашел решение здесь

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

Это делает mysqld бесплатным процессом, который для меня, на этом сервере, не является проблемой. Итак, после нескольких дней поиска проблема исправлена!

Похожие вопросы