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

191

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 es lieber einfach als Schreibzugriff geben.

Wie kann ich das machen?

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

Carson Myers
quelle
Ist dies ein öffentlich zugänglicher Server oder hat er keine direkte Verbindung zum Internet? Bei ersteren ist es wichtig, dass Sie Sicherheitsentscheidungen treffen - Server im Internet werden ständig angegriffen (schauen Sie in Ihr / var / log / messages oder in ein gleichwertiges Verzeichnis).
kwutchak
Dies ist nur mein Laptop, es ist nicht über das Internet zugänglich.
Carson Myers

Antworten:

321

Um die Freigabe für mehrere Benutzer zu ermöglichen, die in der Lage sein sollten, zu schreiben /var/www, sollte eine gemeinsame Gruppe zugewiesen werden. Zum Beispiel ist die Standardgruppe für Webinhalte unter Ubuntu und Debian www-data. Stellen Sie sicher, dass alle Benutzer, für die Schreibzugriff erforderlich ist, zu /var/wwwdieser Gruppe gehören.

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

Außerdem sollten Sie das Verzeichnis und alle darunter liegenden Verzeichnisse auf "GID setzen" setzen, damit alle neuen Dateien und Verzeichnisse, die unter erstellt /var/wwwwerden, Eigentum der www-dataGruppe sind.

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

Finden Sie alle Dateien in /var/wwwund fügen Sie Lese- und Schreibrechte für Eigentümer und Gruppe hinzu:

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

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

jtimberman
quelle
2
Das ist ziemlich langweilig. Ich kann Benutzern nicht einfach Zugriff darauf gewähren, als wäre es ein anderer Ordner.
Carson Myers
9
Das ist , wie Sie Zugang zu geben. Sie können die Befehle schneller kopieren und einfügen, als in den Dialogfeldern 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
Vielleicht habe ich die Befehle nicht verstanden, als ich sie das erste Mal gelesen habe, und Ihre Bearbeitung macht sie viel klarer.
Carson Myers
1
+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
1
Warum lautet Ihr Gruppenberechtigungsbefehl sudo chmod -R g+wund nicht g+rwoder g+rwX?
Detly
31

Es gibt eine einfachere Möglichkeit, diesen Befehl auszuführen.

sudo chmod -R 757 /var/www

Im Wesentlichen chmodändert der Befehl die Berechtigungen, und der -RSchalter wirkt sich auf alle Benutzer aus. Dann gibt es einfach die richtigen Berechtigungen zu verwenden.

Krishna Modi
quelle
3
Können Sie einen Einblick geben, was der Befehl für das OP bewirkt?
Nr.
11
-1 wegen fehlender Erklärung. Außerdem chmod $permissions -R $fileist nicht gültig ...
Blacklight Shining
1
Es ist Optionen dann Berechtigungen nicht umgekehrt
Moataz Elmasry
2
sudo chmod -R 757 /var/www
Bwyss
bitte schlägt jemand erfahrenes eine bearbeitung mit kurzen erklärungen dazu vor.
Adi Prasetyo
29

Lesen + Schreiben:

sudo chmod -R a+rw /var/www

Lesen + Schreiben + Ausführen:

sudo chmod -R a+rwx /var/www
paivaric
quelle
7

Sie können auch die Vorschläge von jtimberman mithilfe von Zugriffssteuerungslisten replizieren . 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 Standardeinstellungen festzulegen. Dies ist hilfreich, wenn Sie mit bevorstehenden Benutzerkonten rechnen.

Diese legen die Berechtigungen einfach so fest, wie Sie es für den Benutzer, die Gruppe, den Anderen und die Maske mit chmod tun würden:

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

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

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

Die Stärke besteht natürlich darin, dass Sie einen bestimmten Benutzer, mehrere Benutzer usw. festlegen können, ohne Ihre Gruppeneinstellungen ändern zu müssen. Und im Gegensatz zu chmod ist es mit setfacl tatsächlich möglich, dass einige Groupies auf ein Verzeichnis und andere Groupies nur auf ein anderes Verzeichnis zugreifen können. 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 Standardeinstellungen anzuzeigen.

Nikhil Chelliah
quelle
2

Die schnelle und einfache Antwort -

ein. Fügen Sie ( -a ) Ihren Benutzer ( user_name ) zur Gruppe ( -G ) www-data hinzu .

sudo usermod -a -G www-data user_name

b. Erteilen Sie der Gruppe ( g ) die gleichen ( = ) Berechtigungen wie dem besitzenden Benutzer ( u ) von / var / www Recursively ( -R ).

sudo chmod -R g=u /var/www

Erläuterung: Apache 2 unter Debian / Ubuntu legt die Benutzer- und Gruppen- WWW-Daten als Eigentümer von / var / www fest . Die Standardberechtigungen für den Benutzer sind "Inhalt anzeigen und ändern". Die Gruppe kann jedoch nur "Inhalt anzeigen". Wenn Sie sich der Gruppe www-data hinzufügen und ihr dieselben Berechtigungen wie dem Benutzer www-data erteilen, können Sie sich schnell und einfach weiterentwickeln. Ich mache das für alle meine localhost (PC / Laptop) Webentwicklungsumgebungen.

user1138
quelle
1

Ich benutze normalerweise

chmod g+w /folder/ -R

Es ist fast selbsterklärend.

Sie fügt hinzu , jeder in der gruppe von /folder/haben wRitus Zugang ( +w), -Rist für die Rekursion für Unterordner.

Arda
quelle
-3

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

Ein Wort der 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. Aus diesem Grund ist es besser, eine Gruppe zulässiger Benutzer zu erstellen und dieser Gruppe Schreibzugriff zu gewähren.

abgestandene Brezel
quelle
Warum sollte man das als Lösung anbieten und es dann sofort diskreditieren? -1 Stimme
Tisch
-3

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

chmod -R 777 foldername
chown username:username foldername 
Marimuthu
quelle
7
Wow, das ist schlimm! Sie geben keine 777 mit einem -R an - besonders wenn die Person, die die Frage stellt, ein Neuling ist und die Risiken nicht versteht.
Erholen Sie sich am
Richtig genug, @recluze.
vgoff