Jak mogę zmienić nazwę po przypadkowej zmianie nazwy / etc?

36

Używam Ubuntu 18.04.

Zmieniłem nazwę /etcfolderu na apache2. To był mój największy błąd

Teraz nie mogę zmienić nazwy, ponieważ muszę go użyć sudo, ale kiedy próbuję, pojawia się błąd

sudo: unknown uid 1000

Jak mogę rozwiązać ten problem? Nie mam systemu na żywo do rozruchu, aw trybie odzyskiwania terminal główny otwiera się, ale potem zamyka cannot open password database.

Szop
źródło
17
Uruchom z nośnika instalacyjnego, wybierz „Wypróbuj Ubuntu”, podłącz główny system plików /mnt, dokonaj zmiany nazwy, uruchom ponownie.
AlexP,
Jak uruchomić nośnik instalacyjny?
Racoon
@Zanna, shift nie pokazał mi żadnego menu. Może inny przycisk może go otworzyć?
Racoon
@Zanna, menu odzyskiwania -> root otwiera terminal, ale mówi, że nie można otworzyć bazy danych haseł i zamyka
Racoon
@Zanna, nie, nie :(
Racoon,

Odpowiedzi:

62

Prostym sposobem na rozwiązanie takich problemów jest często uruchomienie systemu na żywo, zamontowanie partycji głównej, /mnt a następnie zmiana nazwy pliku.

Jeśli nie masz systemu na żywo lub nie możesz go utworzyć, lub nie masz fizycznego dostępu do systemu, ale możesz zrestartować komputer i uzyskać menu GRUB, możesz użyć edytora GRUB, aby uzyskać powłokę root i zmienić nazwę plik.

Uruchom ponownie lub wyłącz zasilanie, włącz i, jeśli normalnie nie widzisz menu GRUB podczas uruchamiania, naciśnij Shiftlub, Escaby przejść do menu GRUB.

Przesuń kursor w dół do opcji zaawansowanych dla Ubuntu i naciśnij enter, a następnie naciśnij, eaby edytować opcje rozruchu (tylko jeden raz - zmiany tutaj nie będą trwałe, więc nie musimy później sprzątać).

Zobaczysz ekran, który wygląda mniej więcej tak 1 :

zrzut ekranu edytora menu GRUB

Przesuń kursor w dół do linii, która zaczyna się od, linuxa następnie przesuń kursor na koniec tej linii lub w dowolne miejsce wśród parametrów rozruchowych jądra. Upewnij się, że jesteś na właściwej linii i wpisz tutaj ostrożnie, ponieważ system może się nie uruchomić bez instalacji /etc.

Dodaj tekst init=/bin/bashi naciśnij, F10aby uruchomić.

To uruchomi system z powłoką Bash jako init. Otrzymasz root root, a system plików zostanie zamontowany tylko do odczytu. 2 Aby system plików był zapisywalny, wprowadź polecenie

mount -o remount,rw /

Teraz możesz zmienić nazwę /etc(możesz lsnajpierw)

mv /apache2 /etc

Teraz możesz zrestartować komputer lub dokończyć rozruch normalnie z tego miejsca, zastępując powłokę roota zwykłym systemem init 3 :

exec systemd 

Przetestowałem tę procedurę na Ubuntu MATE 18.04.


1 Wielkie podziękowania dla Kulfy za uzyskanie dobrej jakości zrzutu ekranu edytora GRUB z VirtualBox!
2 Chociaż /etcw tym scenariuszu nie można ustawić PATH na podstawie plików konfiguracyjnych , Bash automatycznie ją ustawi .
3 Jeśli exec systemdto nie działa, exec /sbin/initpowinieneś załatwić sprawę. Jeśli nie, readlink -e /sbin/initnależy podać ścieżkę do dowolnego programu inicjującego, który powinien być uruchomiony, a następnie można podać execpełną ścieżkę. Jeśli nie możesz postępować w ten sposób, po prostu wpisz reboot.

Zanna
źródło
4
Bardzo dokładny, w tym zrzut ekranu +1 :)
WinEunuuchs2Unix
3
@Kulfy bardzo dziękuję! to wspaniałe: DI nie może używać VB, ponieważ nie mam wystarczającej ilości pamięci RAM. Bardzo miło z twojej strony, że pomogłeś poprawić moją odpowiedź
Zanna,
3
Myślę, że zrobiłem zrzut ekranu zdecydowanie za duży: P ;-) i dziękuję za napisy do zrzutów ekranu :)
Kulfy
1
@Racoon Nie ma za co, cieszę się, że to naprawiłeś :)
Zanna
Próbuję go przetestować, ale nie działa w Ubuntu 18.04.Desktop. Postępował zgodnie z instrukcjami dosłownie . Nie działa. Po F10pojawieniu się zaledwie kilku linii i zatrzymuje się na pustym ekranie. Czy możesz coś zasugerować?
Vijay,
8

