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

10

Ich habe den Besitz meiner localhost-Datei für /var/www/und ihrer Unterordner 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 für immer die Berechtigung erteilen, damit er beim Hinzufügen eines neuen Ordners oder einer neuen Datei dieselbe Berechtigung erhält?

Kamal
quelle
4
BITTE lesen Sie diese Gründe, warum / var / www NICHT chmod 777
Marco Ceppi
Der 777 ist eine schlechte Idee . Die Verwendung von ACL könnte jedoch sehr gut passen. Lesen Sie diese Lösung bitte in ACL , um festzustellen , ob sie für Sie gut funktioniert.
1
Um alle Verzeichnisse find . -type d -exec chmod 777 {} +zu ändern, können Sie alle Verzeichnisse in 777 ändern. Denken Sie daran, dass Sie als Root angemeldet sein müssen, um bessere Ergebnisse zu erzielen, und dass Sie sich im Ordner befinden.
Redy S

Antworten:

1

Berechtigungen für neu erstellte Dateien werden von umask festgelegt

Vojtech Trefny
quelle
Kannst du den Befehl schreiben, um / var / www / writable zu machen und ihm die Erlaubnis zu geben, dass ich die gleiche Erlaubnis (777) für die Site erhalte, die ich kürzlich hinzugefügt habe?
Kamal
1
Es ist nicht gut, Ihrem Webserver die 777-Berechtigung zu erteilen.
saji89
Könnten Sie bitte weitere Details hinzufügen.
saji89
@ Vojtech Trefny. Der Link funktioniert momentan nicht. Es heißt 404 Not Found.
all4naija
12

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

BZ1
quelle
Du brauchst mehr Upvotes!
Sheharyar
10

Wie andere bereits erwähnt haben , /var/wwwist es eine wirklich schlechte Idee, 777 Berechtigungen zu erteilen, insbesondere in der Produktion.

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

  • Erstellen Sie eine neue Gruppe

  • Fügen Sie die Benutzer, die die Daten ändern müssen, /var/wwwzu dieser Gruppe hinzu

  • Ändern Sie rekursiv das Eigentum /var/wwwan dieser Gruppe

  • Aktivieren Sie diese umaskOption, /var/wwwdamit alle neu erstellten Dateien der von uns erstellten Gruppe gehören.

Eine andere Möglichkeit wäre, erneut ACL zu verwenden, um Schreibberechtigungen nur Benutzern zu erteilen, die sie benötigen.

Hier finden Sie detaillierte Anweisungen zum Serverfehler .

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

Sergey
quelle
2

Sie sollten /etc/apache/envvarsals 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 hinzu umask XXX.

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

Speichern.

Starten Sie Apache neu.

Beispiel: sudo apache2ctl restart

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

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

RobotHumans
quelle
0

Eine "out of the box" -Lösung besteht auch 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, was eine schlechte Idee sein kann (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.

przemo_li
quelle
0

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

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

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

Dawid
quelle