Я использую Ubuntu 18.04.
Я переименовал /etc
папку в apache2
. Это была моя самая большая ошибка
Теперь я не могу переименовать его обратно, потому что мне нужно использовать sudo
, но когда я пытаюсь, я получаю ошибку
sudo: unknown uid 1000
Как я могу решить эту проблему? У меня нет действующей системы для загрузки, и в режиме восстановления корневой терминал открывается, но затем закрывается, говоря cannot open password database
.
/mnt
, выполните переименование, перезагрузите компьютер.Ответы:
Простой способ решения подобных проблем - это загрузка с работающей системы, монтирование корневого раздела
/mnt
и переименование файла.Если у вас нет работающей системы или средств ее создания, или у вас нет физического доступа к системе, но вы можете перезагрузиться и получить меню GRUB, вы можете использовать редактор GRUB, чтобы получить корневую оболочку и переименовать ее. файл.
Перезагрузитесь или выключите питание, включите и, если вы обычно не видите меню GRUB при загрузке, нажмите Shiftили, Escчтобы перейти в меню GRUB.
Переместите курсор вниз в « Дополнительные параметры» для Ubuntu и нажмите enter, затем нажмите, eчтобы редактировать параметры загрузки (только один раз - изменения здесь не будут постоянными, поэтому мы не должны очищать их впоследствии).
Вы увидите экран, который выглядит примерно так 1 :
Переместите курсор вниз к строке, которая начинается с,
linux
а затем переместите курсор в конец этой строки или в любое место среди параметров загрузки ядра. Убедитесь, что вы находитесь на правильной линии, и наберите здесь внимательно, так как система может не загрузиться без установки/etc
.Добавьте текст
init=/bin/bash
и нажмите F10для загрузки.Это запустит систему с оболочкой Bash в качестве init. Вы получите корневую оболочку, а файловая система будет смонтирована только для чтения. 2 Чтобы сделать файловую систему доступной для записи, введите команду
Теперь вы можете переименовать
/etc
(вы можетеls
сначала)Теперь вы можете перезагрузиться или завершить обычную загрузку отсюда, заменив корневую оболочку на обычную систему инициализации 3 :
Я тестировал эту процедуру на Ubuntu MATE 18.04.
1 Большое спасибо Kulfy за скриншот хорошего качества редактора GRUB от VirtualBox!
2 Хотя PATH не может быть установлен из файлов конфигурации
/etc
в этом сценарии, Bash автоматически установит его .3 Если у
exec systemd
вас не работает,exec /sbin/init
следует сделать свое дело. Если нет,readlink -e /sbin/init
следует указать путь к какой-либо программе инициализации, которую вы можете затем указатьexec
с помощью полного пути. Если вы не можете пойти по этому пути, просто введитеreboot
.источник
F10
того, как появятся только несколько строк и остановится на пустом экране. Можешь что-нибудь предложить?Если у вас есть работающий 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
, затем перезагрузите.источник
sudo nautilus
из терминала. (Ubuntu использует «nautilus» в качестве файлового менеджера так же, как Windows использует «explorer».)sudo -H nautilus
чтобы избежать того, чтобы root стал владельцем конфигурационных файлов$HOME
, потенциально делая их недоступными для программ, запускаемых от имени обычного пользователя. Вы, наверное, знаете об этом, но я упоминаю для других читателей.Сделайте загрузочный USB как показано здесь.
Загрузитесь с USB, нажав клавишу, как показано здесь.
Узнайте ваш раздел файловой системы, запустив
gparted
. Предположим, это sdxy.Запустить на терминале
sudo mount /dev/sdxy /mnt
Запустить на терминале
sudo mv /mnt/apache2 /mnt/etc
Проверьте вашу файловую систему в / mnt для изменения имени.
Запустить на терминале
sudo reboot
При появлении запроса выньте USB и нажмите Enter
источник
mount
программа очень строгая и всегда должна запускаться как root; единственное исключение из этого - когда файловая система включенаfstab
и имеетuser
опцию. Программаudisksctl
позволяет обычным пользователям монтировать устройства, используя, напримерudisksctl mount -b /dev/sda1
(она создает подходящую точку монтирования в/media/$USER/
). Я не пробовал использоватьudisksctl
из действующей системы, но в действующей системе всегда есть привилегированный пользователь, способный работатьsudo
без пароля, поэтому нет необходимости в таких утилитах,udisksctl
которые, в противном случае, так полезны