Учетная запись заблокирована после добавления строки в файл /etc/passwd

Вопрос или проблема

Я установил эту версию 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. Это могло произойти по нескольким причинам:

  1. Неправильный формат строки в /etc/passwd: Если вы добавили строку, которая не соответствует формату (username:password:UID:GID:full name:home directory:shell), это может привести к сбою в работе системы.

  2. Изменение UID или GID: Убедитесь, что ваш UID (идентификатор пользователя) не был изменён. Ваша запись должна выглядеть, например, как gofoboso:x:1001:1001:gofoboso:/home/gofoboso:/usr/bin/zsh (где 1001 — это пример UID и GID).

  3. Проблемы с /etc/shadow: Файл /etc/shadow отвечает за хранение паролей в зашифрованном виде. Если вы не добавили соответствующую запись в этот файл или изменили существующие данные, это привело к блокировке учётной записи.

Решение

Поскольку у вас нет root-пароля и обычные команды не работают, есть несколько методов, которые можно использовать для восстановления доступа к системе:

  1. Режим одиночного пользователя (Single User Mode):

    • Перезагрузите компьютер и при загрузке выберите в меню GRUB нужный вам элемент.
    • Нажмите e для редактирования загрузки и добавьте single в конце строки, начинающейся с linux, или просто введите init 1. Нажмите Ctrl + X для загрузки. Это позволит вам войти в систему без запроса пароля.
    • После загрузки в режиме одиночного пользователя, вы сможете редактировать файлы /etc/passwd и /etc/shadow.
  2. Запуск в режиме восстановления (Recovery Mode):

    • Выберите режим восстановления в меню GRUB, затем запустите команду root, чтобы получить доступ к консоли с правами root.
    • Отредактируйте файл /etc/passwd с помощью безопасной команды vipw, чтобы избежать повреждения данных. Убедитесь, что пользователь gofoboso создан корректно и имеет правильный UID и GID.
    • Не забудьте проверить и исправить файл /etc/shadow в соответствии с форматом.

Предотвращение в будущем

  1. Использование безопасных инструментов:

    • Всегда редактируйте важные файлы конфигурации с помощью специальных инструментов, таких как vipw и vigr, которые настраивают проверки перед сохранением изменений.
  2. Регулярное резервное копирование:

    • Настройте регулярное резервное копирование важных файлов и конфигураций, чтобы можно было быстро восстановить систему в случае ошибок.
  3. Обучение и документация:

    • Ознакомьтесь с документацией и командной строкой Linux для лучшего понимания работы системы. Существуют множество ресурсов, включая руководства и сообщества, где можно получить помощь.

Заключение

Проблемы с доступом к системе после редактирования файлов конфигурации могут быть решены, если вы знали, как правильно восстановить изменения. Используйте режим одиночного пользователя или режим восстановления для доступа к системе. Все изменения в конфигурационных файлах выполняйте с аккуратностью, и не забывайте о создании резервных копий, чтобы предотвратить подобные инциденты в будущем.

Оцените материал
Добавить комментарий

Капча загружается...