Вопрос или проблема
Я не могу добавить новых пользователей в свою систему debian. Это работало пару дней назад, но не знаю, что произошло, что это больше не работает.
root@debian:~# rm /etc/.pwd.lock
root@debian:~# useradd -G users --create-home -p somepw someuser
useradd: невозможно открыть /etc/passwd
root@debian:~# ls -al /etc/ | grep passwd
-rw-r--r-- 1 root root 1472 Янв 18 01:44 passwd
-rw-r--r-- 1 root root 1470 Янв 18 01:34 passwd-
root@debian:~# ls -al /etc/ | grep group
-rw-r--r-- 1 root root 711 Янв 18 01:34 group
-rw-r--r-- 1 root root 698 Янв 18 01:22 group-
root@:~# ls -al /etc/ | grep shadow
-rw-r----- 1 root shadow 594 Янв 18 01:34 gshadow
-rw-r----- 1 root shadow 584 Янв 18 01:22 gshadow-
-rw-r----- 1 root shadow 1032 Янв 18 01:34 shadow
-rw-r----- 1 root shadow 969 Янв 18 01:34 shadow-
root@debian:~# lsattr /etc/passwd
-----a--------e------- /etc/passwd
root@debian:~# lsattr /etc/shadow
-----a--------e------- /etc/shadow
root@debian:~# ls -alt /etc/.*lock
-rw------- 1 root root 0 Янв 19 10:23 /etc/.pwd.lock
Единственное, что я могу вспомнить, это то, что я добавил bash в качестве оболочки по умолчанию для пользователя (от этого пользовательского аккаунта):
type -a bash
chsh -s /bin/bash
Я прочитал другие вопросы и статьи, но ни одно из решений не сработало для меня. Как мне далее отладить это?
Заранее спасибо!
Хорошо, это исправило проблему:
root@debian:~# chattr -a /etc/passwd
root@debian:~# chattr -a /etc/shadow
Мне также нужно было сделать это с файлом shadow.
Ответ или решение
Решение проблемы: “useradd: cannot open /etc/passwd” в Debian
Если вы столкнулись с ошибкой useradd: cannot open /etc/passwd
в вашей системе Debian, это может вызвать значительные затруднения при добавлении новых пользователей. Давайте разберемся в деталях проблемы и предложим эффективные шаги для её решения.
Анализ проблемы
Ваша ошибка указывает на то, что команда useradd
не может открыть файл /etc/passwd
, который необходим для управления учетными записями пользователей в Linux. Вероятная причина этого заключается в том, что файлы /etc/passwd
и /etc/shadow
находятся в состоянии, которое не позволяет их изменять.
Состояние файлов
В вашем выводе команд видно следующее:
-rw-r--r-- 1 root root 1472 Jan 18 01:44 passwd
-rw-r--r-- 1 root root 1470 Jan 18 01:34 passwd-
Файл passwd
имеет разрешение на чтение и запись только для пользователя root. Это стандартное состояние, но если к файлу были добавлены дополнительные атрибуты, это может вызвать проблемы. Вы также можете заметить, что:
lsattr /etc/passwd
-----a--------e------- /etc/passwd
Атрибут a
указывает на то, что файл может быть добавлен, но не перезаписан. Это может стать препятствием для таких операций, как добавление новых пользователей.
Решения
Для устранения данной проблемы вам потребуется изменить атрибуты файлов:
-
Сброс атрибута "append-only":
Выполните следующую команду, чтобы убрать атрибутa
для файлов/etc/passwd
и/etc/shadow
:chattr -a /etc/passwd chattr -a /etc/shadow
-
Проверка блокировочного файла:
Убедитесь, что блокировочный файл/etc/.pwd.lock
не мешает доступу к файлу/etc/passwd
. Если блокировка не нужна, вы можете удалить этот файл с помощью:rm /etc/.pwd.lock
Дополнительные советы по отладке
Если проблема возникает повторно, предпримите следующие шаги:
-
Проверьте права доступа к файлам:
Убедитесь, что файлы/etc/passwd
и/etc/shadow
имеют правильные права доступа, а именно:chmod 644 /etc/passwd chmod 640 /etc/shadow
-
Логи системы:
Изучите системные журналы, такие как/var/log/auth.log
и/var/log/syslog
, на предмет дополнительных ошибок или предупреждений, которые могут быть связаны с изменениями в учетных записях пользователей. -
Проверка системных обновлений:
Убедитесь, что ваша система обновлена до последней версии. Иногда проблема может быть связана с изменениями в библиотеках или системных утилитах.
Заключение
Соблюдение упомянутых выше шагов должно помочь вам устранить ошибку useradd: cannot open /etc/passwd
и восстановить возможность добавления новых пользователей в вашу систему Debian. Регулярное мониторинг состояния важных файлов и их атрибутов поможет заранее предупреждать возможные проблемы.