GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Apache kann nicht auf die Datei zugreifen, obwohl sie die Berechtigung hat?

Ich möchte anderen keinen Lesezugriff gewähren, also habe ich meinen Benutzer und den apache hinzugefügt Benutzer zu einer Gruppe namens apachme und setze dann diese Gruppe auf alle Dateien und Ordner, die ich haben möchte apache Zugriff haben, einschließlich des Stammverzeichnisses der Webseite. Ich habe dann Gruppe und Besitzer alle Berechtigungen gegeben. Danach kann Apache immer noch nicht auf die Dateien zugreifen, ohne die Leseberechtigung auf all (rwxrwxr--(0774) zu setzen ).

Der Ordner, der die Indexdatei enthält, gehört apache mit der Gruppe apachme und die Berechtigungen rwxrwxr-x(0775)

Damit erhalte ich einen 500-Fehler und ändere ihn in 0774 wird es gut laufen lassen

Diese dienten nur dazu, zu bestätigen, unter welchem ​​Benutzer Apache lief und dass er zur Gruppe hinzugefügt wurde.

Akzeptierte Antwort:

Aus Sicherheitsgründen ist es nicht wirklich eine gute Idee, Webseiten mit demselben Benutzer von Apache einzurichten. Der Apache-Benutzer sollte die Webseiten lesen, aber nicht darauf schreiben können.

Daher ist es in der Standardkonfiguration normal, dass die Webstrukturen für alle lesbar sind, und wenn geschrieben werden muss, normalerweise für den Apache-Benutzer beschreibbar sind, was ein Sicherheitsalptraum ist.

Eine der Strategien, um dies zu vermeiden, ist die Installation/Verwendung von mod_ruid2. https://github.com/mind04/mod-ruid2

Was Debian betrifft, reicht es aus:

apt-get install libapache2-mod-ruid2

Bitte beachten Sie, dass der Apache-Standardbenutzer je nach Distribution unterschiedlich ist. Bei Debian ist es www-data, bei RH/CentOS Apache und bei SuSE wwwrun. Ich werde es von nun an als Apache-Standardbenutzer bezeichnen.

Wenn Sie in einem vhost keine Direktiven definieren, verhält er sich auf herkömmliche Weise; andernfalls wird das Verhalten geändert.

Die Idee dahinter ist, dass ein Prozess im vhost mit dem Benutzer läuft, der Rechte für den vhost hat, und als solches haben die Dateien diesen Besitz, und wie Sie möchten, können andere Benutzer sie nicht lesen. Normalerweise definieren Sie einen Benutzer pro vhost.

In den Virtualhost- oder Directory-Direktiven in einem vhost definieren Sie den Benutzer und die Gruppe, die für dieses Verzeichnis aktiv sein werden. Die user:usergroup sind die effektiven Berechtigungen, die Apache beim Zugriff auf den virtuellen Host/das virtuelle Verzeichnis verwenden wird, und daher kann jeder Benutzer, der zu dieser Gruppe gehört, die Verzeichnisse schreiben/sehen.

    <Directory "/vhostdir/">
            RMode config
            RUidGid user usergroup

    ....

Daher können die Dateien beim Schreiben der Verzeichnisse jetzt als 660 mit dem Besitz von user:usergroup erstellt werden, wenn sie von einer Gruppe von Benutzern verwaltet werden. Ebenso können die Dateien auch von einem anderen Benutzer mit Leserechten für die Welt erstellt werden; zum Schreiben ist es jedoch nicht der Apache-Standardbenutzer, sondern dieser andere Benutzer.

Die Vorteile von mod_ruid2 sind dann:

  • in einer Umgebung mit virtuellem Hosting können Benutzer die Dateien anderer Benutzer nicht lesen;
  • in einem einzelnen Benutzer können Sie immer noch Dateien als ein anderer Benutzer erstellen, und weder der Apache-Standardbenutzer noch der ruid2-Benutzer können sie überschreiben
  • was noch wichtiger ist, die geschriebenen Dateien werden jetzt mit dem ruid2-Benutzer erstellt und nicht mehr global mit dem Apache-Standardbenutzer.
