Як випадково перейменувати / тощо, як я перейменую його назад?


36

Я використовую Ubuntu 18.04.

Я перейменував /etcпапку в apache2. Це була моя найбільша помилка

Тепер я не можу перейменувати його назад, тому що мені потрібно користуватися sudo, але коли я намагаюся, я отримую помилку

sudo: unknown uid 1000

Як я можу виправити цю проблему? У мене немає живої системи для завантаження, і в режимі відновлення кореневий термінал відкривається, але потім закривається, кажучи cannot open password database.


17
Завантажте з інсталяційного середовища, виберіть "Спробуйте Ubuntu", встановіть кореневу файлову систему на /mnt, зробіть перейменування, перезавантажте.
AlexP

Як завантажувати інсталяційний носій?
Racoon

@Zanna, shift не показав мені жодного меню. Може, інша кнопка може її відкрити?
Racoon

@Zanna, меню відновлення -> root відкриває термінал, але він говорить, що не може відкрити базу даних паролів і закривається
Racoon

@Zanna, ні, не :(
Racoon

Відповіді:


62

Простий спосіб виправити подібні проблеми - це часто завантажуватися з живої системи, монтувати кореневий розділ /mnt і перейменувати файл.

Якщо у вас немає живої системи або способу її створення, або у вас немає фізичного доступу до системи, але ви можете перезавантажити і отримати меню GRUB, ви можете скористатися редактором GRUB, щоб отримати кореневу оболонку та перейменувати файл.

Перезавантажте або вимкніть живлення, увімкніть, і якщо ви зазвичай не бачите меню GRUB під час завантаження, натисніть Shiftабо, Escщоб перейти до меню GRUB.

Перемістіть курсор вниз до Додаткові параметри для Ubuntu і натисніть enter, а потім натисніть, eщоб змінити параметри завантаження (лише один раз - зміни тут не будуть постійними, тому нам не доведеться прибирати далі).

Ви побачите екран, який виглядає приблизно так 1 :

скріншот редактора меню GRUB

Перемістіть курсор вниз до рядка, з якого починається, linuxа потім перемістіть курсор до кінця цього рядка або в будь-яке місце серед параметрів завантаження ядра. Будьте впевнені, що ви знаходитесь у правильному рядку та обережно введіть тут, оскільки система може не запуститися без завантаження /etc.

Додайте текст init=/bin/bashі натисніть F10для завантаження.

Це запустить систему з оболонкою Bash як init. Ви отримаєте кореневу оболонку, і файлова система змонтується лише для читання. 2 Щоб зробити файлову систему доступною для запису, введіть команду

mount -o remount,rw /

Тепер ви можете перейменувати /etc(ви можете lsспочатку перейменувати )

mv /apache2 /etc

Тепер ви можете перезавантажити або завершити завантаження звичайно звідси, змусивши кореневу оболонку замінити себе на звичайну систему init 3 :

exec systemd 

Я перевірив цю процедуру на Ubuntu MATE 18.04.


1 Велике спасибі Kulfy за те, що він отримав хороший знімок екрана редактора GRUB від VirtualBox!
2 Хоча PATH неможливо встановити з конфігураційних файлів /etcу цьому сценарії, Bash автоматично встановить один .
3 Якщо вам exec systemdне підходить, exec /sbin/initслід зробити фокус. Якщо ні, readlink -e /sbin/initслід надати шлях до будь-якої запущеної програми init, яку ви можете потім виконати execповним шляхом. Якщо ви не можете продовжити це, просто введіть reboot.


4
Дуже ретельно, включаючи скріншот +1 :)
WinEunuuchs2Unix

3
@Kulfy спасибі велике! це чудово: DI не може використовувати VB, оскільки мені не вистачає оперативної пам'яті. Дуже ласкаво з вами, щоб допомогти покращити мою відповідь
Zanna

3
Я думаю, що я зробив скріншот занадто великим: P ;-) і дякую за скріншоти кредитів :)
Kulfy

1
@Racoon Ви дуже раді, щасливі, що ви це виправили :)
Zanna

