
Ich habe eine Webanwendung auf einem Linux-Shared-Hosting-Rechner. Nehmen wir an, ich habe eine .htpasswd
Datei, einige Konfigurationen, die ein Datenbankkennwort speichern, und möchte grundsätzlich nicht, dass Leute meinen Quellcode nach Schwachstellen durchsuchen.
Der Webserver (Apache) benötigt Lesezugriff (und in manchen Fällen auch Schreibzugriff) auf die oben genannten Dateien. Ich möchte jedoch nicht, dass andere Personen auf demselben gemeinsam genutzten Host Zugriff haben.
Ich habe nie ganz verstanden, wie das funktionieren soll. Die FrageHierist ähnlich, scheint aber eher darauf abzuzielen, die Webanwendung daran zu hindern, versehentlich eine Kennwortdatei zu hosten.
Soweit ich weiß, muss ich nur mit grundlegenden Linux-Berechtigungen arbeiten. Auf einem Server soll ich „anderen“ Berechtigungen für Apache erteilen. Wenn ich dann die Gruppenberechtigungen entferne, denen alle anderen Benutzer angehören, wird ihnen der Zugriff verweigert. Das scheint ziemlich umständlich. Auf einem anderen Server ist eine nobody
Gruppe eingerichtet, public_html
für die nur Gruppenberechtigungen festgelegt sind.
Eine Sorge besteht darin, dass, wenn der Apache-Benutzer Zugriff auf meine Dateien hat, ein einfaches Skript geschrieben und ausgeführt werden könnte, um einem anderen Benutzer Zugriff zu verschaffen:
<?php
header("Content-Type: text/plain");
include $_GET['f'];
?>
TLDR: Ich brauche Apache, um Zugriff auf die Quelldateien und Passwörter zu haben, aber nicht auf andere Benutzer auf demselben Rechner (außer natürlich Administratoren).
Was ist ein übliches Setup?
Ähnliche Fragen:
- Wie kann ich Apache den Zugriff auf eine Datei gestatten, andere jedoch daran hindern, sie anzuzeigen?
- https://unix.stackexchange.com/questions/30879/welcher-Benutzer-sollte-Apache-und-php-als-welche-Berechtigungen-ausgeführt-werden-sollte-var-www
- https://askubuntu.com/questions/26848/permissions-issue-wie-kann-apache-auf-dateien-in-meinem-home-verzeichnis-zugreifen
Antwort1
Erstellen Sie eine Gruppe und fügen Sie apache/www-data zur Gruppe hinzu. Dann:
chown -R apache:Gruppenname /var/www/mywebapp/ && \ chmod -R 640 /var/www/mywebapp
Dadurch erhält der Besitzer Lese- und Schreibrechte (6) und die Gruppe Leserechte (4) für den Ordner und alle Unterverzeichnisse und Dateien. Der Apache-Benutzer kann auf die Dateien zugreifen, ebenso der Besitzer, andere Benutzer jedoch nicht. Sie sollten sicherstellen, dass sie sich nicht als Apache-Benutzer anmelden können.
Verwenden Sie Verzeichnisblöcke in der Vhost-Konfiguration, um den Zugriff auf Ordnerebene einzuschränken. http://httpd.apache.org/docs/2.0/misc/security_tips.html#Siehe Serverdateien schützen http://www.anchor.com.au/hosting/dedicated/Security_Hardening_of_an_Apache_Virtual_Host