Jak mogę przywrócić chmod w katalogu etc?

9

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.

Rafay
źródło
3
Potrzebujesz listingu katalogu ( 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.).
ott--
4
Kiedy piszesz 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.
msw
1
Przy działającym systemie możesz używać find /etc -type d ! -perm 755 -exec ls -ld {} \;i find 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ów
ott--
„Ale w jaki sposób zmiana uprawnień zagroziła wszystkim?” - niektóre rzeczy, które musiały odczytać te pliki, nie mają teraz uprawnień do odczytu tych plików.
user253751

Odpowiedzi:

15

Jedno poszło nie tak: użycie sudotego polecenia. -RPrzełącznik mówi chmodrekursywnie 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ę).

To były tylko uprawnienia do plików. Dlaczego więc cały system wydaje się całkowicie wysadzony w powietrze?

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. apache2Upuszcza uprawnienia roota i używa go www-datalub podobny użytkownik, a twoje 700pozwolenie nie pozwala na odczyt / zapis własnych plików).

Dlaczego teraz nie działają hasła logowania?

Jak już wspomniałeś, hasła logowania są przechowywane w pliku /etc/passwdi 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.

Ale w jaki sposób zmiana uprawnień zagroziła wszystkim?

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ć.

Jak mogę przywrócić mój katalog etc do wcześniejszego stanu?

Jeśli używasz dystrybucji opartej na RPM, można to zrobić za pomocą rpm --setpermspolecenia, byłoby boleśnie przywracać pakiety jeden po drugim, w systemie podobnym do Debiana apt-get --reinstall installjest twoim przyjacielem. Inne rozwiązania mogą być dostępne, ale wymagałyby do tego działającego systemu.

Braiam
źródło
5

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:

    # sudo find /etc -type d -exec chmod 775 '{}' \;
    # sudo find /etc -type f -exec chmod 664 '{}' \;

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.

Javier Marcet
źródło
2
Ponadto niektóre programy nie będą działać; Na przykład SSH wymaga restrykcyjnych uprawnień do niektórych plików. /etc/sudoersjest inny.
Mel Boyce,
1
Ale niektóre pliki /etcnie 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).
tripleee
0

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).

EightBitTony
źródło