Я пытался изменить свое имя пользователя, а также свой домашний каталог (/home/username
), и моя система начала сбоить. Я удалил файл passwd
, но у меня была резервная копия с именем passwd_bkp
. Я попытался переименовать этот passwd_bkp
в passwd
, но это не сработало. Никакие команды не выполнялись... Я находился в окне терминала.
Я перезагрузил систему и теперь не могу войти в систему. GRUB дает два варианта: Linux и режим восстановления.
Я попытался открыть сеанс от имени root, но он говорит, что файловая система повреждена. Я не могу получить доступ к своим файлам.
Я потерял все свои файлы?
Нет, учитывая Ваше описание, Вы не потеряли ни одного из своих файлов (кроме /etc/passwd
, который Вы удалили, но которого Вы создали резервную копию).
Загрузите Ubuntu живой CD/DVD или живая карта флэш-памяти с интерфейсом USB. Выбрать Try Ubuntu
(нет Install Ubuntu
). Когда рабочий стол загрузится, откройте Nautilus (файловый браузер) окно. Можно найти раздел для системы Ubuntu под Devices
. Нажмите на него для монтирования его.
Теперь можно восстановить резервное копирование. Необходимо сделать это как корень, как бы то ни было. Вот один довольно простой способ сделать это.
Откройте Окно терминала (Ctrl+Alt+T). В Терминале ввести cd
и введите клавишу "Пробел", но еще не нажимайте Enter.
В Наутилусе найдите etc
каталог в установленной системе Ubuntu. (Это не то же как etc
каталог для живого CD. etc
каталог в установленной системе Ubuntu находится в разделе, который Вы просто смонтировали.)
Перетащите это etc
каталог в Терминал, который вставит его полный путь в Терминал, завершаясь cd ...
команда.
Нажмите Enter для выполнения команды. Теперь Вы находитесь в каталоге, который содержал Ваш passwd
файл. Я предполагаю что Ваш файл резервной копии, passwd_bkp
, также расположен здесь.
Выполните эту команду:
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
в меню личинки, чтобы отредактировать спасательную запись режима и добавить init=/bin/sh
к аргументам ядра. Это отбросит Вас правильный к корневой оболочке, где можно скопировать файл резервной копии назад в оригинал после перемонтирования чтения-записи файловой системы с mount -o remount,rw /
.
Необходимо прочитать ответ первого Eliah Kagan, прежде, чем продолжить читать этот ответ. Он объясняет, как справиться с ситуацией и почему обычно не необходимо изменить/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 пользователя не было доступа к нему. Вот то, как я зафиксировал it:.
Входят в систему на tty Ctrl + Высокий звук + изменение 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 живут 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
тогда перезагрузка. Это не установит passwd для корня.
Затем можно войти в систему, создать все учетные записи снова, и т.д.
, можно также использовать спину, которую называют (я думаю) /etc/passwd-
Редактирование : (другой метод, который я не попробовал прежде, но я думаю, что он должен работать также)
init=/bin/bash
cp /etc/passwd- /etc/passwd
init=/bin/bash
passwd YOURUSERNAMEHERE
типа mount -o remount,rw /
ls /home
имени пользователя (который является Нижним регистром L, и нижний регистр S) для списка пользователей)