Berechtigungen für einen typischen gemeinsam genutzten Linux-Webhost

Berechtigungen für einen typischen gemeinsam genutzten Linux-Webhost

Ich versuche, die Dateiberechtigungen für ein typisches gemeinsam genutztes Linux-Webhosting-Konto zu verstehen. Ich weiß, wie man RWX-Berechtigungen für die Eigentümergruppen- und öffentlichen Entitäten einer Datei oder eines Verzeichnisses einstellt. Was mir nicht ganz klar ist, ist, wohin die Zugriffsberechtigungen normalerweise zugeordnet werden. Ich vermute Folgendes:

BENUTZERBerechtigungen würden sich auf etwas auswirken ... ähm ... ich bin mir hier nicht sicher
GRUPPEBerechtigungen würden beeinflussen, was ein PHP oder ein anderes Skript, das auf dem Server ausgeführt wird, tun könnte
ANDERE(manchmal auch PUBLIC oder WORLD genannt?) Berechtigungen würden beeinflussen, was ein UA eines Website-Besuchers tun kann

Kann irgendjemand mein Verständnis hierzu korrigieren, bestätigen oder erweitern?

KLÄRUNG:

Wenn ich meinem auf dem Server ausgeführten PHP-Skript die Berechtigung zum Schreiben in eine Datei erteilen möchte, muss diese Berechtigung dann in USER, GROUP oder OTHER angegeben werden? Wenn ich dem Browser eines Website-Besuchers verbieten möchte, den Inhalt eines Verzeichnisses anzuzeigen, muss diese Berechtigung dann in USER, GROUP oder OTHER des Verzeichnisses angegeben werden?

Antwort1

Lassen Sie uns einige Schlüsselwörter angeben.

FTPUSER   = you with your ftp client
WWWDAEMON = program (servers) that's responsible for processing your web pages and scripts 
WWWUSER   = user as which the WWWDAEMON processes your pages
BROWSER   = Someone looking at your website with a browser
FILES     = files that reside in your www/ftp site
yourgroup = group that your FTPUSER belongs to and WWWUSER does not

Sie greifen als FTPUSER mit einem FTP-Programm auf Ihre DATEIEN zu

-rwxr-xr-x  2 FTPUSER yourgroup   72 2012-01-18 13:56 somescript.php

Nun... da der WWWDAEMON-Benutzer WWWUSER nicht Sie (FTPUSER) sind, respektiert es ANDERE Berechtigungen, wenn es versucht, auf readIhr Skript zuzugreifen. (Es gibt Hosting-Sites, die Ihre Skripte als Ihr FTPUSER ausführen). Das Entfernen der anderen Lese- und Ausführungsberechtigung blockiert die Verwendung von somescript.php

# this scipt is unusable trough a browser
-rwxr-x---  2 FTPUSER yourgroup   72 2012-01-18 13:56 somescript.php

Wenn Sie ein Verzeichnis mit allgemeiner Schreibberechtigung erstellen, kann Ihr Skript dort schreiben. Wenn Sie das Verzeichnis jedoch nicht irgendwie schützen (z. B. mit .htaccess oder indem Sie es außerhalb Ihres WWW-Verzeichnisses platzieren), kann der Browser aus folgenden Gründen möglicherweise auch direkt auf diese Dateien zugreifen:

BROWSER contacts WWWDAEMON which runs as WWWUSER so 
BROWSER can see everything processed by WWWDAEMON that the WWWUSER can. 

Verarbeitet bedeutet auch, dass WWWDAEMON auch .htaccess oder ähnliches respektiert, um den Zugriff zu blockieren.

Der Rat ist, es zu erstellen phpwritedirund ihm a+rwx-Rechte zu geben. Fügen Sie .htaccessdort die Datei hinzu (sofern Ihr Hosting-Dienst dies zulässt).

deny from all

Damit kann Ihr als WWWUSER ausgeführtes Skript dieses Verzeichnis weiterhin verwenden, aber WWWDAEMON blockiert jeglichen Browserzugriff darauf.

Antwort2

Du hast es ziemlich durcheinander gebracht.

ugougo ist userund group- othernicht owner. Eigentümer ist der Benutzer, der normalerweise die meisten Rechte besitzt.

GROUP-Berechtigungen würden beeinflussen, was ein PHP oder ein anderes Skript, das auf dem Server ausgeführt wird, tun könnte

Gruppenberechtigungen haben keinen Einfluss darauf, was getan werden kann (Lesen, Schreiben, Ausführen), sondern wer es tun kann. Dasselbe gilt für den Benutzer:

Benutzerberechtigungen (manchmal auch PUBLIC genannt?) beeinflussen, was ein UA eines Website-Besuchers tun kann

