Odpowiedzi:
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.
sudo chown -R user:user /
tym jest prawdopodobne, że system jest tak źle zabezpieczony, że nie można przywrócić z kopii zapasowej.
chown
opisanych czynności prawdopodobnie nie będziesz w stanie nic zrobić przed zainstalowaniem całego systemu od zera; system nawet nie ma root
konta i sudo
nie będzie działać. Prawdopodobnie warto spróbować uruchomić się z powłoką dla jednego użytkownika, ale nie oczekuj, że zadziała.
sudo
czy su
nadal będzie działać, gdy wszystkie odpowiednie pliki są własnością, user
to inna sprawa (prawdopodobnie nie dlatego, że między innymi zniknie bit SUID na exe).
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 sudo
polecenia. 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/foo
jest własnością użytkownika foo
i że każdy plik bufora poczty /var/mail
jest 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.
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
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.
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.