Wie kann ich die Berechtigungen von Dateien und Verzeichnissen rekursiv ändern?

65

Ich habe Ubuntu auf meinem lokalen Computer mit Apache / PHP / MySQL installiert.

Ich habe jetzt ein Verzeichnis unter / var / www - in dem ich mehrere meiner laufenden Projekte habe. Ich arbeite auch mit Open Source (Drupal, Magento, Sugarcrm).

Das Problem, dem ich gegenüberstehe, ändert Dateiberechtigung mit Terminal. Manchmal muss ich die Berechtigung des gesamten Ordners und der nachfolgenden Unterordner und Dateien ändern. Ich muss individuell mit wechseln

sudo chmod 777 foldername

Wie kann ich das rekursiv machen?

Auch warum muss ich es immer tun 777 , ich habe versucht 755 für Ordner und 644 für Dateien, aber das wird nicht funktionieren.

Nikhil
quelle

Antworten:

90

Fügen Sie einfach die -ROption hinzu, um die Berechtigungen von Dateien rekursiv zu ändern. Beispiel: Fügen Sie rekursiv Lese- und Schreibberechtigungen für den Eigentümer und die Gruppe hinzu für foldername:

chmod -R ug+rw foldername

Berechtigungen werden wie 664 oder 775 sein.

Das Festlegen der Berechtigungen auf 777 wird dringend empfohlen . Sie erhalten entweder in Apache oder in Ihrem Editor Fehler in Bezug auf Berechtigungen, da Apache unter einem anderen Benutzer ( www-data) ausgeführt wird als Sie.

Wenn Sie schreiben möchten /var/www, fügen Sie sich der www-dataGruppe hinzu, und legen Sie die umask + -Berechtigungen entsprechend fest.

  • Füge dich der www-dataGruppe hinzu:sudo adduser $USER www-data
  • Ändern Sie den Besitz der Dateien in /var/www:sudo chown -R www-data:www-data /var/www
  • Ändern Sie die umask, damit neu erstellte Dateien von Apache auch Schreibberechtigungen für die Gruppe erhalten. Hinzufügen umask 007zu /etc/apache2/envvars.
  • Gönnen Sie sich (technisch, die Gruppe www-data) Schreibrechte: sudo chmod -R g+w /var/www.
Lekensteyn
quelle
Ja, ich habe das r Flag an der falschen Stelle hinzugefügt. Ich habe es nach dem o + w für chmod hinzugefügt.
JohnMerlino
Wenn Sie versuchen, chmod -r blablabla(small -r anstelle von -R) zu verwenden, werden Sie möglicherweise die Leseberechtigungen für alle entfernen ...
Cyril Duchon-Doris
1
Nach diesen Anweisungen sollten Sie sicherstellen, dass keine .htaccessDateien mit Schreibrechten für Apache vorhanden sind. find /var/www/ | grep .htaccess | xargs ls -l.
Reynoldsnlp
23

rohe Gewalt:

sudo find foldername -exec chmod a+rwx {} ";"

Was funktioniert nicht? Sei genauer!

sudo find foldername -type d -exec chmod 755 {} ";"
sudo find foldername -type f -exec chmod 644 {} ";"
Benutzer unbekannt
quelle
Wenn Sie sich im Ordner befinden, entfernen Sie "Ordnername"
Enrique
4
... und ersetze es durch.
DJJECK
4

Sie sollten 777 für nichts brauchen. Im schlimmsten Fall müssen Sie den Eigentümer bestimmter Dateien und Verzeichnisse in den Benutzer "www-data" ändern.

sudo find /var/www -type d -print0 | xargs -0 chmod 755
sudo find /var/www -type f -print0 | xargs -0 chmod 644
sudo find /var/www/some/subset -print0 | xargs -0 chown www-data:www-data

Wenn Sie die Gruppenmitgliedschaftsmethode von Lekensteyn verwenden, ändern Sie oben 755 zu 775 bzw. 644 zu 664, und erzwingen Sie dann die Klebrigkeit der Gruppe:

sudo find /var/www/some/subset -type d -print0 | xargs -0 chmod g+s
Kees Cook
quelle
3

Sie können die Unterordner und Dateien in Nautilus ändern. Wie Sie auf dem Bild unten sehen können. Um die Berechtigungen für Schaltflächen zu erhalten, können Sie die Option in Ubuntu Tweak aktivieren.

Bildbeschreibung hier eingeben

Alfredo Hernández
quelle
Verwenden Sie LANG=C [command]diese Option , um englische Übersetzungen zu erhalten.
Lekensteyn
1

Wenn Sie möchten, dass alle Ihre Dateien für die ganze Welt lesbar sind (dh es handelt sich nur um eine statische Menge von HTML-Dateien / Bildern), verwenden Sie diesen Befehl:

chmod -R a+r <base directory>

Dadurch werden alle Dateien und Unterverzeichnisse rekursiv durchsucht und Leseberechtigungen hinzugefügt.

WARNUNG : Tun Sie dies nicht für Dateien, die ausführbar sind! Nur Dateien, die für alle sichtbar sein sollten.

Ryan Shillington
quelle
Sagst du "mach chmod -R a+xnichts" oder "mach nichts chmod -R a+rmit ausführbaren Dateien"?
Aleclarson
Ich habe es repariert. Letzteres ist wahr. Seien Sie vorsichtig, wenn Sie anderen Zugriff auf von Ihnen erstellte ausführbare Dateien gewähren.
Ryan Shillington