Я удалил файл "/etc/passwd" и не могу войти

Я пытался изменить свое имя пользователя и домашний каталог (/home/username) и моя система начала падать. Я удалил passwd файл, но у меня была резервная копия с именем passwd_bkp, Я пытался переименовать это passwd_bkp как passwd и это не сработало. Никакие команды не выполнялись... Я был в окне терминала.

Я перезапустил свою систему и теперь не могу войти в систему. GRUB предлагает две опции: Linux и режим восстановления.

Я пытался открыть сеанс как root, но он говорит, что файловая система повреждена. Я не могу получить доступ к своим файлам.

Я потерял все мои файлы?

5 ответов

Нет, учитывая ваше описание, вы не потеряли ни один из ваших файлов (кроме /etc/passwd, который вы удалили, но который вы создали резервную копию).

Загрузите Ubuntu Live CD/DVD или USB флэш-накопитель. Выбрать Try Ubuntu (не Install Ubuntu). Когда загрузится рабочий стол, откройте окно Nautilus (файловый браузер). Вы можете найти раздел для вашей системы Ubuntu в Devices, Нажмите на него, чтобы установить его.

Теперь вы можете восстановить резервную копию. Вы должны сделать это как корень, однако. Вот один довольно простой способ сделать это.

  1. Откройте окно терминала (Ctrl + Alt + T). В Терминале введите cd и нажмите клавишу пробела, но пока не нажимайте Enter.

  2. В Наутилусе найти etc каталог внутри установленной системы Ubuntu. (Это не то же самое, что etc каталог для live CD. etc каталог внутри установленной системы Ubuntu находится в разделе, который вы только что смонтировали.)

  3. Перетащите это etc каталог в Терминал, который вставит его полный путь в Терминал, завершив cd ... команда.

  4. Нажмите Enter, чтобы запустить команду. Теперь вы находитесь в каталоге, в котором содержались ваши passwd файл. Я предполагаю, что ваш файл резервной копии, passwd_bkp, также находится здесь.

  5. Запустите эту команду:

    sudo cp passwd_bkp passwd
    

Это восстанавливает passwd файл из резервной копии, так что теперь вы сможете перезагрузить компьютер, извлечь CD / DVD или USB-флешку и снова загрузиться в установленную систему Ubuntu. Ваша установленная система Ubuntu должна снова работать.


В будущем вы должны знать, что не рекомендуется редактировать вручную /etc/passwd, /etc/group, /etc/shadow, или же /etc/gshadow, Вместо этого вы должны использовать утилиты, предоставляемые как часть Ubuntu, чтобы вносить любые необходимые изменения в пользователей и группы в вашей системе. Вы, вероятно, знаете, что вы можете изменить это в настройках системы или с users-admin, Но для этого есть также очень мощные утилиты командной строки, которые намного безопаснее и проще, чем сами редактировать файлы конфигурации вручную. Вот документация по наиболее актуальным подобным утилитам в Ubuntu:

  • adduser / addgroup
  • deluser/ delgroup
  • usermod
  • groupmod
  • useradd (ниже, чем adduser, вы должны обычно использовать adduser вместо)
  • userdel (ниже, чем deluser, вы должны обычно использовать deluser вместо)
  • groupadd (ниже, чем addgroup, вы должны обычно использовать addgroup вместо)
  • groupdel (ниже, чем delgroup, вы должны обычно использовать delgroup вместо)
  • passwd
  • gpasswd
  • pwck
  • grpck

Вы можете изменить свое имя пользователя с помощью некоторых из этих утилит. Этот ответ подробно объясняет один из способов. Однако вы должны знать (как в настоящее время затрагивается комментарием там), что некоторые приложения предполагают, что ваше имя пользователя остается прежним. Таким образом, изменение вашего имени пользователя может вызвать некоторые проблемы.

В качестве альтернативы загрузке livecd, вы можете нажать e в меню grub для редактирования записи режима восстановления и добавления init=/bin/sh к аргументам ядра. Это приведет вас прямо к корневой оболочке, где вы сможете скопировать файл резервной копии обратно в исходный после перемонтирования файловой системы с возможностью чтения и записи с mount -o remount,rw /,

Прежде чем продолжать читать этот ответ, вы должны прочитать ответ Элии Кагана. Он объясняет, как справиться с ситуацией и почему обычно нет необходимости изменять /etc/passwd вручную.

Во всяком случае, если вы действительно знаете, что делаете, и вам нужно отредактировать /etc/passwd вручную, вы можете сделать это, но вам все равно не следует просто менять файлы в вашем любимом редакторе. Вместо этого есть инструмент

vipw

Из справочных страниц:

The vipw and vigr commands edits the files /etc/passwd and /etc/group,
respectively. With the -s flag, they will edit the shadow versions of those
files, /etc/shadow and /etc/gshadow, respectively. The programs will set
the appropriate locks to prevent file corruption.

Например, если вы хотите изменить UID пользователя, насколько я знаю, редактировать файлы вручную, это единственный способ. Кроме того, если вы хотите изменить пароль пользователя, а затем вернуться к его предыдущему, не зная его, нет никакого способа с usermod или так. Но если вы сохраните хешированный пароль из файла теней, то измените пароль пользователя, который затем сможете снова добавить хешированный пароль, отредактировав файл теней с помощью vipw -s,

После ответа @EliahKagan я не смог войти с lightdm и мой аккаунт не был указан. Я обнаружил, что разрешение passwd файл не был настроен должным образом; пользователь lightdm не имел к нему доступа. Вот как я это исправил:

Авторизуйтесь на tty Ctrl+Alt+F1

изменить на /etc каталог

cd /etc

Затем измените разрешения на 644

sudo chmod 644 passwd

Тогда делай ls -la

строка разрешения должна выглядеть следующим образом

-rw-r--r--

Если вы можете войти, просто откройте терминал и попробуйте это:

sudo cp /etc/passwd- /etc/passwd
sudo chmod 644 /etc/passwd

еще

Загрузитесь в режиме восстановления или из Ubuntu Live Cd. Затем установите ваш старый диск:

mkdir /olddrive
mount /dev/hda5 /olddrive
assuming that your old drive is on /dev/hda5.
then, cd to /olddrive/etc
type:
echo "root::0:0:Superuser:/:/bin/bash" > passwd

затем перезагрузите компьютер. Это не установит пароль для root.

Затем вы можете войти, создать все свои учетные записи снова и т. Д.

Вы также можете использовать резервную копию, которая называется (я думаю) /etc/passwd-

Изменить:(еще один метод, который я не пробовал раньше, но я думаю, что он также должен работать)

  • Запустите GRUB при загрузке (нажмите Esc при загрузке)
  • Нажмите e over (режим восстановления)
  • Нажмите e над строкой, начинающейся с ядра
  • Нажмите пробел и введите init=/bin/bash
  • Нажмите Enter
  • Нажмите b
  • В командной строке введите: cp /etc/passwd- /etc/passwd
  • Перезагрузитесь в GRUB снова
  • Нажмите e over (режим восстановления)
  • Нажмите e над строкой, начинающейся с ядра
  • Нажмите пробел и введите init=/bin/bash
  • Нажмите Enter
  • Нажмите b
  • В командной строке введите mount -o remount,rw /
  • Тип passwd YOURUSERNAMEHERE (Если вы не знаете свой тип имени пользователя ls /home (это строчные буквы L и строчные S) для списка пользователей)
  • Введите новый пароль по запросу
  • Перезагрузитесь для нормальной загрузки.

Источник

Другие вопросы по тегам