Problem mit Benutzerberechtigungen unter Linux

Problem mit Benutzerberechtigungen unter Linux

Jedes Mal, wenn ich eine neue Datei aus „Eclipse“ erstelle, muss ich diese beiden Codezeilen ausführen, um die Lese-/Schreibberechtigung zu erhalten:

chmod -R 775 /var/www/folder/filename.extension

Und/Oder

sudo chown -R www-data:www-data /var/www

Und wenn ich einige Dateien in diesen Serverordner kopiere und über eine Browser-URL darauf zugreife, etwa:

localhost/folder/filename.extension

Ich erhalte einen Berechtigungsfehler vom Apache-Server.

Gibt es keine Möglichkeit, dieses Problem zu beheben?

*Notiz:Der Hauptfehler tritt auf, wenn meine move_uploaded_file()Funktion versucht, die Datei in ein Verzeichnis zu verschieben /var/www/MyProject/.

Antwort1

Verwenden Sie das SGID-Bit.

Tun Sie dies einmal und vergessen Sie dieses Problem:

chmod g+s /var/www/folder

Möglicherweise möchten Sie dasselbe für alle Unterordner tun:

find /var/www/folder -type d | xargs chmod g+s

und für alle Fälle:

find /var/www/folder -type d | xargs chgrp www-data

Jetzt gehören alle Dateien, die unter erstellt werden, /var/www/folder/zu der Gruppe, der der enthaltene Ordner gehört, egal was passiert. Auf diese Weise können Sie beliebige Dateien oder Ordner erstellen, ohne sich Sorgen machen zu müssen, dass sie nicht dazu gehören, z. B. zuwww-DatenGruppe, was Sie wollen.

Bitte beachten Sie, dass dies nur für Dateien oder Ordner funktioniert, die innerhalb des Verzeichnisses erstellt werden. Wenn Dateien woanders erstellt und in den Verzeichnisbaum verschoben werden, müssen Sie den Eigentümer trotzdem manuell ändern.

Beispiel:

# Create folder that belongs to www-data group
$ mkdir test
$ chown john.www-data test
$ ls -l

drwxr-xr-x 2 john www-data 4096 Jun 17 10:14 test

# Create a file, check the ownership
$ touch test/file1
$ ls -l test/

-rw-r--r-- 1 john users       0 Jun 17 10:16 file1

# Set the SGID bit
$ chmod g+s test
$ ls -l

drwxr-sr-x 2 john www-data 4096 Jun 17 10:19 test

# Create a file, check the ownership
$ touch test/file2
$ ls -l test/

-rw-r--r-- 1 john users       0 Jun 17 10:18 file1
-rw-r--r-- 1 john www-data    0 Jun 17 10:19 file2

Mehr InfoHier.

Antwort2

Sie können Standard-ACLs verwenden, um neuen Dateien und Verzeichnissen Benutzer- und Gruppenberechtigungen zuzuweisen:

setfacl -dR u:domain:rwx,g:www-data:rwx /var/www/folder/filename.extension

Antwort3

Zunächst möchte ich darauf hinweisen, dass Sie bei Fragen spezifischer vorgehen sollten, z. B. Welches Betriebssystem bzw. welche Linux-Distribution verwenden Sie? Dies kann den Prozess der Lösungsfindung erheblich beschleunigen. Sie können mit der Fehlerbehebung beginnen, indem Sie die spezifischen Ordner ändern.EigentumUndBenutzerkontensteuerung(Benutzerzugriffskontrolle) rekursiv, etwa so:

chown domain:www-data /var/www/folder -chR

chmod 775 /var/www/folder -cR

NOTIZ: Durch Weglassen des abschließenden Schrägstrichs(/)am Ende des Ordnernamens, werden Ihre Änderungen auf den Ordner und seinen gesamten Inhalt angewendet.


Was die Berechtigungsfehler beim Zugriff auf die Datei (Skript?) im Browser betrifft, müssen Sie sicherstellen, dass Ihr Benutzer über die richtigen Berechtigungen verfügt, um Dateien in bereitzustellen apache. Dies sollte behoben werden, indem Sie Ihre /etc/httpd/*/httpd.confDatei bearbeiten und Folgendes hinzufügen:

User domain
Group www-data

verwandte Informationen