Wie man Dateien rekursiv richtig chown (einschließlich versteckter Verzeichnisse)

8

Dieses Rätsel wird durch das Ausführen git pullvon root verursacht.

Es gibt verschiedene Gründe dafür ... Ich möchte, dass mein Gerät beim Booten den Code aktualisiert und rc.localvon root ausgeführt wird.

Es funktioniert meistens npm installeinwandfrei ( neigt dazu, wenn es von root ausgeführt wird, aber das ist ein ganz anderes Thema). Das Problem tritt auf, wenn ich versuche, das Git-Repository anschließend mit einem Nicht-Root-Benutzer zu verwenden ... einige der Git-Dateien haben wurde von root geschrieben, daher kann ich es jetzt nicht mehr verwenden (Berechtigung verweigert).

Ich würde es also gerne rekursiv chownzurückgeben, aber es scheint nichts zu geben, was wirklich bei all den kleinen Git-Dateien funktioniert. Ich habe die -RFlagge und den ./**/*Pfad ausprobiert .

Ich vermute, dass keine dieser Techniken in Punktverzeichnisse abfällt.

Steven Lu
quelle
1
Welche Shell benutzt du? In müssen bashSie einstellen shopt -s dotglob, um versteckte Dateien von *oder abzugleichen **.
Jimmyij
1
@jimmij gut zu wissen, danke (Sie können das wahrscheinlich als Antwort setzen)
Steven Lu
Hast du chown -R *statt chown -R .?
Peter Cordes

Antworten:

16

Der folgende Befehl funktioniert für mich in Ubuntu. Es hat alle Dateien und Verzeichnisse wiederverwendet

sudo chown -R someuser:somegroup YourDir
Valarpirai
quelle
Ich habe es versucht sudo chown -R me:me .und als ich ls -alalle meine Dateien noch im Besitz von root sind. Warum geht das nicht?
Richard
@Richard hast du versucht einen absoluten Pfad zu verwenden oder ./?
Vdegenne
0

Ich benutze treestattdessen:

 sudo tree -fai ~/.blabla  | xargs -L1 -I{} sudo chown youruser:youruser {}

Achten Sie auch darauf, rekursives chown oder chmod nicht im Verzeichnis '/' oder einem anderen Systemverzeichnis auszuführen.

Eduard Florinescu
quelle