Jeśli masz aktywne złącze USB, powinieneś być w stanie uruchomić się na nim i zamontować istniejący system plików, a następnie zmienić jego nazwę /etcz tego miejsca. Oto samouczek na temat tworzenia Live USB, jeśli jest to potrzebne.

Po uruchomieniu na żywo USB (jeśli używasz dysku Ubuntu 18.04), wybierz „Wypróbuj Ubuntu bez instalacji”, a zasadniczo da ci pełną instancję instalacji Ubuntu, która nie będzie trwała po wyłączeniu. Po uruchomieniu masz kilka opcji:

Sposób wiersza poleceń

Otwórz terminal i uruchom lsblk. Poszukaj woluminu, który byłby dyskiem oryginalnej instalacji i zanotuj, jaki to numer (/ dev / sd #)

Następnie utwórz punkt montowania dysku za pomocą mkdir -p /mnt/directory, a następnie zamontuj dysk za pomocą sudo mount /dev/sd# /mnt/directory. Przejdź do katalogu za pomocą cd /mnt/directoryi powinieneś być teraz w katalogu głównym instalacji, ale teraz z działającym sudopoleceniem. uruchom sudo mv apache2 etci uruchom ponownie w hipotetycznie działającym systemie operacyjnym.

Graficzny sposób

Otwórz narzędzie dyskowe, wyszukując dyski. Wybierz wolumin, który wygląda jak dysk instalacyjny, i zamontuj go. Otwórz menedżera plików i wybierz zamontowany wolumin, kliknij prawym przyciskiem myszy /apache2folder i zmień jego nazwę na /etc, a następnie uruchom ponownie.

Minty
źródło
„Graficzny sposób” nie działa, ponieważ nie ma opcji „Zmień nazwę” na Rt. Kliknij.
Vijay,
1
@Vijay Prawdopodobnie z powodu uprawnień do plików, będziesz musiał otworzyć menedżera plików jako root, aby zrobić to graficznie. Aby to zrobić, uruchom polecenie sudo nautilusz terminala. (Ubuntu używa „nautilus” jako menedżera plików w taki sam sposób, jak system Windows używa „eksploratora”.)
AJMansfield
2
@AJMansfield oczywiście nie ma to znaczenia w systemie na żywo, ale ogólnie powinniśmy używać, sudo -H nautilusaby uniknąć sytuacji, w której root stanie się właścicielem plików konfiguracyjnych $HOME, potencjalnie uniemożliwiając dostęp do nich programom uruchamianym jako zwykły użytkownik. Prawdopodobnie jesteś tego świadomy, ale mówię o tym innym czytelnikom.
Zanna,
6
  1. Utwórz bootowalny USB, jak pokazano tutaj.

  2. Uruchom z USB, naciskając klawisz, jak pokazano tutaj.

  3. Sprawdź swoją partycję systemu plików, uruchamiając gparted. Załóżmy, że to sdxy.

  4. Uruchom na terminalu sudo mount /dev/sdxy /mnt

  5. Uruchom na terminalu sudo mv /mnt/apache2 /mnt/etc

  6. Sprawdź swój system plików w / mnt pod kątem zmiany nazwy.

  7. Uruchom na terminalu sudo reboot

  8. Po wyświetleniu monitu odłącz USB i naciśnij enter

Vijay
źródło
@Kulfy Próbowałem, ale nie działa bez sudo. Zobacz tutaj .
Vijay,
Jest tak, ponieważ sda2 został zamontowany z sudo, dlatego tylko sudo może wykonywać działania. Ale jeśli zamontujesz dysk nautilus (bez specjalnego pozwolenia), możesz wykonywać zadania bez sudo.
Kulfy,
Sprawdziłem to `ubuntu @ ubuntu: ~ $ mount / dev / sda2 / mnt mount: tylko root może to zrobić ubuntu @ ubuntu: ~ $
Vijay
1
AFAIK mountprogram jest bardzo ścisły i zawsze musi być uruchamiany jako root; jedynym wyjątkiem jest sytuacja, gdy system plików jest włączony fstabi ma taką useropcję. Program udisksctlpozwala zwykłym użytkownikom montować urządzenia, używając na przykład udisksctl mount -b /dev/sda1(tworzy odpowiedni punkt montowania w /media/$USER/). Nie próbowałem używać udisksctlz systemu na żywo, ale w systemie na żywo zawsze jest się uprzywilejowanym użytkownikiem, który może uruchamiać sudosię bez hasła, więc nie ma potrzeby używania narzędzi, udisksctlktóre w przeciwnym razie
byłyby