Przypadkowo wykonałem następujące polecenie w katalogu etc:
sudo chmod -R 700 /etc
Wiem, że zrobiłem coś bardzo złego. Mój terminal drukuje teraz:
I have no name!@ubuntu: /$
Jak mogę przywrócić mój katalog etc do wcześniejszego stanu?
Próbowałem zmienić uprawnienia, ale teraz nie działa. Byłoby również bardzo pomocne, gdyby ktoś mógł wyjaśnić, co faktycznie poszło nie tak, gdy wykonałem to polecenie itd. To były tylko uprawnienia do plików. Dlaczego więc cały system wydaje się całkowicie wysadzony w powietrze? Dlaczego teraz nie działają hasła logowania? Wiem, że w katalogu etc znajduje się plik, który dotyczy użytkowników. Ale w jaki sposób zmiana uprawnień zagroziła wszystkim? Bardzo szczegółowe informacje techniczne na ten temat byłyby bardzo pomocne.
ls -laR
) z innego działającego systemu. Jaka jest twoja wersja? Możesz zmienić katalogi na 755 i pliki na 644, ale niektóre muszą mieć różne tryby (np. / Etc / shadow np.).sudo
, powinieneś przeczytać to sobie w myślach: „Zapewniam sobie najwyższą władzę nad moim systemem bez siatki bezpieczeństwa, czy jestem pewien, że wiem, co robię? Czy jestem pewien, że wpisałem, co miałem na myśli?” przed naciśnięciem klawisza Return.find /etc -type d ! -perm 755 -exec ls -ld {} \;
ifind etc -type f ! -perm -644 -exec ls -l {} \;
znajdować katalogi i pliki w niestandardowych trybach. W Debianie są to tylko 2 katalogi i 39 plikówOdpowiedzi:
Jedno poszło nie tak: użycie
sudo
tego polecenia.-R
Przełącznik mówichmod
rekursywnie ustawić uprawnienia do tego katalogu, który jest w każdym przypadku, nie-Zalecane działanie (powinniśmy nazwać go: herezji), jeśli nie wiesz, co robisz (raz stało się to dla mnie, nie wydałem polecenia, ale udało się to z powodu wadliwego GUI, a mój system przełączył się).GNU / Linux jest bardzo wrażliwy na uprawnienia do plików, ponieważ został zbudowany z myślą o stabilności i bezpieczeństwie . To samo dotyczy większości programów działających w systemie GNU / Linux (tzn.
apache2
Upuszcza uprawnienia roota i używa gowww-data
lub podobny użytkownik, a twoje700
pozwolenie nie pozwala na odczyt / zapis własnych plików).Jak już wspomniałeś, hasła logowania są przechowywane w pliku
/etc/passwd
i tylko root (zakładam, że tego nie zmieniłeś) może je odczytać, ale monit logowania (lub login GUI) używa konta nieuprzywilejowanego, dlatego nie może odczytać plik.Tak jak wspomniano powyżej, Linux jest bardzo wrażliwy na uprawnienia do plików. Niektóre programy nawet sprawdzają uprawnienia do plików konfiguracyjnych, a jeśli nie są spodziewane, w ogóle nie będą działać.
Jeśli używasz dystrybucji opartej na RPM, można to zrobić za pomocą
rpm --setperms
polecenia, byłoby boleśnie przywracać pakiety jeden po drugim, w systemie podobnym do Debianaapt-get --reinstall install
jest twoim przyjacielem. Inne rozwiązania mogą być dostępne, ale wymagałyby do tego działającego systemu.źródło
Zobaczmy, co zrobiłeś, to ustawić uprawnienia w całym katalogu / etc, ponieważ odczyt / zapis / wykonanie jest dozwolone tylko dla właściciela pliku / katalogu, odmowa dla wszystkich innych. Jeśli nie rozumiesz uprawnień do plików, możesz przeczytać więcej na Wikipedii: Tradycyjne uprawnienia UNIX .
Powodem wysadzenia systemu jest to, że wiele procesów nie może już odczytać ich ustawień, ponieważ nie ma dostępu do / etc. Odzyskanie całego katalogu / etc do poprzedniego stanu nie będzie łatwe. Jak to zrobić, będzie zależeć od twojej dystrybucji, ale w zasadzie oznacza to ponowną instalację każdego pakietu zawierającego dowolny plik w / etc.
Jako szybką pomoc zespołu, aby móc korzystać z systemu, aby go poprawnie naprawić (ponowna instalacja wszystkich pakietów z zawartością w / etc, jak wspomniano powyżej), możesz:
Za pomocą tych dwóch wierszy będziesz ustawiać liberalne uprawnienia we wszystkich katalogach / etc, z odczytem / zapisem dozwolonym dla właściciela i grupy, a odczyt dozwolonym dla wszystkich innych. Powodem dwóch chmod jest ustawienie bitu wykonania tylko na katalogach. Niektóre procesy będą narzekać lub nie powiedzie się, w tym każdy plik wykonywalny w / etc, ale powinieneś być w stanie wykonać ponowną instalację, którą opisałem powyżej.
Pamiętaj, że dopóki nie odzyskasz oryginalnych uprawnień, Twój system będzie co najmniej w niepewnym stanie.
źródło
/etc/sudoers
jest inny./etc
nie mogą być nigdy czytelne w świecie! Przywróć z kopii zapasowych, dlatego je masz (lub właśnie dlatego ludzie namawiają Cię do tworzenia kopii zapasowych).700 usunął dostęp do wielu plików dla grup i użytkowników na całym świecie (np. Pliki mają teraz
rwx------
uprawnienia). Na przykład wszyscy użytkownicy muszą umieć czytać/etc/passwd
. Dzięki twojej konfiguracji tylko root może teraz czytać/etc/passwd
. Wiele rzeczy się zepsuje, jeśli złamiesz uprawnienia do plików/etc/
w nieprzewidywalny sposób.Możesz spróbować odbudować uprawnienia (zakładając, że nadal możesz przełączyć się na root) na podstawie działającego serwera, ale jest to podatne na błędy.
Sugeruję przywrócenie
/etc/
z kopii zapasowej, jeśli ją masz (upewnienie się, że przywracanie przywraca uprawnienia z powrotem lub, jeśli Twoje rozwiązanie do tworzenia kopii zapasowych je obsługuje, przywróć tylko uprawnienia).źródło