Was sind die richtigen Berechtigungen für einen Ordner hochladen mit PHP/Apache?

StackOverflow https://stackoverflow.com/questions/10990

  •  08-06-2019
  •  | 
  •  

Frage

Sorry für die Frage - bin ich ein .NET-Entwickler und habe nicht viel Erfahrung mit LAMP-setups.

Ich habe eine PHP-Website, die erlauben, dass uploads auf einen bestimmten Ordner.Habe ich gesagt, dass dieser Ordner muss im Besitz der webserver-Benutzer für den upload-Prozess zu arbeiten, so habe ich den Ordner, und legen Sie dann die Berechtigungen wie folgt:

chown apache:apache -R uploads/
chmod 755 -R uploads/

Das einzige problem ist jetzt, dass der FTP-Benutzer kann Sie nicht ändern Sie die hochgeladenen Dateien an.

Gibt es eine Berechtigung, die Einstellung, dass wird mir erlauben, noch Dateien hochladen, und dann ändern Sie später mit einem anderen Benutzernamen als dem webserver-Benutzer?

War es hilfreich?

Lösung

Sie können eine neue Gruppe erstellen, der sowohl den apache-Benutzer und FTP-Benutzer als Mitglieder und dann die Berechtigung für den upload-Ordner 775.Dies sollte sowohl den apache und FTP-Benutzer die Fähigkeit zu schreiben, um die Dateien in den Ordner aber behalten Sie alle anderen geändert werden.

Andere Tipps

Ich gehe mit Ryan ' s Antwort, wenn Sie wirklich wollen, dies zu tun.

Im Allgemeinen auf einer *nix-Umgebung, die Sie immer wollen, zu irren auf Weg geben, so wenig Berechtigungen wie möglich.

9 mal von 10, 755 ist die ideale Erlaubnis für diese - als der einzige Benutzer mit die Fähigkeit zu ändern, werden die Dateien des Webservers.Ändern Sie dieses 775 mit Ihrem ftp-Benutzer in eine Gruppe, wenn Sie WIRKLICH brauchen, um dies zu ändern.

Da du dich mit php durch Ihre eigene Aufnahme, hier ist ein hilfreicher link für die Verbesserung der Sicherheit Ihres upload-service:move_uploaded_file

Oder zumindest 766.

  • Lesen = 4
  • schreiben Sie = 2
  • execute = 1

7 = read + write + execute

6 = Lesen + schreiben

  • erste Zahl:Besitzer
  • zweite Reihe:Gruppe
  • Dritte Reihe:andere Benutzer

Ich will hinzufügen, dass, wenn Sie mit SELinux, die Sie benötigen, zu machen sicher die Typ Rahmen ist tmp_t können Sie dies mithilfe der chcon-Dienstprogramm

chcon -t tmp_t uploads

Was wichtig ist, ist, dass die apache Benutzer und Gruppe sollte mindestens haben read Zugang und in einigen Fällen execute Zugriff.Für den rest, den Sie geben können 0 Zugriff.

Dies ist die sicherste Einstellung.

Ich unterstütze die Idee, einen ftp-Gruppe, die die Rechte zum hochladen.Aber ich glaube nicht, dass es notwendig ist, zu geben, 775 Erlaubnis.7 steht für Lesen, schreiben, ausführen.Normalerweise will man, um nur bestimmten Gruppen zu Lesen und zu schreiben, sondern, je nach Fall, führen Sie eventuell nicht erforderlich.

Denken Sie auch daran CHOWN oder chgrp Ihre website-Ordner.Versuchen Sie es myusername# chown -R myusername:_www uploads

Basierend auf der Antwort von @Ryan Ahearn, nach ist das, was ich Tat, auf Ubuntu 16.04 einen Benutzer erstellen front das hat nur die Erlaubnis für nginx web-dir /var/www/html.

Schritte:

* pre-steps:
    * basic prepare of server,
    * create user 'dev'
        which will be the owner of "/var/www/html",
    * 
    * install nginx,
    * 
* 
* create user 'front'
    sudo useradd -d /home/front -s /bin/bash front
    sudo passwd front

    # create home folder, if not exists yet,
    sudo mkdir /home/front
    # set owner of new home folder,
    sudo chown -R front:front /home/front

    # switch to user,
    su - front

    # copy .bashrc, if not exists yet,
    cp /etc/skel/.bashrc ~front/
    cp /etc/skel/.profile ~front/

    # enable color,
    vi ~front/.bashrc
    # uncomment the line start with "force_color_prompt",

    # exit user
    exit
* 
* add to group 'dev',
    sudo usermod -a -G dev front
* change owner of web dir,
    sudo chown -R dev:dev /var/www
* change permission of web dir,
    chmod 775 $(find /var/www/html -type d)
    chmod 664 $(find /var/www/html -type f)
* 
* re-login as 'front'
    to make group take effect,
* 
* test
* 
* ok
* 

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top