Wie kann ich alle Unterordner von / var / www chmod 777?

54

Ich betreibe einen Webserver und einen FTP-Server, an den /var/wwwgebunden ist /home/user/www.

Ich habe beide Verzeichnisse auf gesetzt chmod 777(was in Ordnung ist, da es nur zum Testen dient).

Ich kann Dateien in hochladen /home/user/www, aber wenn ich ein neues Verzeichnis erstelle, muss ich immer in chmod 777diesem Ordner ausführen .

Andernfalls wird beim Durchsuchen die Fehlermeldung angezeigt

Sie haben keine Berechtigung, auf diesen Server zuzugreifen / zu testen /.

Gibt es eine Möglichkeit, alle darin enthaltenen Unterordner /var/wwwfür jedermann zugänglich zu machen? Oder könnten ihre Berechtigungen automatisch auf gesetzt werden 777? Es ist ärgerlich, dass ich chmod 777jedes Mal tippen muss.

user1645034
quelle
12
Lassen Sie dies einfach hier. BITTE BEACHTEN SIE, DASS SIE 777 NICHT AUF EINEM WEBSERVER VERWENDEN . Eine bessere Frage ist: "Wie kann ich meinen Webserver zum Laufen bringen, ohne 777-Berechtigungen zu verwenden?"
Marco Ceppi
12
Entschuldigung, das ist eine schlechte Übung und ich weigere mich, darauf zu antworten :) Ich hoffe, jeder stimmt zu :)
Rinzwind

Antworten:

89

Dies ist eine schlechte Übung, aber Sie verwenden sie hoffentlich nur für die Entwicklung, oder Sie haben einen anderen guten Grund. Sie können die Berechtigungen angeben, wenn Sie ein Verzeichnis mit der folgenden -mOption erstellen :

mkdir -m 777 dirname

Oder Sie können die Berechtigungen rekursiv festlegen.

sudo chmod -R 777 /var/www

Überlegen Sie sich vor der Verwendung einer dieser beiden Optionen, ob Sie möchten, dass auf Ihr Dateisystem so zugegriffen werden kann.


Edit: Wie von Rinzwind erwähnt, ist hier eine bessere Möglichkeit, das zu erreichen, was Sie wollen.

Überprüfen Sie, welcher Gruppe Ihr /var/wwwVerzeichnis gehört, und fügen Sie dieser Gruppe Ihren Benutzer hinzu.

sudo adduser yourusername group

Die Gruppe ist wahrscheinlich www-data.

Anschließend können Sie Ihre Berechtigungen auf 775 festlegen.

Dan
quelle
4
Das tut , was Sie gefragt haben , aber bitte zuerst diesen Text lesen Warum sollte / var / www nicht chmod 777 haben . Es ist wirklich nicht empfehlenswert zu üben.
Warren Hill
8
Bitte helfen Sie Menschen nicht mit einer Methode, die schlechte Praxis ist. Ich würde es vorziehen, wenn Sie erklärt, wie es geht: durch Hinzufügen seines Benutzers zu einer Gruppe von WWW-Daten oder Apache;)
Rinzwind
4
Bildung steht an erster Stelle. Menschen zu helfen, ihre Maschine zu vermasseln, ist nicht die Art von Linux. Also stimme ich dir überhaupt nicht zu.
Rinzwind
2
Der Fragesteller sagte, dies sei nur zu Testzwecken. Ich kann definitiv verstehen, dass Ihre Entwicklungsseite leicht zugänglich sein soll, damit Sie schneller arbeiten können. Ich werde ihm den Vorteil geben, dass er nicht dumm genug ist, dies mit einem Produktionsserver zu tun.
Dan
1
@ dan08 Es gibt bessere Möglichkeiten zum Testen, einschließlich der Verwendung Ihres Home-Verzeichnisses. Siehe askubuntu.com/questions/46331/… und kimbriggs.com/computers/computer-notes/linux-notes/… . Es gibt sichere Wege, um diese Ziele zu erreichen;)
Panther
7

Dateien und Verzeichnisse in Unix können drei Arten von Berechtigungen haben: read ( r), write ( w) und execute ( x). Jede Berechtigung kann onoder offfür jede der drei Kategorien von Nutzern: die Datei oder das Verzeichnis Eigentümer; andere Personen in der gleichen Gruppe wie der Eigentümer; und alle anderen. Verwenden Sie den Befehl chmod, um den Modus einer Datei zu ändern. Die allgemeine Form ist chmod X @ Y file1 file2 ...

