Ubuntu, Benutzer können nicht in ein Verzeichnis schreiben und ich sehe nicht, warum nicht

2640
Peter

Ich habe ein Verzeichnis, / var / www / someProject / backup / mysql, und ich möchte, dass der Benutzer mysql darauf schreibt. Jedes Mal, wenn ich versuche, mit dem mysql-Benutzer darauf zu schreiben, erhalte ich die Fehlermeldung "Kann nicht lesen / schreiben". Das Verzeichnis ist jedoch 777, wie Sie hier sehen können:

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

Ich habe auch versucht, das Verzeichnis zu mysql: mysql zu ändern, genau wie das Heimatverzeichnis des mysql-Benutzers, aber kein Glück, das hat nichts geändert.

Was mache ich hier falsch? Oder ist der mysql-Benutzer in Ubuntu auf andere Weise auf sein Heimatverzeichnis beschränkt? Ich habe mich schon seit Tagen geärgert, dieses Problem, also jede Hilfe sehr geschätzt.

2
777 Berechtigungen sind in den meisten Fällen falsch. geek vor 14 Jahren 0
Ich weiß, und so ändert sich auch der Besitzer, da ich nicht möchte, dass mysql der Eigentümer wird. Ich probiere einfach Sachen aus, um das zum Laufen zu bringen. Irgendeine Idee, was ich hier falsch machen könnte? Ich bin in Sachen Linux ziemlich verrückt. Peter vor 14 Jahren 0
Könnten Sie die genaue Fehlermeldung hinzufügen, die Sie sehen? Gibt es zusätzliche Informationen in der MySQL-Protokolldatei? Dominik vor 14 Jahren 0
Die vollständige Fehlermeldung lautet: Nachricht: Mysqli-Anweisung Fehler ausführen: Kann nicht erstellen / schreiben in die Datei '/var/www/someProject/backup/mysql/1269005862_tableName.sql' (Fehlercode: 13) Peter vor 14 Jahren 0
Überprüfen Sie einfach meine MySQL-Protokolle und sie sind leer Peter vor 14 Jahren 0
Ich habe gerade mein Syslog überprüft und dort Folgendes gefunden: 19. März 16:51:49 ServerName-Kernel: [13584.420001] type = 1503 audit (1269013909.540: 24): operation = "inode_create" request_ mask = "eine ::" denied_mask = "a ::" fsuid = 112 name = "/ var / www / someProject / backup / mysql / 1269013909_tableName.sql" pid = 8554 prof ile = "/ usr / sbin / mysqld" Peter vor 14 Jahren 0

2 Antworten auf die Frage

2
Dominik

Sie müssen sicherstellen, dass der Benutzer von mysql tatsächlich in das Verzeichnis / var / www / someProject / backup / mysql gelangen kann, dh er muss in allen übergeordneten Verzeichnissen mindestens das Recht 'x' haben.

Stellen Sie außerdem sicher, dass der Fehler nicht von Ihrem SELinux-Setup verursacht wird (wenn Sie SELinux verwenden).

Hallo Dominik, ich habe gerade jedes Verzeichnis von var bis mysql nachverfolgt und sie haben alle das x-Recht für andere, da mysql nicht der Besitzer ist oder zu einer Gruppe von ihnen gehört. Zum Beispiel: drwxr-xr-x 16 Wurzelwurzel 4096 2009-09-15 09:56 var Peter vor 14 Jahren 0
+1 Für SELinux. Die Standardkonfiguration von SELinux schützt MySQL extrem. Satanicpuppy vor 14 Jahren 0
Dieser bestimmte Server läuft auf Ubuntu, und ich glaube nicht, dass Selinux mit der Standardinstallation von Ubuntu geliefert wird. Peter vor 14 Jahren 0
@Dominik, das war wirklich hilfreich. Ich bin noch nicht da, aber ich habe entdeckt, dass mein Ubuntu zwar nicht selinux ausführt, aber es funktioniert und: 3 Prozesse sind im Erzwingungsmodus: / usr / sbin / mysqld (8486) ... Peter vor 14 Jahren 0
2
Peter

Mit der Hilfe von Dominik oben entdeckte ich, dass Ubuntu Apparmor ausführt. Ich zitiere aus Wikipedia:

AppArmor ermöglicht dem Systemadministrator, jedem Programm ein Sicherheitsprofil zuzuordnen, das die Funktionen dieses Programms einschränkt

Sicher genug, war unter diesen Programmen mysqld. So war nicht der Benutzer das Problem, sondern die Einschränkungen, die Apparmor dem Prozess auferlegte. Ich habe dann hier die Lösung gefunden

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

Dies macht mysqld zu einem kostenlosen Prozess, der für mich auf diesem Server kein Problem darstellt. Also, nach Tagen der Suche, Problem behoben!