So ändern Sie die Berechtigungen unter Linux

3

Wie kann ich festlegen, dass alle * .java-Dateien im aktuellen Verzeichnis und in allen seinen Unterverzeichnissen Leseberechtigung für alle Benutzer haben?

Ich möchte auch alle Dateien mit einer Größe von mindestens 1 Kilobyte im aktuellen Verzeichnis und alle Unterverzeichnisse so einstellen, dass sie eine Gruppe von Administratoren haben.

user 99572 is fine
quelle
2
Abstimmung zum Wechsel zu Super User, dies ist keine Programmierfrage.
unwind

Antworten:

5

Alternative: Verwenden Sie den folgenden Befehl, um Leseberechtigung für alle .java-Dateien im aktuellen Verzeichnis festzulegen:

chmod -R 444 *.java

Um alle Dateien mit einer Größe von mindestens 1 Kilobyte im aktuellen Verzeichnis und in allen Unterverzeichnissen als Administrator festzulegen.

find /yourdirectorypath -size +1k -exec chgrp admin {} \;

Hinweis: Das "-R" zeigt rekursiv an, was auch Ihre Unterverzeichnisse abdeckt

ricbax
quelle
Ich glaube nicht, dass du willst -R auf der chgrp Befehl seit find macht die Rekursion für Sie.
Dennis Williamson
Dennis - wenn Sie es bemerken, verwendet er nur -R auf dem chmod, nicht auf dem chgrp. Er verwendet find nicht für das chmod, weil es eine eingebaute Rekursion hat.
CarlF
@ CarlF: Beim Lesen des Versionsverlaufs scheint die Antwort bearbeitet worden zu sein. Wenn Dennis kommentierte, die chgrp hatte eine -R darauf
Thanatos
Ich hätte diese Änderung hier in den Kommentaren angeben sollen, aber ich war beschäftigt.
ricbax
2

Wie kann ich festlegen, dass alle * .java-Dateien im aktuellen Verzeichnis und in allen seinen Unterverzeichnissen Leseberechtigung für alle Benutzer haben?

In bash ≥ 4.0 und zsh:

chmod a+r ./**/*.java

Auf jedem POSIX-kompatiblen System (d. H. Jeder nicht-antiken Unix-Variante und mehr):

find . -name '*.java' -exec chmod a+r {} +

Legen Sie alle Dateien mit einer Größe von mindestens 1 Kilobyte im aktuellen Verzeichnis und alle Unterverzeichnisse für eine Gruppe von Administratoren fest.

In zsh:

chgrp admin ./**/*(.L+1023)

Auf jedem POSIX-kompatiblen System:

find . -type f -size +1023c -exec chgrp admin {} +
Gilles
quelle
1

Verwenden Sie find und xargs

find . -name \*.java | xargs chmod o+r

oder

find . -name \*.java -print0 | xargs -0 chmod o+r

Die zweite Version behandelt Leerzeichen in Datei- oder Verzeichnisnamen.

Möglicherweise müssen Sie auch die Verzeichnisberechtigungen korrigieren.

find . -type d -print0 | xargs -0 chmod o+rx

Sie können das Aktualisieren von Berechtigungen vermeiden, die bereits korrekt sind. Überprüfen Sie die Manpage, um den Abschnitt über Berechtigungen zu finden und zu überprüfen.

BillThor
quelle
Verwenden Sie nicht xargs, sondern einfachere, robustere und POSIX-kompatible Geräte find . -type d -exec chmod o+r {} +.
Gilles
0

Verwenden Sie diesen Befehl, um die Leseberechtigung für alle .java-Dateien im aktuellen Verzeichnis festzulegen

chmod +r *.java
Tobias 'Schmidi' Schmid
quelle
Die Frage wurde nach Unterverzeichnissen gestellt, die in dieser Antwort nicht behandelt werden.
CarlF