it-swarm.com.de

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

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.

64
Nikhil

Fügen Sie einfach die Option -R 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 in foldername hinzu:

chmod -R ug+rw foldername

Berechtigungen werden wie 664 oder 775 sein.

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

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

  • Füge dich der www-data Gruppe 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. Fügen Sie umask 007 zu /etc/Apache2/envvars hinzu.
  • Gewähren Sie sich (technisch gesehen die Gruppe www-data) Schreibrechte: Sudo chmod -R g+w /var/www.
88
Lekensteyn

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 {} ";"
23
user unknown

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
4
Kees Cook

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.

enter image description here

3

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.

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

1