Rekursywny przegląd rozpoczynający się od katalogu powyżej bieżącego katalogu


19

Nie mogłem zalogować się na swoje konto „admin” i Alt+ Ctrl+ F1pokazał, że wszystkie moje pliki były własnością mojego „standardowego” użytkownika. Dziwny.

Więc ostrożnie zmieniłem /home/admini zrobiłem

sudo chown -R admin:admin *

(i .*też).

Wspaniały.

Wtedy nie mogłem się zalogować jako „standardowy” użytkownik i okazuje się, że wszystkie pliki /home/standardbyły teraz własnością „administratora”.

Całkiem humorystyczne. Dlaczego to się dzieje?

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

zrobił to samo, zmienił się /home/adminrównież /home/standard.

Jestem bardziej zdezorientowany niż zwykle, ponieważ próbowałem uaktualnić do 15.04 i to prawie zniszczyło mój komputer, więc przywracam 14.04, proszę o cierpliwość.


Być może jedno jest dowiązaniem symbolicznym do drugiego? co ls -l /homepowiesz
steeldriver

Odpowiedzi:


27

Przyczyną tego problemu jest uruchomienie:

sudo chown -R admin:admin .*

Wiemy, że .wskazuje bieżący katalog i ..wskazuje katalog nadrzędny. Po uruchomieniu polecenia za pomocą .*, oznacza to po prostu, że pasuje do dowolnego ukrytego pliku w bieżącym katalogu (oznaczonym za pomocą .), samego katalogu bieżącego ( .), katalogu nadrzędnego ( ..). Po prostu umieść wszystko po .( *oznacza 0 lub więcej znaków). W rezultacie katalog macierzysty wraz ze wszystkimi jego katalogami potomnymi zostaje chownprzeniesiony do admin:admin.

Spójrz na ten test:

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

Aby przywrócić z powrotem, musisz ponownie przejść chowndo katalogów, których dotyczy problem.

Nie jestem pewien, jaki był twój plan, ale oto kilka pomysłów:

  • Do chowndowolnego katalogu rekurencyjnie (w tym ukrytych plików):

    sudo chown -R foo:foo /spam/egg/
    
  • Aby chowntylko pliki (w tym pliki ukryte) w tym katalogu (a nie sam katalog):

    (shopt -s dotglob && sudo chown -R foo:foo egg/*)
    
  • Do chowntylko nie ukrytych plików (bez samego katalogu):

    sudo chown -R foo:foo egg/*
    

Dziękuję, rozumiem teraz ... duh; P Nadal nie wiem, dlaczego właściciel zmienił się w pierwszej kolejności, chyba że było to w jakiś sposób związane z Grub, który dał mi błąd i zawiesił na mnie program instalacyjny 14.04. Mój standardowy użytkownik był pierwszym, który utworzyłem, a później zdegradowałem go i stworzyłem nowego.
DavidP

@DavidP Nie jestem pewien, o co ci chodzi ..
heemayl

3

Myślę, że jest to parametr „. *” Dla plików; pasujące do wszystkiego zaczynającego się od „.”, w tym „.” oraz pliki „..”. „..” to katalog nadrzędny, który zawiera wszystko pod nim.

Najlepszym sposobem jest utworzenie kopii zapasowej jednego folderu i określenie rzeczywistego folderu, który chcesz zmienić (/ home / admin).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.