Wie kann man einem Ordner und seinen Unterordnern und Dateien Schreibrechte erteilen?

8

Ich habe den Besitz meiner localhost-Datei in /var/www/ und seinen Unterordnern geändert und ihm die Berechtigung 777 gegeben. Wenn ich jedoch einen neuen Ordner darin hinzufüge, erhält der neue Ordner diese Berechtigung nicht automatisch. Wie kann ich einem Ordner 777 die Erlaubnis für immer geben, so dass, wenn ich einen neuen Ordner oder eine neue Datei hinzufüge, es die gleiche Erlaubnis erhält?

    
kamal 20.01.2011, 09:42

6 Antworten

1

Berechtigungen für neu erstellte Dateien werden von umask

festgelegt     
Vojtech Trefny 20.01.2011, 09:49
11

Sie können die rekursive Option jederzeit verwenden. sudo chown -R username /var/www

    
BZ1 20.01.2011 10:44
9

Wie andere bereits erwähnt haben , ist die Vergabe von 777 Berechtigungen für /var/www eine wirklich schlechte Idee, besonders in der Produktion.

Eine bessere Lösung wäre, den Benutzern, die die Dateien ändern müssen, Schreibberechtigungen zu geben. Eine Möglichkeit, dies zu tun, ist:

  • Erstellen Sie eine neue Gruppe

  • Fügen Sie die Benutzer hinzu, die die Daten in /var/www für diese Gruppe ändern müssen

  • ändert rekursiv den Besitz von /var/www auf diese Gruppe

  • Legen Sie umask für /var/www fest, damit alle neu erstellten Dateien der von uns erstellten Gruppe gehören.

Eine weitere Option wäre die Verwendung von ACL, um Schreibberechtigungen nur Benutzern zu geben, die sie benötigen.

Hier sind detaillierte Anweisungen zu Serverdefault .

Im Allgemeinen sollten der Webserver oder andere Netzwerkdienste oder Systembenutzerkonten keine Schreibberechtigung für die vom Webserver bereitgestellten Dateien haben, da dies die Möglichkeit der Ausführung willkürlichen Codes eröffnet.

    
Sergey 17.08.2012 07:39
2

Sie sollten /etc/apache/envvars als root mit Ihrem Editor Ihrer Wahl bearbeiten.

Beispiel: ALT + F2
gksudo gedit /etc/apache2/envvars

Gehe zum Ende der Datei und füge eine Zeile umask XXX hinzu.

Dabei ist umask das binäre Gegenteil des gewünschten Berechtigungswerts.
Für 774 wäre das 003. Für 777 schlechte Idee es wäre 000.

Speichern.

Starten Sie den Apache neu.

Beispiel: sudo apache2ctl restart

Dies betrifft nur Dateien / Ordner, die vom Apache-Benutzer neu erstellt wurden.

Zusätzliche Anmerkung, Lesen und Schreiben ist 6 in der Benutzer-, Gruppen- oder Personensteckplatz.

    
RobotHumans 16.08.2012 00:13
0

Auch einige "out of the box" -Lösung besteht darin, Ihren http-Server für die Verwendung eines anderen Ordners zu konfigurieren. Wenn Sie Apache verwenden, bearbeiten Sie einfach die Konfigurationsdateien. Auf diese Weise müssen Sie die Berechtigungen für / var / www nicht ändern, was eine schlechte Idee sein kann (potenzielle Sicherheitsprobleme).

Und umask ist die Antwort für Ihre Frage. Es kann verwendet werden, um Standardberechtigungen für neu erstellte Ordner und Dateien einzuschränken. Und Verteilungsentwickler neigen dazu, es zu verwenden, um den Zugriff auf einige Systemordner einzuschränken.

    
przemo_li 20.01.2011 17:57
0

Ich denke, Sie möchten Schreibzugriff auf /var/www haben, um Dateien und Verzeichnisse zu ändern. Ich denke, die beste Lösung ist die Installation von apache2-mpm-itk und in der Konfigurationsdatei des virtuellen Hosts add /etc/apache2/sites-available/default :

<IfModule mpm_itk_module>
    AssignUserId your-username your-group
</IfModule>

und führen Sie chown your-username\: /var/www -Rv so Apache für diesen virtuellen Host wird mit Ihrer UID / GID ausgeführt und Sie können Dateien bearbeiten. Selbst Dateien, die von PHP erstellt wurden, haben Ihre UID / GID

    
Dawid 16.08.2012 00:56

Tags und Links