Wie kann ich versteckte Dateien in Linux chmod und chownen?

33

Wie führe ich rekursiv chmododer chownfür versteckte Dateien aus?

sudo chmod -R 775 * funktioniert nicht bei versteckten Dateien.

Das gleiche gilt für sudo chown -R user:group.

nichts besonderes hier
quelle

Antworten:

35

Wenn Sie in Ordnung sind, auch das aktuelle Verzeichnis zu ändern, tun Sie das und lassen -RSie das schwere Heben. -Rignoriert keine versteckten Dateien.

sudo chmod -R 775 .
John Kugelman unterstützt Monica
quelle
14
Dies ( * .*) ist nicht der sicherste Weg, dies zu tun. Insbesondere würde es in das übergeordnete Verzeichnis zurückkehren, was bedeutet, dass es chmodauch Geschwister des aktuellen Verzeichnisses sind. Der richtige Weg wäre * ..?* .[^.]*oder, noch besser (wenn man bedenkt, dass die Platzhalter möglicherweise nicht mit Dateien übereinstimmen) $(ls -A).
Jpalecek
1
@jpalecek: Die Ausgabe von lsist nicht analysierbar. Der Versuch, es zu analysieren, bittet um Ärger. Der richtige Ansatz ist die Verwendung von Shell-Globbing.
Scott Severance
Auch wenn unter Linux haben Sie die Möglichkeit , die Reihenfolge der Argumente für chmod zu ändern, dabei x-plat Skripte zwischen Linux und OS X, das die Reihenfolge ist , sollten Sie zB verwenden, sudo chmod 775 -Rwürde dem Bauch nach oben, so Stick auf diese Antwort .
kayleeFrye_onDeck
35

* schließt standardmäßig keine versteckten Dateien ein, aber wenn Sie sich in der Bash-Phase befinden, können Sie dies tun mit:

shopt -s dotglob

Lesen Sie mehr darüber in bashs builtinHandbuch :

Wenn diese Option aktiviert ist, enthält Bash Dateinamen, die mit einem `. 'Beginnen. in den Ergebnissen der Dateinamenerweiterung.

Dadurch werden *auch versteckte Dateien eingebunden.

chmod -R 775 *

Deaktiviere es mit:

shopt -u dotglob
slhck
quelle
2
Wie mache ich das zsh?
nichts Besonderes-hier
2
Sie verwenden das (D)Globbing-Qualifikationsmerkmal, z. B.chmod -R 775 *(D)
slhck
2

Eine andere Möglichkeit ist, findi like it zu verwenden, da Sie sehr feinkörnige Kontrolle darüber haben können.

find <path to start from> -exec chown <options> {} \+

find -path '<path to include>' -exec chown <options> {} \+

Der einzige Nachteil ist, dass finddie Syntax in verschiedenen Versionen unterschiedlich ist.

RedX
quelle
2

Alle Dateien im aktuellen Verzeichnis, einschließlich versteckter Dateien:

chmod 755 -R ./* ./.[!.]*

Alle Dateien im aktuellen Verzeichnis, nicht rekursiv, einschließlich versteckter Dateien:

chmod 755 ./* ./.[!.]*

Hierdurch wird ein Ausnahmedateiname, der mit 2 Punkten beginnt, nicht geändert. Beispiel: "./..thisonescapesunharmed.txt"

Achten Sie auch darauf, das "x" -Bit nicht zu entfernen, da sonst nicht auf alle Verzeichnisse zugegriffen werden kann (man benötigt das x-Bit, um eine CD in ein Verzeichnis zu schreiben).

Denken Sie an diese Warnung: Verwenden Sie niemals nackte, *sondern ./*stattdessen.

Verwenden Sie findstattdessen, um Probleme beim Festlegen von Berechtigungen für Verzeichnisse zu vermeiden .

find . -type f -exec chmod `VALUE` {} \;
Dr. Beco
quelle