Wie kann ich allen Benutzern in Linux Schreibzugriff auf einen Ordner gewähren?

534824
Carson Myers

Ich habe gerade Apache2 auf Ubuntu installiert und festgestellt, dass der Ordner / var / www geschützt ist. Ich kann einfach sudoalles, aber ich würde ihm lieber nur Schreibzugriff geben.

Wie kann ich das machen?

Ich habe es versucht, sudo chmod 7777 /var/wwwaber es hat nicht funktioniert.

171
Ist dies ein öffentlich zugänglicher Server oder hat er keine direkte Verbindung zum Internet? Wenn ersteres wichtig ist, sollten Sie Sicherheitsentscheidungen in Betracht ziehen - Server im Internet werden ständig angegriffen (schauen Sie in Ihre / var / log / -Nachrichten oder ähnliches). kwutchak vor 15 Jahren 0
Dies ist nur mein Laptop, es ist nicht über das Internet erreichbar. Carson Myers vor 15 Jahren 0

8 Antworten auf die Frage

297
jtimberman

Um mit mehreren Benutzern, die schreiben /var/wwwkönnen sollten, am besten gemeinsam zu arbeiten, sollte dieser eine gemeinsame Gruppe zugewiesen werden. Die Standardgruppe für Webinhalte auf Ubuntu und Debian ist beispielsweise www-data. Stellen Sie sicher, dass sich alle Benutzer, für die Schreibzugriff erforderlich ist, /var/wwwin dieser Gruppe befinden.

sudo usermod -a -G www-data <some_user> 

Stellen Sie dann die richtigen Berechtigungen für / var / www ein.

sudo chgrp -R www-data /var/www sudo chmod -R g+w /var/www 

Darüber hinaus sollten Sie das Verzeichnis und alle darunter liegenden Verzeichnisse als "Set GID" festlegen, damit alle neuen Dateien und Verzeichnisse, die unter erstellt /var/wwwwerden, der www-dataGruppe gehören.

sudo find /var/www -type d -exec chmod 2775 {} \; 

Finden Sie alle Dateien in /var/wwwund fügen Sie Lese- und Schreibberechtigung für Besitzer und Gruppe hinzu:

sudo find /var/www -type f -exec chmod ug+rw {} \; 

Sie müssen sich möglicherweise abmelden und erneut anmelden, um Änderungen vornehmen zu können, wenn Sie die Berechtigung für Ihr eigenes Konto bearbeiten.

Das ist ziemlich langweilig ... Ich kann den Benutzern nicht einfach Zugriff darauf gewähren, als wäre es ein anderer Ordner? Carson Myers vor 15 Jahren 2
So geben Sie den Zugriff darauf. Es ist schneller, die Befehle zu kopieren und einzufügen, als zu versuchen, durch die Dialogfelder eines GUI-Dateimanagers zu navigieren, um dasselbe zu tun. Langfristig hilft es Ihnen, wenn Sie zumindest die Handbuchseiten für chmod und chgrp lesen ("man chmod"). jtimberman vor 15 Jahren 9
Vielleicht habe ich die Befehle beim ersten Lesen nicht verstanden, und Ihre Bearbeitung macht es viel klarer. Carson Myers vor 15 Jahren 0
+1 für Guid, um Apache-Berechtigungen zu erzwingen. funktioniert gut mit umask von 027. Wenn etwas Schreibzugriff benötigt, ist es so einfach wie chmod g + w dir / LiraNuna vor 15 Jahren 1
Ich wollte einfach nur mitspielen und sagen, dass dies ein großartiger Rat ist, der sehr kurz und einfach zu befolgen ist und alles erklärt, was Sie wissen müssen. Gut gesagt. Upvoted und Sterne für zukünftige Verwendung. :) Michael B vor 12 Jahren 0
@jtimberman Die letzten 2 cmds scheinen nur einmal zu laufen. Wie kann man es im Chefkoch idempotent machen? Eigentlich benutze ich diese Schritte im Koch! Autodidact vor 12 Jahren 0
Hat mir mehr als alles andere geholfen, was ich finden konnte. Vielen Dank. Brad F Jacobs vor 11 Jahren 0
Sie können hinzufügen, dass Änderungen wirksam werden, wenn Sie Benutzergruppenzuweisungen neu laden. Vielleicht wäre ein Neustart des Systems besser, wenn dies für Sie bequem ist JorgeArtware vor 10 Jahren 0
Warum lautet der Gruppenberechtigungsbefehl `sudo chmod -R g + w` und nicht` g + rw` oder `g + rwX`? detly vor 10 Jahren 1
+1 zum Abmelden und erneutes Anmelden; Es hat funktioniert, kurz nachdem ich das getan habe. Vielen Dank Filip Luchianenco vor 7 Jahren 0
26
Krishna Modi

Es gibt einen einfacheren Weg, dies zu tun. Versuchen Sie, diesen Befehl auszuführen.

sudo chmod -R 757 /var/www 

Im Wesentlichen werden durch den chmodBefehl Berechtigungen geändert, und die -ROption wirkt sich auf alle Benutzer aus. Dann erteilen Sie einfach die richtigen Berechtigungen für die Verwendung.