Verwandte:Centos – Wie kann man das Root-Dateisystem verkleinern, ohne eine Live-CD zu booten?

Von der Github-Seite:

ÜBER mod_ruid2 ist ein Suexec-Modul für Apache 2.0, 2.2 und 2.4, basierend
auf mod_ruid und mod_suid2

- Es läuft nur unter Linux, weil nur der Linux-Kernel die erforderlichen Prozessfähigkeiten implementiert hat.
- Es hat eine bessere Leistung als mod_suid2, weil es keine httpd-Kinder nach einer Anfrage töten muss. es nutzt Kernel-Fähigkeiten
und nach Erhalt einer neuen Anfrage suids wieder.
-es gibt einige Sicherheitsprobleme, zum Beispiel wenn ein Angreifer erfolgreich den httpd-Prozess ausnutzt, kann er effektive Fähigkeiten einstellen und
setuid zu root. Ich empfehle, einen Sicherheitspatch im Kernel
(grsec) oder so etwas zu verwenden.

-es gibt zwei Hauptbetriebsmodi:stat und config
1. config ist default, du musst uid und gid definieren. Wenn keine [ug]id definiert ist, werden der Standardbenutzer und die Standardgruppe verwendet.

  1. stat httpd setuid und setgid zu uid und gid des angeforderten Dateinamens (Skripts)/Verzeichnisses Dies ist gut, wenn Sie mod_vhost_alias
    für virtuelles Hosting verwenden

INSTALLIEREN
1. Laden Sie die neueste libcap von hier herunter und installieren Sie sie
2. Führen Sie /apachedir/bin/apxs -a -i -l cap -c mod_ruid2.c aus
3. Konfigurieren Sie httpd.conf
4. Apache neu starten

KONFIGURATIONSOPTIONEN:RMode config|stat (Standard ist config) RUidGid
user|#uid group|#gid – wenn RMode config ist, auf diese uid und gid setzen

RMinUidGid user|#uid group|#gid – wenn uid/gid auf Standard-uid/gid gesetzt ist RDefaultUidGid user|#uid group|#gid

RGroups group1 group2 – zusätzliche Gruppen, die über setgroups gesetzt wurden @none –
alle zuvor definierten Gruppen löschen.

RDocumentChrRoot – Setzt das Chroot-Verzeichnis und das Dokumenten-Stammverzeichnis darin

BEISPIEL:

<VirtualHost example.com>    
ServerAdmin [email protected]    
RDocumentChRoot /home /example.com/public_html    
ServerName     example.com    
ServerAlias    www.example.com    
RMode          config     # unnecessary since config is the default    
RUidGid        user1 group1    
RGroups        apachetmp

<Directory /home/example.com/public_html/dir>
   RMode stat    </Directory>

<Directory /home/example.com/public_html/dir/test>
   RMode config
   RUidGid user2 group2
   RGroups groups1    </Directory>

<Directory /home/example.com/public_html/dir/test/123>
   RUidGid user3 group3    </Directory>

<Location /yustadir>
   RMode config
   RUidGid user4 user4
   RGroups groups4    </Location>


Linux
  1. Überwachung des Linux-Dateizugriffs?

  2. „cat“:Datei kann nicht geöffnet werden:Berechtigung verweigert?

  3. Gewähren Sie sudo Zugriff in Debian und dem Ubuntu-Betriebssystem

  4. Gewähren Sie sudo-Zugriff in RHEL und CentOS

  5. So optimieren Sie das Cachen statischer Apache-Dateien unter Ubuntu 18.04

[Gelöst] Zugriff auf Speicherdatei nicht möglich, Berechtigung verweigert Fehler in KVM Libvirt

[CentOS 7 Apache]:Berechtigung verweigert:Dateiberechtigungen verweigern den Serverzugriff

Warum kann ein normaler Benutzer eine Datei nicht „chown“?

Benutzer Sudo-Zugriff gewähren (Zur Sudoers-Datei oder Wheel-Gruppe hinzufügen)

gleichzeitiger zugriff auf datei linux

Konvertieren Sie die Datei mit LibreOffice unter dem Benutzer Apache (z. B. bei Verwendung von PHP) in PDF