it-swarm.com.de

Wie kann ich einem Ordner und seinen Unterordnern und Dateien Lese- und Schreibrechte erteilen?

Ich habe den Besitz meiner localhost-Datei in /var/www/ und ihren Unterordnern geändert und ihr die Berechtigung 777 erteilt. Wenn ich jedoch einen neuen Ordner hinzufüge, erhält der neue Ordner diese Berechtigung nicht automatisch. Wie kann ich einem Ordner 777 eine unbefristete Berechtigung erteilen, damit er beim Hinzufügen eines neuen Ordners oder einer neuen Datei dieselbe Berechtigung erhält?

10
kamal

Berechtigungen für neu erstellte Dateien werden durch mask festgelegt

1
Vojtech Trefny

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

11
BZ1

Wie andere haben bereits erwähnt , 777 Berechtigungen für /var/www zu erteilen, ist eine wirklich schlechte Idee, insbesondere in der Produktion.

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

  • erstelle eine neue Gruppe

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

  • ändern Sie rekursiv den Besitz von /var/www in diese Gruppe

  • setzen Sie umask auf /var/www, damit alle neu erstellten Dateien der von uns erstellten Gruppe gehören.

Eine andere Möglichkeit wäre, ACL erneut zu verwenden, um Schreibberechtigungen nur für Benutzer zu erteilen, die diese benötigen.

Hier sind detaillierte Anweisungen zum Serverfehler .

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

10
Sergey

Sie sollten /etc/Apache/envvars als root mit dem Editor Ihrer Wahl bearbeiten.

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

Gehen Sie zum Ende der Datei und fügen Sie eine Zeile umask XXX hinzu.

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

Sparen.

Starten Sie Apache neu.

Beispiel: Sudo Apache2ctl restart

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

Zusätzliche Notiz, Lesen und Schreiben, ist 6 im Benutzer-, Gruppen- oder beliebigen Steckplatz.

2
RobotHumans

Eine "Out-of-the-Box" -Lösung besteht darin, Ihren http-Server so zu konfigurieren, dass er einen anderen Ordner verwendet. Wenn Sie Apache verwenden, bearbeiten Sie einfach die Konfigurationsdateien. Auf diese Weise müssen Sie die Berechtigungen für/var/www nicht ändern. Dies kann eine schlechte Idee sein (potenzielle Sicherheitsprobleme).

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

0
przemo_li

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

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

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

0
Dawid