Ich bin relativ neu in der Webentwicklung, bitte haben Sie etwas Geduld.
Ich bin hauptsächlich ein iPhone-Entwickler, habe aber kürzlich eine Website für eine andere Person erstellt, die Shared Hosting verwendet. Ich könnte gut in Dateien in PHP auf dieser Site schreiben, ohne über Berechtigungen nachdenken zu müssen.
Ich bin gerade dabei, einen Webdienst für eine neue App bereitzustellen, die ich erstelle, aber es läuft nicht wirklich reibungslos. Der wichtigste Unterschied besteht darin, dass ich den Server eines anderen Benutzers verwende und nur über FTP / DB-Zugriff verfüge.
Grundsätzlich habe ich eine Menge PHP-Dateien, aus denen mein CMS besteht, wie folgt:
mysite.com/admin/manage_news.php
mysite.com/admin/manage_events.php
Diese Skripte bearbeiten dann entweder die Datenbank oder Dateien. Sie können problemlos mit der Datenbank interagieren, meine Skripte können jedoch nicht in das Dateisystem schreiben. Sie könnten beispielsweise versuchen, in die folgenden Dateien zu schreiben:
mysite.com/data/img/event_1.png
mysite.com/data/somefile.txt
Dies funktionierte gut bei meiner MAMP-Installation (lokal), aber sobald es auf dem Server bereitgestellt wurde, gab PHP bei jedem Schreibversuch Fehler aus ... so etwas wie das:
Datei "../data/img/someimage.png" konnte nicht zum Schreiben geöffnet werden.
Also habe ich dem Mann, der den Server betreibt, eine E-Mail geschickt und er kam zurück und sagte:
Funktioniert es mit öffentlicher Genehmigung? (777)
Und das tat es - aber ich war sehr vorsichtig mit der Verwendung öffentlicher Berechtigungen, also habe ich es sofort wieder deaktiviert. Ich schrieb ihm per E-Mail: "Wie kann ich meine PHP-Skripte mit Standardbenutzerberechtigungen schreiben lassen?" Und er sagte:
Lass es als öffentlich, es wird gut
Ich denke, es ist ein IP-Konflikt irgendwo in der Domain-Auflösung, aber ich mache mir darüber keine Sorgen.
Ich schickte ihm dann eine E-Mail mit der Aufschrift "Das ist sicherlich unsicher" oder so ähnlich, und er antwortete mit folgenden Worten:
Die Realität ist, dass es Millionen von Websites gibt, darunter einige, die ich verwalte und die 777 in verschiedenen Ordnern haben. Es ist nur eine Lebenseinstellung.
Könnte mir jemand eine Idee für eine Lösung geben, die ich ihm geben könnte? Oder was kann ich tun, um die Verwendung von 777 zu vermeiden? Ich mag es wirklich nicht, wenn Ordner auf meiner Website / meinem Dienst öffentlich beschreibbar sind.
Ich würde mich sehr über Ihren Rat freuen, da ich sehr wenig über Webserver weiß.
quelle
Antworten:
Lassen Sie es uns zusammenfassen :
Der Benutzer, der das Skript ausführt, muss das Verzeichnis lesen, ausführen und schreiben. Es sollte also Folgendes sein:
7 = (r) ead, (w) rite, e (x) ecute
Andere Benutzer, die derselben Gruppe angehören, sollten in der Lage sein, die PHP-Datei innerhalb des Verzeichnisses auszuführen, aber nicht darauf zu schreiben (aus offensichtlichen Gründen). Sie müssen nicht unbedingt die PHP-Dateien lesen. Daher müssen wir nur Ausführungsberechtigungen bereitstellen:
1 = e (x) ecute
Gleiches gilt für die Öffentlichkeit. Das ist alles, was Sie für externe Benutzer benötigen, die PHP- und statische Dateien anzeigen müssen:
1 = e (x) ecute
Das absolute Minimum sollte also sein:
711
Ich habe die obigen Einstellungen mit meiner eigenen Konfiguration bestätigt, damit es funktioniert. Dies ist jedoch unter dem Standard-Webbenutzer. Wenn Sie mit einem anderen Login als www hochladen, befinden sich die Dateien und Verzeichnisse wahrscheinlich unter einem anderen Benutzer. In diesem Fall kann der Standard-Webbenutzer möglicherweise die Dateien, die Ihnen gehören, nicht lesen oder schreiben. Zu diesem Zeitpunkt müssen Sie wahrscheinlich den Standard-Webbenutzer zu Ihrer Gruppe hinzufügen (der Systemadministrator muss dies tun) und dann den Benutzern der Gruppe Lese-, Schreib- und Ausführungsberechtigungen erteilen:
771
Und das würde wahrscheinlich funktionieren. Entweder das, oder der Systemadministrator muss den Benutzer- und Gruppenbesitz dieser Dateien auf den Standard-Webserverbenutzer ändern (aber NICHT DIE ERLAUBNISSE!). Wenn dies immer noch nicht funktioniert, hilft uns eine Beispielausgabe der Berechtigungen (etwa "ls -la im Verzeichnis") bei der weiteren Fehlerbehebung. Dies gilt jedoch, solange Sie nur der Öffentlichkeit Ausführungsberechtigungen erteilen müssen ( oder "andere"), sollten Sie aus Sicherheitsgründen in Ordnung sein.
quelle
/data
Ordner - dieser Ordner enthält PHP-Skripte, aus denen mein JSON-Webdienst besteht, und eine Reihe von Bildern, die für Inhalte verwendet werden, die im Webdienst (in einem/data/img
Ordner) weitergegeben werdenDieser Typ ist ein Idiot und das ist völliger Unsinn. Zugriffsrechte haben nichts mit IP-Adresse oder Domain-Auflösung zu tun, er lässt nur Wörter fallen.
Angesichts der Qualität dieses "Administrators" würde ich empfehlen, Ihre Site an einem anderen Ort zu hosten, da es sehr wahrscheinlich ist, dass die Site sehr schlecht und unsicher verwaltet wird. Nur
777
Berechtigungen für etwas zu erteilen, damit es funktioniert, ist ein sicheres Zeichen, dass er nicht ein bisschen versteht, was er tut.Welche Zugriffsrechte wirklich erforderlich sind, hängt von der Art und Weise ab, wie das System verwendet und konfiguriert wird, und es ist schwierig, Ihnen etwas zu sagen, ohne dies zu wissen.
quelle
www-data
mit700
Berechtigungen, aber dies wird wahrscheinlich nicht in Ihrem Fall zur Arbeit zu gehen.Apache/2.2.9 (Debian) PHP/5.2.6-1
www-data
Gruppe ist, müssen Sie entweder Benutzer / Gruppen nach der Übertragung ändern oder tatsächlich777
Berechtigungen verwenden. Aber das ist sinnlos, wir können Ihnen so nicht helfen.