Könnten Sie einen Einblick geben, was der Befehl für das OP bewirkt? n0pe vor 13 Jahren 3
-1 aus Mangel an Erklärung. Außerdem ist "chmod $ permissions -R $ file" nicht gültig ... Blacklight Shining vor 11 Jahren 10
Es ist Optionen dann Berechtigungen nicht umgekehrt Moataz Elmasry vor 10 Jahren 1
`sudo chmod -R 757 / var / www` Bwyss vor 8 Jahren 2
Bitte erfahrene Person schlägt eine Bearbeitung mit kurzer Erklärung dazu vor. Adi Prasetyo vor 6 Jahren 0
Seien Sie vorsichtig: Dies gewährt wirklich allen * Benutzern * im System Zugriff, was gefährlich sein kann. (Ich weiß, das wurde gefragt, aber die meiste Zeit ist es nicht das, was Sie wirklich wollen.) Marian vor 6 Jahren 0
23
paivaric

Read+Write:

sudo chmod -R a+rw /var/www 

Read+Write+Execute:

sudo chmod -R a+rwx /var/www 
7
Nikhil Chelliah

Sie können auch replizieren, was jtimberman vorgeschlagen hat, indem Sie Zugriffssteuerungslisten verwenden . Der Befehl setfacl akzeptiert -s, um eine vorhandene ACL zu ersetzen, oder -m, um sie zu ändern. -R um Verzeichnis-ACLs rekursiv zu machen; und -d, um die angegebenen Einstellungen als Standard festzulegen. Dies ist nützlich, wenn Sie bevorstehende Benutzerkonten erwarten.

Hier werden nur die Berechtigungen festgelegt, die Sie mit chmod für den Benutzer, die Gruppe, die andere und die Maske festlegen würden:

setfacl -m u::rwx, g::r-x, o::---, m:rwx DIRECTORY 

Und so könnten Sie dies für einen bestimmten Benutzer oder seine Gruppe tun:

setfacl -m u:USERNAME:rwx, g:USERNAME:r-x DIRECTORY 

Die Stärke ist natürlich, dass Sie einen bestimmten Benutzer, mehrere Benutzer usw. festlegen können, ohne dass Sie Ihre Gruppeneinstellungen ändern müssen. Und im Gegensatz zu chmod: Wenn Sie möchten, dass einige Groupies Zugriff auf ein Verzeichnis haben und andere Groupies nur auf ein anderes zugreifen können, ist dies mit setfacl tatsächlich möglich. Führen Sie schließlich getfacl aus, um die ACLs eines Verzeichnisses anzuzeigen :

getfacl DIRECTORY 

Sie können -R angeben, um die ACLs für Unterverzeichnisse anzuzeigen, oder -d, um die Standardwerte anzuzeigen.

Das ist die beste Antwort! Ich wünschte, ich könnte mehr als einmal abstimmen. Tim Duncklee vor 7 Jahren 0
2
user1138

Die schnelle und einfache Antwort -

ein. Fügen Sie ( -a ) Ihren Benutzer ( Benutzername ) zu der Gruppe ( -G ) WW-Daten hinzu .

sudo usermod -a -G www-data user_name 

b. Erteilen Sie der Gruppe ( g ) die gleichen Berechtigungen ( = ) wie der Besitzer ( u ) von / var / www rekursiv ( -R ).

sudo chmod -R g=u /var/www 

Erläuterung: Apache 2 unter Debian / Ubuntu legt den Benutzer und die Gruppe www-data als Besitzer von / var / www fest . Die Standardberechtigungen für den Benutzer sind "Inhalte anzeigen und ändern", die Gruppe kann jedoch nur "Inhalte anzeigen". Wenn Sie sich selbst zur Gruppe www-data hinzufügen und ihm dieselben Berechtigungen wie für den Benutzer wwww-data erteilen, können Sie schnell und einfach in die Entwicklung gehen. Ich mache dies für alle meine localhost (PC / Laptop) Webentwicklungsumgebungen.

1
Arda

Ich benutze normalerweise

chmod g+w /folder/ -R 

Es ist fast selbsterklärend.

Es fügt alle gMitglieder der Gruppe hinzu /folder/, um wZugriff auf Riten ( +w) zu haben, und -Rsind für die Rekursion von Unterordnern bestimmt.

-3
stalepretzel

Kannst du es einfach versuchen chmod 0777 /var/www?

Eine Warnung: Wenn Sie jedem Zugriff auf diesen Ordner gewähren, können die Hacker auf diesen Ordner zugreifen, wenn Sie Zugriff auf Ihr System erhalten. Deshalb ist es besser, eine Gruppe zulässiger Benutzer anzulegen und dieser Gruppe Schreibzugriff zu gewähren.

Warum also dieses Angebot als Lösung anbieten und sofort diskreditieren? -1 Abstimmung Tisch vor 8 Jahren 0
-4
marimuthu

Zuerst geben Sie den jeweiligen Ordnerpfad ein, dann verwenden Sie diesen Befehl…

chmod -R 777 foldername chown username:username foldername  
Wow, das ist schlimm! Sie geben keine 777 mit -R - vor allem, wenn der Fragesteller ein Neuling ist und die Risiken nicht versteht. recluze vor 12 Jahren 7
Richtig genug @recluze. vgoff vor 12 Jahren 0