Спробуйте перевірити його, але не працює в Ubuntu 18.04.Desktop. Слідували інструкції стенографічні . Не працює. Після F10появи лише декількох рядків і зупинки на порожньому екрані. Можете щось запропонувати?
Віджай

8

Якщо у вас є живий USB, ви повинні мати можливість завантажитися на нього та змонтувати існуючу файлову систему, а потім перейменувати свою /etcзвідти. Ось підручник про те, як створити живий USB, якщо вам це потрібно.

Після завантаження на живий USB (якщо використовується привід Ubuntu 18.04), виберіть "Спробуйте Ubuntu без встановлення", і це по суті надасть вам повний екземпляр установки Ubuntu, яка не буде зберігатися після відключення. Після завантаження у вас є кілька варіантів:

Шлях командного рядка

Відкрийте термінал і запустіть lsblk. Шукайте об'єм, який буде приводом вашої оригінальної установки, і відзначте, яке це число (/ dev / sd #)

Потім створіть точку mkdir -p /mnt/directoryкріплення для накопичувача , а потім встановіть привід за допомогою sudo mount /dev/sd# /mnt/directory. Перейдіть до каталогу з cd /mnt/directoryі тепер ви повинні бути в кореневому каталозі вашої установки, але тепер з робочою sudoкомандою. запустіть sudo mv apache2 etcі перезавантажте свою гіпотетично працюючу ОС.

Графічний шлях

Відкрийте утиліту дисків шляхом пошуку Диски. Виберіть гучність, що нагадує ваш інсталяційний привід, і встановіть його. Відкрийте диспетчер файлів і виберіть змонтований том, клацніть правою кнопкою миші /apache2папку та перейменуйте її /etc, а потім перезавантажте.


"Графічний шлях" не працює, оскільки в Rt немає опції "Перейменувати". клацніть.
Віджай

1
@Vijay Це, ймовірно, через дозволи на файли, вам потрібно буде відкрити файловий менеджер як root, щоб зробити це графічно. Для цього запустіть команду sudo nautilusз терміналу. (Ubuntu використовує "nautilus" як свій файловий менеджер так само, як Windows використовує "explorer".)
AJMansfield

2
@AJMansfield, звичайно, це не має значення для живої системи, але в цілому нам слід використовувати, sudo -H nautilusщоб уникнути того, щоб root став власником файлів конфігурацій $HOME, потенційно зробивши їх недоступними програмами, що працюють як звичайний користувач. Ви, мабуть, про це знаєте, але я згадую інших читачів.
Zanna

6
  1. Зробіть завантажувальний USB, як показано тут.

  2. Завантажтесь із USB, натиснувши клавішу, як показано тут.

  3. Дізнайтеся розділ файлової системи, запустивши gparted. Припустимо, це sdxy.

  4. Запустити на терміналі sudo mount /dev/sdxy /mnt

  5. Запустити на терміналі sudo mv /mnt/apache2 /mnt/etc

  6. Перевірте свою файлову систему в / mnt на зміну імені.

  7. Запустити на терміналі sudo reboot

  8. Коли з'явиться запит, вийміть USB та натисніть клавішу Enter


@Kulfy Я спробував, але без судо це не працює. Дивіться тут .
Віджай

Це тому, що sda2 був змонтований за допомогою sudo, тому дії тільки sudo можуть виконувати. Але якщо ви встановите драйв nautilus (без спеціального дозволу), ви можете виконувати завдання без sudo.
Kulfy

Перевірив це `ubuntu @ ubuntu: ~ $ mount / dev / sda2 / mnt mount: тільки root може це зробити ubuntu @ ubuntu: ~ $
Vijay

1
mountПрограма AFAIK дуже сувора і її завжди потрібно запускати як кореневу; Єдиний виняток з цього - коли файлова система є fstabі має userможливість. Програма udisksctlдозволяє звичайним користувачам монтувати пристрої, наприклад, наприклад udisksctl mount -b /dev/sda1(це створює відповідну точку монтажу в /media/$USER/). Я не намагався використовувати udisksctlживу систему, але в живій системі завжди є привілейований користувач, який може працювати sudoбез пароля, тому немає необхідності в таких утилітах, як udisksctlінакше так корисно
Zanna
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.