Jak cofnąć polecenie chown?


17

Jeśli uruchomię:

sudo chown -R user:user /

Czy mogę przywrócić to, co było przed uruchomieniem?


1
Podobnie jak ostrzeżenie dla innych: Poniższe polecenie sudo chown -R user:user ..może mieć taki sam efekt, jak wspomniany tutaj, jeśli jesteś jeden poziom poniżej katalogu głównego systemu plików. Nie próbuj czegoś takiego.
— passerby51,

Odpowiedzi:


22

W skrócie: nie.

Musisz przywrócić z kopii zapasowej. (Niektóre narzędzia do tworzenia kopii zapasowych mogą mieć opcje przywracania tylko uprawnień, inne mogą wyświetlać pliki z kopiami zapasowymi wraz z uprawnieniami i można ich użyć do naprawy systemu).

Jeśli nie masz kopii zapasowej, musisz to wszystko naprawić ręcznie.


Po sudo chown -R user:user /tym jest prawdopodobne, że system jest tak źle zabezpieczony, że nie można przywrócić z kopii zapasowej.
— Keith Thompson,

1
Jeśli nie możesz odzyskać ważnych części danych użytkownika w tym scenariuszu z kopii zapasowej, twoja „kopia zapasowa” tak naprawdę nie jest jedna. Jeśli nie możesz odzyskać całego systemu operacyjnego, powinieneś móc ponownie zainstalować bazę, a następnie przywrócić ją z kopii zapasowej. W takim przypadku najprawdopodobniej będzie potrzebował Live CD lub rozruchu sieciowego, ale jeśli twoja strategia tworzenia kopii zapasowych nie może się z tego zregenerować, to nie jest wystarczająco dobra.
— Mat

Mój wcześniejszy komentarz był prawdopodobnie niejasny. Funkcjonujący system można przywrócić za pomocą samego systemu. Po wykonaniu chownopisanych czynności prawdopodobnie nie będziesz w stanie nic zrobić przed zainstalowaniem całego systemu od zera; system nawet nie ma rootkonta i sudonie będzie działać. Prawdopodobnie warto spróbować uruchomić się z powłoką dla jednego użytkownika, ale nie oczekuj, że zadziała.
— Keith Thompson,

1
Konto root nie zniknęło (nadal jest to UID 0); po prostu nie ma już żadnych plików, ale root i tak omija normalne sprawdzanie uprawnień. To, sudoczy sunadal będzie działać, gdy wszystkie odpowiednie pliki są własnością, userto inna sprawa (prawdopodobnie nie dlatego, że między innymi zniknie bit SUID na exe).
— jw013

6

Tylko jeśli znasz właściciela i grupę wszystkich plików i katalogów w twoim /katalogu.

Nawet wtedy masz już prawa własności do krytycznych plików systemowych, które muszą być własnością root, w tym sudopolecenia. Prawdopodobnie będziesz musiał zamontować dysk twardy w innym systemie - i pamiętaj, że ten drugi system prawdopodobnie nie będzie miał tego samego odwzorowania UID i GID jak ten, który właśnie zablokowałeś.

Zrób kopię całego dysku twardego, jeśli możesz, a następnie zainstaluj ponownie system operacyjny. Gdy to zrobisz, możesz spróbować skopiować pliki z powrotem do nowo wyczyszczonego systemu i przywrócić ich własność. Prawdopodobnie możesz założyć (choć nie w 100% niezawodnie), że wszystko pod /home/foojest własnością użytkownika fooi że każdy plik bufora poczty /var/mailjest własnością odpowiedniego użytkownika (jeśli masz e-mail w systemie). Prawdopodobnie możesz uciec bez przywracania większości plików, które nie są poniżej /home, w zależności od tego, co zrobiłeś z systemem.

A potem zacznij kultywować nawyk podwójnego sprawdzania każdego polecenia, pod którym biegniesz, sudo zanim uderzysz Enter.


6

Jeśli twoja dystrybucja oparta jest na RPM, możesz przywracać TYLKO pliki, które zostały zainstalowane przez pakiety RPM.

Aby przywrócić wszystkie uprawnienia do pakietu:

rpm --setperms -a

Aby przywrócić wszystkich właścicieli pakietów (użytkownik / grupa):

rpm --setugids -a

Jeśli -a nie działa, możesz wykonać pętlę bash:

Dla uprawnień:

for x in $(rpm -qa); do rpm --setperms $x; done

Dla właściciela:

for x in $(rpm -qa); do rpm --setugids $x; done

Wyodrębniono z: http://www.sysadmit.com/2016/10/linux-restaurar-permisos-de-un-paquete.html


1

Możesz zapisać bieżące wersje, a następnie przeanalizować je w celu przywrócenia za pomocą opcji -v.

chown -R nobody:nobody -v /tmp/some_file > /tmp/chown.log
cat /tmp/chown.log

Treść będzie:

changed ownership of `/tmp/some_file' from me:users to nobody:nobody

Używając swojego ulubionego języka skryptowego i wyrażeń regularnych, możesz wykonać bolesny proces przywracania ich (jeśli musisz).

Chciałbym gorąco polecam nie robi rekurencyjną Chown / jak będziesz narażać / etc / shadow lub innego ważnego pliku.


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.