2017-08-30 2 views
0

Ich versuche, eine Datei mit PHP in einem Unterordner meines bevorzugten Ordners zu erstellen.PHP Erstellen von Datei mit anderen Benutzer und Gruppe basierend auf dem Speicherort der neuen Datei

Ich verwende den folgenden Befehl ein:

file_put_contents("/preferred_folder/subfolder/test_A.txt", "test_A"); 

ich die folgende Fehlermeldung angezeigt:

Warning: file_put_contents(preferred_folder/subfolder/test_A.txt): failed to open stream: Permission denied in /users/service/dummy_username/code.php on line ###. 

I Berechtigungen von/preferred_folder/Unterordner geprüft/über PuTTY mit dem folgenden Befehl, wo ich Ich bin als "Dummy_Benutzername" angemeldet und erhalte folgende Antwort:

Schreibberechtigungen für "andere Benutzer" sind nicht aktiviert, was beabsichtigt ist. Auf der anderen Seite, erkenne ich nicht den Benutzer oder die Gruppe, damit ich überprüft:

$ groups 1000001 
groups: 1000001: No such user 

Auch „getent passwds 1234567“ Rückkehr keinen Wert (und tut es erfolgreich für „dummy_username“). Hier wird es komisch; Ich habe versucht, eine Datei an zwei anderen Orten als Plausibilitätsprüfung zu erstellen: der erste hat Schreibrechte für "andere Benutzer" und der zweite ist, wo mein Skript in den letzten Jahren erfolgreich Dateien erstellt hat.

file_put_contents("/preferred_folder/test_B.txt", "test_B"); 
file_put_contents("https://stackoverflow.com/users/service/dummy_username/test_C.txt", "test_C"); 

In diesen Fällen werden beide Dateien erfolgreich erstellt, aber die Benutzer und die Gruppe der Dateien unterscheidet sich als solche:

1:

$ ls -l /preferred_folder/test_B.txt 
-rw-r--r-- 1 ABCDEFG root 5 Aug 30 08:39 /preferred_folder/test_B.txt 

$ ls -l /users/service/dummy_username/test_C.txt 
-rw-r--r-- 1 dummy_username dummy_group 5 Aug 30 08:39 test_C.txt 

ich mit ein paar Fragen nach links bin) Warum unterscheidet sich der Benutzer und die Gruppe für Dateien, die aus diesem Skript erstellt werden, nur vom Speicherort der Datei? Ich erwarte, dass beide im Besitz von "dummy_username" sein würden.

2) Was/wer ist der Benutzer "ABCDEFG"? Ich habe überprüft, dass die Gruppe "root" einen solchen Benutzer nicht explizit enthält.

3) Was/wer ist die Gruppe "1000001" und warum ist der Benutzer "1234567" nicht bekannt als Teil dieser Gruppe?

4) Schließlich, abgesehen von chmod 777'ing der gesamte preferred_folder und seine vielen Ebenen von Unterordnern, gibt es eine geeignete und vorgeschlagene Mittel zur Gewährung bestimmter Berechtigungen für meine "dummy_username" für die beabsichtigte Dateierstellung?

Vielen Dank im Voraus für jede Hilfe. Langzeitbesucher; drittes Poster.

Antwort

0

Die Gründe, warum Sie die Berechtigung verweigert bekommen, sind, weil der Benutzer, der PHP auf dem Webserver ausführt, keine Berechtigungen zum Schreiben in dieses Verzeichnis hat.

In vielen Nginx/Apache-Konfigurationen sind Webserver so eingerichtet, dass der Benutzer www-data Zugriff auf /var/www/html hat. Das Stammverzeichnis Ihrer Webanwendung.

Das Schreiben außerhalb dieses Verzeichnisses führt zu Berechtigungsfehlern.

Es gibt sehr wenige Gründe dafür, dass PHP Zugriff auf Verzeichnisse außerhalb von /var/www/html hat, es sei denn, Sie schreiben Skripte für das Terminal.

Wenn Sie PHP am Terminal ausführen, können Sie sudo, oder erstellen Sie einen Benutzer, der über Berechtigungen zum Lesen/Schreiben von diesem Verzeichnis verfügt und das Skript mit diesem Benutzer ausführen.

+0

Vielen Dank für Ihre Antwort, @BugHunterUK. Ich möchte Berechtigungen speziell für "Dummy_Benutzername" erteilen, indem Sie diesen Benutzer zu der Gruppe hinzufügen, die "/ preferred_folder/subfolder" besitzt (d. H. "1000001"). Wie bereits erwähnt, kann dummy_username Dateien in preferred_folder erstellen, allerdings mit einem seltsamen Benutzer/Gruppe. Woher weiß ich, welcher Benutzername zur Gruppe 1000001 hinzugefügt werden soll? Können Sie außerdem einen Einblick geben, warum der Benutzer/die Gruppe, der die neu erstellte Datei in preferred_folder gehört, anders ist als in/users/service/dummy_username /? Wo kann ich solche Einstellungen finden und ändern? Vielen Dank! –

+0

Update: Ich habe gerade erfahren über [ACLs] (https://unix.stackexchange.com/questions/115631/getting-new-files-to-inherit-group-permissions-on-linux), die den Besitz von Dateien erklärt ist bezeichnet. –

Verwandte Themen