6 Stimmen

Gibt es einen Shell-Befehl, mit dem man Verzeichnissen und Dateien rekursiv Rechte erteilen kann?

Kann mir jemand einen rekursiven Befehl geben, der ein Verzeichnis durchläuft und allen normalen Dateien die Berechtigung 644 und allen Unterverzeichnissen die Berechtigung 755 gibt?

Ich bin es wirklich leid, dies jedes Mal manuell zu tun, wenn ich etwas auf meinem Rechner installieren muss. Ich kenne nicht genug BASH (Shell?) Befehle, um dies zu tun.

15voto

ypnos Punkte 47895

Dafür gibt es die Option X.

chmod a+X * -R

Dadurch wird das Ausführungsbit nur für Verzeichnisse, nicht für Dateien vergeben. Um 644 bzw. 755 mit einem Befehl zu setzen, verwenden Sie:

chmod a=rX,u+w <files/dirs> -R

12voto

Kaarel Punkte 10334

Die erste Zeile ändert die Dateiberechtigungen, die zweite die Verzeichnisberechtigungen im aktiven Verzeichnis und seinen Unterverzeichnissen.

find . -type f -print0 | xargs -0 chmod 644
find . -type d -print0 | xargs -0 chmod 755

3voto

sth Punkte 210180

Verwendung von symbolischen Modusnamen anstelle von rohen numerischen Berechtigungen:

chmod -R u=rwX,go=rX somedir

El X Erlaubnisflag nur Verzeichnisse oder bereits ausführbare Dateien als ausführbar ein, die -R bedeutet "rekursiv" und wendet die Berechtigungen auf den gesamten Inhalt der Datei somedir .

2voto

Jörg W Mittag Punkte 349574

Nein, es gibt keinen Befehl zum rekursiven Ändern der Berechtigungen. Wenn es einen solchen Befehl gäbe, würde er gegen das Unix-Mantra verstoßen: Tue eine Sache und tue sie gut.

Es gibt jedoch dos Befehle: einen für die Rekursion ( find ), und eine für die Änderung von Berechtigungen ( chmod ).

Die magische Befehlszeile lautet also:

find . -type d -exec chmod 0755 '{}' + -or -type f -exec chmod 0644 '{}' +

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X