Вопрос или проблема
Я установил эту версию Ubuntu на свой ноутбук.
└─ $ ▶ lsb_release -a
Нет доступных модулей LSB.
ID дистрибьютора: Ubuntu
Описание: Ubuntu 16.04.3 LTS
Версия: 16.04
Кодовое имя: xenial
Из-за моего ограниченного знания о Linux я добавил
строку вручную в /etc/passwd
.
Мой пользователь, под которым я вхожу в ноутбук, это gofoboso
с паролем.
Этот пользователь имеет права sudo.
После добавления второй строки в следующий контент, у меня нет прав sudo.
root:x:0:0:root:/root:/usr/bin/zsh
gofoboso:x:0:0:gofoboso:/gofoboso:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
Я понимаю, что пароли шифруются в файле /etc/shadow
, и сейчас этот файл имеет те же атрибуты, что и у пользователя root (??)
─ $ ▶ sudo cat /etc/shadow
[sudo] пароль для gofoboso:
Извините, попробуйте снова.
[sudo] пароль для gofoboso:
sudo: ошибка проверки учетной записи, ваша учетная запись заблокирована
Это ноутбук компании, и у меня нет пароля root.
Я пробовал несколько команд, которые нашел в интернете, но все они требовали sudo.
Кто-нибудь знает, как я могу это исправить? Самое главное, я не могу перезагрузить ноутбук или выключить его, потому что он будет запрашивать пароль пользователя gofoboso
, который, вероятно, сейчас такой же, как и у root ??
Если это не может быть исправлено без того, чтобы стать root, если кто-то знает пароль root и удалит эту строку, пользователь gofoboso будет снова активирован?
Спасибо.
Вам необходимо войти в режим “один пользователь”. Вы можете ввести команду ‘init 1’, или перезагрузить его и получить доступ в одном пользователе, изменив запись grub; (вам нужно будет добавить слово ‘single’ в конце строки ядра).
Вы написали: “Я добавил строку вручную в /etc/passwd
” и “У меня нет пароля root“.
Если у вас есть права на редактирование /etc/passwd
, у вас уже есть права root – по крайней мере, где-то – даже если у вас нет самого пароля root.
Из-за вашего описания я предполагаю, что вы редактировали файл паролей так:
sudo vi /etc/passwd # НИКОГДА ЭТО НЕ ДЕЛАЙТЕ, даже с другим редактором
Команда sudo
может быть настроена для предоставления прав root (и в этом случае явно это делает, потому что редактирование /etc/passwd
требует прав root для успешного выполнения). Так что вы почти наверняка можете сказать ей, чтобы она предоставила вам оболочку root напрямую:
sudo -s # Начать оболочку
sudo bash # Начать "bash"
Отсюда вы можете либо сбросить пароль root, либо просто сделать то, что вам было нужно для прав root.
В общем, добавление второй учетной записи пользователя с правами root не полезно. Вам не следует входить в учётную запись с привилегиями, и такие инструменты, как doas
и sudo
, обеспечивают управляемый доступ к привилегированным действиям.
Кстати, редактирование файла /etc/passwd
должно выполняться с помощью команды vipw
, которая проверяет корректность редактируемого файла паролей перед его установкой. (Вы также можете безопасно редактировать /etc/group
и /etc/shadow
– смотрите man vpiw
для получения подробностей.)
sudo vipw # Безопасно редактировать файл passwd с использованием редактора по умолчанию
sudo EDITOR=nano vpiw # Использовать "nano" для безопасного редактирования файла
В вашем случае вероятно отсутствовала запись в /etc/shadow
и, возможно, одна в /etc/group
. Добавление этих записей не обеспечит автоматическую правильную работу всех инструментов с вашей новой учетной записью пользователя, потому что некоторые (неправильно) проверяют имя пользователя root
вместо UID 0
.
Если вам удалось нарушить единственную возможность входа в вашу систему, вам необходимо загрузить систему восстановления (мне нравится SystemRescue) и использовать её для исправления поврежденной записи в вашем файле /etc/passwd
. Существует множество вопросов и ответов на Unix & Linux, которые это обсуждают.
Ответ или решение
Злоключения с учётной записью в Ubuntu 16.04: Как восстановить доступ после редактирования /etc/passwd
Ваша ситуация, когда учётная запись заблокирована после внесения изменений в файл /etc/passwd
, достаточно распространена, особенно среди пользователей, не имеющих достаточного опыта работы с Linux. Рассмотрим подробнее, как можно восстановить доступ к системе и избежать подобной проблемы в будущем.
Проблема
Вы указали, что ваш пользователь gofoboso
, обладающий правами sudo
, был изменён в файле /etc/passwd
, и после этого вы потеряли возможность использовать права sudo
. Это могло произойти по нескольким причинам:
-
Неправильный формат строки в
/etc/passwd
: Если вы добавили строку, которая не соответствует формату (username:password:UID:GID:full name:home directory:shell), это может привести к сбою в работе системы. -
Изменение UID или GID: Убедитесь, что ваш UID (идентификатор пользователя) не был изменён. Ваша запись должна выглядеть, например, как
gofoboso:x:1001:1001:gofoboso:/home/gofoboso:/usr/bin/zsh
(где1001
— это пример UID и GID). -
Проблемы с
/etc/shadow
: Файл/etc/shadow
отвечает за хранение паролей в зашифрованном виде. Если вы не добавили соответствующую запись в этот файл или изменили существующие данные, это привело к блокировке учётной записи.
Решение
Поскольку у вас нет root-пароля и обычные команды не работают, есть несколько методов, которые можно использовать для восстановления доступа к системе:
-
Режим одиночного пользователя (Single User Mode):
- Перезагрузите компьютер и при загрузке выберите в меню GRUB нужный вам элемент.
- Нажмите
e
для редактирования загрузки и добавьтеsingle
в конце строки, начинающейся сlinux
, или просто введитеinit 1
. НажмитеCtrl + X
для загрузки. Это позволит вам войти в систему без запроса пароля. - После загрузки в режиме одиночного пользователя, вы сможете редактировать файлы
/etc/passwd
и/etc/shadow
.
-
Запуск в режиме восстановления (Recovery Mode):
- Выберите режим восстановления в меню GRUB, затем запустите команду
root
, чтобы получить доступ к консоли с правами root. - Отредактируйте файл
/etc/passwd
с помощью безопасной командыvipw
, чтобы избежать повреждения данных. Убедитесь, что пользовательgofoboso
создан корректно и имеет правильный UID и GID. - Не забудьте проверить и исправить файл
/etc/shadow
в соответствии с форматом.
- Выберите режим восстановления в меню GRUB, затем запустите команду
Предотвращение в будущем
-
Использование безопасных инструментов:
- Всегда редактируйте важные файлы конфигурации с помощью специальных инструментов, таких как
vipw
иvigr
, которые настраивают проверки перед сохранением изменений.
- Всегда редактируйте важные файлы конфигурации с помощью специальных инструментов, таких как
-
Регулярное резервное копирование:
- Настройте регулярное резервное копирование важных файлов и конфигураций, чтобы можно было быстро восстановить систему в случае ошибок.
-
Обучение и документация:
- Ознакомьтесь с документацией и командной строкой Linux для лучшего понимания работы системы. Существуют множество ресурсов, включая руководства и сообщества, где можно получить помощь.
Заключение
Проблемы с доступом к системе после редактирования файлов конфигурации могут быть решены, если вы знали, как правильно восстановить изменения. Используйте режим одиночного пользователя или режим восстановления для доступа к системе. Все изменения в конфигурационных файлах выполняйте с аккуратностью, и не забывайте о создании резервных копий, чтобы предотвратить подобные инциденты в будущем.