Rekursiver Chown, der mit dem Verzeichnis über dem aktuellen Verzeichnis beginnt

27

Ich konnte nicht in meinem Konto „admin“ anmelden und Alt+ Ctrl+ F1zeigte alle meine Dateien von meinem „normalen“ Benutzer gehört wurden. Ungerade.

Also wechselte ich vorsichtig zu /home/adminund tat a

sudo chown -R admin:admin *

(und .*auch).

Groß.

Dann konnte ich mich nicht als "normaler" Benutzer anmelden und es stellte sich heraus, dass alle Dateien in /home/standard"admin" gehörten.

Ziemlich witzig. Warum passiert das?

sudo chown -R standard:standard /home/standard/*

tat das Gleiche, änderte sich /home/adminebenso wie /home/standard.

Ich bin verwirrter als sonst, weil ich versucht habe, ein Upgrade auf 15.04 durchzuführen, und das meinen Computer ziemlich ruiniert hat, also stelle ich die Dinge mit 14.04 wieder her, bitte haben Sie etwas Geduld mit mir.

DavidP
quelle
Vielleicht ist einer eine symbolische Verbindung zum anderen? was ls -l /homesagt das
Steeldriver

Antworten:

35

Dieses Problem wird verursacht, weil Sie Folgendes ausgeführt haben:

sudo chown -R admin:admin .*

Wir wissen, dass dies .das aktuelle Verzeichnis und ..das übergeordnete Verzeichnis angibt. Wenn Sie den Befehl mit ausführen .*, bedeutet dies einfach, dass alle versteckten Dateien im aktuellen Verzeichnis (mit .), im aktuellen Verzeichnis selbst ( .) und im übergeordneten Verzeichnis ( ..) übereinstimmen . Setzen Sie einfach etwas nach .( *bedeutet 0 oder mehr Zeichen). Als Ergebnis wird das übergeordnete Verzeichnis zusammen mit allen chownuntergeordneten Verzeichnissen aufgerufen admin:admin.

Schau dir diesen Test an:

test$ ls -al
drwxrwxr-x 4 foo foo 4096 Jun  3 07:15 .
drwxrwxr-x 4 foo foo 4096 Jun  2 18:06 ..
drwxrwxr-x 2 foo foo 4096 Jun  3 07:15 egg
drwxrwxr-x 2 foo foo 4096 Jun  3 07:12 spam

$ sudo chown -R bar:bar spam/.*

test$ ls -al
drwxrwxr-x 4 bar  bar  4096 Jun  3 07:15 .
drwxrwxr-x 4 foo  foo  4096 Jun  2 18:06 ..
drwxrwxr-x 2 bar  bar  4096 Jun  3 07:15 egg
drwxrwxr-x 2 bar  bar  4096 Jun  3 07:12 spam

Um zurück zu kehren, müssen Sie erneut zu chownden betroffenen Verzeichnissen wechseln.

Ich bin mir nicht sicher, was Ihr Plan war, aber hier sind einige Ideen:

  • In ein chownbeliebiges Verzeichnis rekursiv (einschließlich versteckter Dateien):

    sudo chown -R foo:foo /spam/egg/
    
  • Um chownnur die Dateien (einschließlich der versteckten Dateien) in diesem Verzeichnis (nicht das Verzeichnis selbst):

    (shopt -s dotglob && sudo chown -R foo:foo egg/*)
    
  • Um chownnur die nicht versteckten Dateien (ohne das Verzeichnis selbst):

    sudo chown -R foo:foo egg/*
    
heemayl
quelle
Vielen Dank, ich verstehe es jetzt ... duh; P Ich weiß immer noch nicht, warum der Besitzer überhaupt gewechselt hat, es sei denn, es lag irgendwie daran, dass Grub mir einen Fehler gab und das 14.04-Installationsprogramm auf mir abstürzte. Mein Standardbenutzer war der erste, den ich erstellt habe, und ich habe ihn später herabgestuft und einen neuen erstellt.
DavidP
@ DavidP Ich bin nicht klar, was Sie bekommen ..
Heemayl
3

Ich denke, es ist der ". *" - Parameter für Dateien; das passt zu allem, was mit "." beginnt, einschließlich dem "." und die ".." Dateien. Das ".." ist das übergeordnete Verzeichnis, das alles darunter enthält.

Am besten sichern Sie einen Ordner und geben den Ordner an, den Sie ändern möchten (/ home / admin).

Marty Fried
quelle