chmod a-w file (removes all writing permissions)
chmod o+x file (sets execute permissions for other (public permissions))
chmod u=rx file        (Give the owner rx permissions, not w)
chmod go-rwx file      (Deny rwx permission for group, others)
chmod g+w file         (Give write permission to the group)
chmod a+x file1 file2  (Give execute permission to everybody)
chmod g+rx,o+x file    (OK to combine like this with a comma)

u = user that owns the file
g = group that owns the file
o = other (everyone else)
a = all (everybody)

r = read aces to the file
w = write access
x = execute (run) access 
Lokesh Kumar Bandi
quelle
4
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;

Für den FTP-Server, der alle Dateien mit unterschiedlichen Berechtigungen erstellt, möchten Sie möglicherweise nach der Umask von FTPD suchen, wie dieser Daemon gestartet wird

Besuchen Sie diese Website unter https://linuxaria.com/article/linux-shell-understanding-umask-with-example

Jose Pla
quelle
1
+1 für dies ist die einzige Antwort, die nur Ordner und keine Dateien
aktualisiert
3

Mitteilung des öffentlichen Dienstes:


Verwenden Sie niemals chmod 777, um Probleme zu beheben


  • Es ist ein großes Sicherheitsrisiko, wenn Sie Dienste ausführen, die der Öffentlichkeit zur Verfügung stehen, insbesondere Webanwendungen (z. B. PHP).

    Das Sicherheitsmodell des Betriebssystems geht davon aus, dass viele Dienste (z. B. Ihr Webserver) mit eingeschränkten Berechtigungen ausgeführt werden, um zu verhindern, dass sie Dateien ändern können. Das Festlegen von 777 für Dateien unterbricht dieses Design.

    Ein entfernter Benutzer kann in Dateien schreiben oder diese hochladen und dann den Server (oder einen anderen Prozess auf Ihrem System) dazu verleiten, diese zu lesen oder auszuführen. Skripte oder Software weisen möglicherweise Fehler auf, die dies ermöglichen. Es ist sehr schwierig, jeden einzelnen Weg zu sperren, der passieren kann, wenn es Verzeichnisse gibt, die von der Welt beschreibbar sind.

  • Wird es in bestimmten Systemverzeichnissen (/ usr, / etc, / var usw.) verwendet, kann es Ihr System auf überraschende Weise beschädigen.

    Einige wichtige Systemdateien benötigen spezielle Berechtigungen, beispielsweise setuid / setgid, um ausgeführt zu werden. Zum Beispiel sudo. Ändern Sie keine Dateiberechtigungen für Verzeichnisse und Dateien, die vom System selbst eingerichtet wurden.

  • Es gibt keine Möglichkeit, dies rückgängig zu machen und alle alten Berechtigungen wiederherzustellen.

    Wenn Sie zuvor Dateien und Ordner mit verschiedenen Berechtigungen hatten, können Sie nicht mehr zu diesen bestimmten Berechtigungen zurückkehren, sondern nur alle auf dasselbe ändern. Dadurch gehen möglicherweise bestimmte Berechtigungseinstellungen verloren, die für bestimmte Dateien erforderlich waren.

  • Es gibt immer einen angemesseneren Weg, um das zu erreichen, was Sie erreichen möchten.

In diesem Fall möchten Sie nur, dass Ihr Webserver ein Verzeichnis lesen kann . Die Erlaubnis, die von der Welt geschrieben werden kann, ist weit mehr, als Sie tun müssen.

Finden Sie heraus, warum der Webserver dieses Verzeichnis nicht lesen kann (Hinweis: Wahrscheinlich liegt es daran, dass Ihr Home-Verzeichnis nicht von der Welt gelesen werden kann. Weltweit lesbar ist viel sicherer als von der Welt beschreibbar - legen Sie Ihr Home-Verzeichnis auf 755 oder fest Verschieben Sie das WWW-Verzeichnis außerhalb Ihres Hauses in einen Ordner wie / var / www oder / srv.

thomasrutter
quelle
0

Das geht bei mir nicht.

sudo chmod -f 777 /path/to/your/file/or/directory

Muss ich auch benutzen -f.

sudo chmod -R -f 777 /path/to/your/file/or/directory
Janaka Pushpakumara
quelle
0

Wenn Sie Berechtigungen und / oder Eigentumsrechte aus einer anderen Datei kopieren möchten, mit der Sie zufrieden sind, können Sie dies mit sudo chmod --reference = path / to / file / to / Referenzpfad / to / file / you / want / tun. zu / change / permissino / to

Dasselbe können Sie auch für den Dateibesitz tun.

Amir Khalil
quelle