Der Benutzer ist der Eigentümer, owird aber für verwendet other, was man als öffentlich bezeichnet. Und noch einmal: Es geht darum, wer es tun kann, nicht was getan werden kann.

Sie können ugobei der Verwendung von die Abkürzungen verwenden chmod, was einfacher ist als die numerischen Codes:

  chmod ug+w sample1
  chmod go-r sample2 
  chmod g=w  sample3 
  • Beispiel 1: Schreibberechtigungen für Benutzer und Gruppe hinzufügen
  • Beispiel 2: Leseberechtigungen von der Gruppe und anderen entfernen
  • Beispiel 3: Gruppenberechtigungen zum Schreiben festlegen

Jede Datei gehört einem Benutzer und einer Gruppe. Sie können sie mit sehen ls -l. Beispiel:

ls -l /var
insgesamt 12
drwxr-xr-x  2 root root   592 2012-01-12 08:02 backups
drwxr-xr-x 28 root root   776 2011-08-18 05:12 cache
drwxrwxrwt  2 root root    48 2010-06-22 01:46 crash
drwxr-xr-x  2 root root  3704 2010-06-05 22:01 games
drwxr-xr-x 84 root root  2296 2011-10-16 13:25 lib
drwxrwsr-x  2 root staff   48 2007-10-08 12:47 local
drwxrwxrwt  3 root root    80 2012-01-19 08:03 lock
drwxr-xr-x 22 root root  5992 2012-01-19 08:01 log
drwxrwsrwt  2 root mail    72 2012-01-18 07:56 mail

Ein Teil der Auflistung von /var. Die meisten Verzeichnisse (d...) gehören zu root.root, was sowohl ein Benutzer als auch eine Gruppe ist. Mail und so sind allerdings Gruppen, die nicht mit dem Benutzer identisch sind.

Update (nach der Aktualisierung der Frage):

Wenn ich meinem auf dem Server ausgeführten PHP-Skript die Berechtigung zum Schreiben in eine Datei erteilen möchte, muss diese Berechtigung dann in USER, GROUP oder OTHER angegeben werden? Wenn ich dem Browser eines Website-Besuchers verbieten möchte, den Inhalt eines Verzeichnisses anzuzeigen, muss diese Berechtigung dann in USER, GROUP oder OTHER des Verzeichnisses angegeben werden?

Nun - es ist nicht die Berechtigung eines Skripts, dies oder jenes zu tun. Es ist immer die Berechtigung des Benutzers, der das Skript ausführt.

Um ein Skript auszuführen, muss der Benutzer es lesen können. Das bedeutet, dass es von der Festplatte gelesen und in den Speicher geschrieben werden muss, um es ausführen zu können. Sie können es nicht ausführen, ohne es zu lesen.

Um in eine Datei zu schreiben, muss der Benutzer über die Berechtigung zum Schreiben in ein Verzeichnis verfügen – nicht das Skript oder Programm.

Wenn es sich bei dem Programm, das in ein Verzeichnis schreibt, um einen Server handelt, wird es im Allgemeinen nicht von einem anonymen Benutzer im Web gestartet, sondern von einem speziellen Benutzer wie „www“.

Antwort3

Da Sie von Shared Hosting sprechen, möchte ich noch ein paar interessante Details zu einem Shared Hoster hinzufügen, mit dem ich oft zusammenarbeite. Meiner Erfahrung nach ist ein solches Setup in Shared-Hosting-Umgebungen nicht ungewöhnlich.

In Shared-Hosting-Umgebungen ist es nicht ungewöhnlich, dass mehrere Benutzer denselben Host mit Ihnen teilen. Natürlich haben sie alle Benutzerkonten.

Mein Benutzerkonto kann sein . Jetzt ist meine primäre Gruppe auf oder 123456-user1eingestellt , sodass alle neuen Dateien und Ordner, die ich erstelle, zu gehören .nobodynogroup123456-user1:nobody

Ich nehme an, dass sie aus Sicherheitsgründen nicht einfach alle Benutzer auf dem Host in dieselbe primäre Gruppe werfen.

Jetzt kann ich meine Dateien lesen, aber keine Gruppe kann sie lesen (weil die Gruppe ja nobody), aber wie liest Apache sie überhaupt?
Apache liest sie, indem es eine Instanz unter Ihrem eigenen Benutzerkonto ausführt. Mit PHP würde es beispielsweise inCGI-Modusum Dateien unter Ihrem Konto auszuführen.

Das erste Oktett der Berechtigungen ist also das, was für das gesamte System relevant ist. Es definiert, was sowohl Sie als auch Website-Besucher (sozusagen) mit der Datei machen können. Die Gruppe kann ignoriert werden. Und das letzte Oktett ist für andere in etwa gleichbedeutend mit dem Eigentümerteil.

verwandte Informationen