Niedawno wpisałem polecenie
sudo chmod 777 -R /
po tym niektóre rzeczy jak
sudo -i
nie działają normalnie. Zastanawiam się więc, czy jest jakiś sposób, aby zresetować uprawnienia do folderu do ich oryginalnego stanu?
Niedawno wpisałem polecenie
sudo chmod 777 -R /
po tym niektóre rzeczy jak
sudo -i
nie działają normalnie. Zastanawiam się więc, czy jest jakiś sposób, aby zresetować uprawnienia do folderu do ich oryginalnego stanu?
Odpowiedzi:
Z tej niechlujnej sytuacji można wrócić.
Uruchomiłem ponownie ten sam rodzaj problemu (jakiś błąd w pisanym przeze mnie skrypcie) i rozwiązałem go, ale musisz poprosić o pomoc eksperta. Bądź bardzo ostrożny!
Po pierwsze, moja sytuacja była łatwiejsza do rozwiązania, ponieważ miałem system podwójnego rozruchu (Ubuntu i moją starą instalację Fedory), ale uruchamianie systemu operacyjnego z dysku CD / DVD lub klucza USB powinno robić to samo.
MPOINT=/mount/ubuntu
Najpierw zamontowałem takie systemy plików w ten sposób (nie zapomnij utworzyć punktów montowania):
mount /dev/ubuntu/root $MPOINT
mount /dev/ubuntu/home $MPOINT/home
Następnie uruchomiłem następujące polecenie (mój problem był tylko w kilku - krytycznych - katalogach), aby skopiować uprawnienia z działającego systemu do bałaganu (w rzeczywistości, w moim przypadku, zainstalowałem system Ubuntu w Virtual Box pod Fedorą i mam tam uprawnienia):
find /etc /usr /bin /sbin -exec stat --format "chmod %a \"${MPOINT}%n\"" {} \; > /tmp/restoreperms.sh
A potem uruchomiłem skrypt restoreperms.sh.
Ponownie mogłem uruchomić system Ubuntu.
Zawartość pliku restoreperms.sh będzie wyglądać następująco:
(...)
chmod 755 /mount/ubuntu//etc/ppp
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up
chmod 2750 /mount/ubuntu//etc/ppp/peers
chmod 640 /mount/ubuntu//etc/ppp/peers/provider
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up.d
chmod 777 /mount/ubuntu//etc/ppp/resolv.conf
(...)
Nie przetestowałem tego, ale musi działać również dla właścicieli i grup właścicieli. Coś jak:
find /etc /usr /bin -exec stat --format 'chown %U:%G ${MPOINT}%n' {} \; > /tmp/restoreperms.sh^
(...)
chown root:root /mount/ubuntu//etc/obex-data-server/imaging_capabilities.xml
chown root:root /mount/ubuntu//etc/obex-data-server/capability.xml
chown root:dip /mount/ubuntu//etc/ppp
chown root:root /mount/ubuntu//etc/ppp/ipv6-up
chown root:dip /mount/ubuntu//etc/ppp/peers
chown root:dip /mount/ubuntu//etc/ppp/peers/provider
chown root:root /mount/ubuntu//etc/ppp/ipv6-up.d
chown root:root /mount/ubuntu//etc/ppp/resolv.conf
(...)
Oczywiście musisz tutaj uważać, aby UID i GID były takie same w obu systemach, ale dla użytkowników i grup związanych z systemem nie powinno to stanowić problemu.
Edytować:
Ponadto ustawienie właściciela anuluje flagi SGID i SUID , co powoduje dziwne problemy (na przykład nie będziesz w stanie wykonać sudo, chyba że zezwolenie to 4755). Musisz i powinieneś ustawiać uprawnienia PO ustawieniach właścicieli. ZAPISZ pełne informacje o uprawnieniach do plików wraz z danymi właściciela.
Rk:
Teraz mam te polecenia w koledze, uruchamiane codziennie (może być tygodnie) w celu zachowania tych informacji. Ułatwi to rozwiązanie następnym razem, ale oczywiście, ponieważ mam to teraz, nigdy więcej się nie powtórzy. ;-) Coś takiego:
0 12 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chmod %a %n" {} \; |/bin/bzip2 -c > /tmp/restore_chmod.$(/bin/date +%w).sh.bz2
0 13 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chown %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_chown.$(/bin/date +%w).sh.bz2
Właściwe (połączone) polecenie jest bardziej jak:
`/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {} \; -exec /usr/bin/stat --format="/bin/chown -h %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_fileperms.$(/bin/date +%w).sh.bz2`
Należy pamiętać, że może być wymagana dodatkowa ostrożność w celu uwzględnienia nawiasów w nazwach plików (na przykład w ustawieniach regionalnych) i że chown może po cichu rozbroić bity setuid i setgid ustawione przez chmod. W tym drugim przypadku, który złamałby, powiedzmy, / bin / su i / usr / bin / sudo, być może będziesz musiał zamienić kolejność wykonywania klauzul powyżej.
Po odzyskaniu sudo lub wybraniu trybu odzyskiwania przy rozruchu
Jest to możliwe, aby odzyskać cały system za pomocą debsums że sprawdzenia zgodności integralności plików i uprawnień.
ze strony podręcznika:
apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)
Ponownie instaluje pakiety ze zmienionymi plikami
lub ograniczony do określonej ścieżki, np . /usr
:
apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/usr ) | cut -d : -f 1 | sort -u)
lub ograniczony do wielu zestawów ścieżek, np .: /sbin /etc /var
apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/etc -e ^/sbin -e ^/var ) | cut -d : -f 1 | sort -u)
chmod a-x /bin/ping
i debsums -c
nie zgłosiłbym tego pliku.
Zawsze uważaj na to, co prowadzisz jako sudo.
Wątek wyjaśnia, że możesz ręcznie ustawić niektóre uprawnienia z powrotem, a skrypt w tym pomaga, ale nadal jest to duże zadanie. Zamiast tego postępuj zgodnie ze wskazówkami na bieżniku, aby zapisać zainstalowane pakiety (oznaczenia) i ponownie zainstalować system operacyjny, a także zastosować zapisane zapisy pakietów, aby odzyskać aplikacje.
O ile mi wiadomo, tylko pakiety Systemu V i RPM oferują polecenie naprawy uprawnień do plików. W systemie V (Solaris) jest to pkgchk, z RPM-ami to rpm --setperms.
Niestety wydaje się, że takie polecenie nie istnieje dla pakietów Debian / Ubuntu - ale mogę się tutaj mylić.
Ale nawet przy pomocy tych poleceń przywrócenie systemu do normalnego stanu nie jest trywialne, a naprawiając go, możesz łatwo spowodować nowe szkody w systemie - jeśli nie będziesz ostrożny.
Poza tym Józef powiedział, nie jesteś pierwszy i nie będziesz ostatnim, który wprowadzi takie polecenie. Ale sam pomysł, aby zmienić uprawnienia do pliku na 777 w systemie Unix, jest silnym sygnałem, że nie masz zbyt dużego doświadczenia z tego rodzaju systemem. W tej sytuacji najlepiej jest wykonać kopię zapasową potrzebnych danych (katalogów domowych, plików konfiguracyjnych, plików poczty?) I spróbować nowej instalacji.
I powinieneś bardzo, bardzo ostrożnie przywracać - uszkodzone - pliki kopii zapasowych.
Powodzenia!
PS: Zastanawiam się tylko, jaki problem chciałeś rozwiązać?
Nie można cofnąć chmod
operacji; przynajmniej nie w sensie cofania się do poprzedniego ustawienia, czego wymaga ta sytuacja. Prawdopodobnie można cofnąć chmod
operację, chmod
przywracając każdy plik i katalog do oryginalnego trybu - ale nie wszystkie są takie same; ustalenie oryginalnych trybów jest trudne (jak omówiono w innych odpowiedziach).