Вопрос или проблема
Когда я нажимаю [Ctrl+Alt+F<1-6>], я попадаю в tty1 через tty6 соответственно, без проблем. Но на экране входа, если я пытаюсь войти с именем пользователя и паролем, меня просто сразу возвращает к тому же экрану входа. Единственный способ, как я могу фактически войти в консоль — это как root.
Вот соответствующие строки из моего /var/log/auth.log
2 Ноя 21:03:04 bhh1988-H67MA-USB3-B3 login[3116]: pam_unix(login:session): сессия открыта для пользователя bhh1988 с помощью LOGIN(uid=0)
2 Ноя 21:03:04 bhh1988-H67MA-USB3-B3 login[3116]: pam_unix(login:session): сессия закрыта для пользователя bhh1988
2 Ноя 21:03:53 bhh1988-H67MA-USB3-B3 login[5546]: pam_unix(login:session): сессия открыта для пользователя root с помощью bhh1988(uid=0)
2 Ноя 21:03:53 bhh1988-H67MA-USB3-B3 login[8258]: ROOT LOGIN на '/dev/tty1'
Вы видите, что в 21:03:04 я пытался войти как bhh1988, но сессия просто открывается и сразу закрывается. Около 50 секунд спустя я попробовал войти как root, что прошло успешно. Интересно, что говорит, что сессия была открыта пользователем bhh1988 (моё имя пользователя).
Я также проверил /var/log/syslog и /var/log/kern.log. В момент неудачи входа, я вижу строку:
2 Ноя 21:03:04 bhh1988-H67MA-USB3-B3 kernel: [ 1430.218803] init: tty1 главный процесс завершён, перезапуск
Есть идеи, что происходит, или на что ещё я могу обратить внимание для получения подсказок?
Я на Ubuntu 12.04
ИЗМЕНЕНИЕ:
Вот мой файл /etc/pam.d/login:
#
# Конфигурационный файл PAM для службы Shadow `login`
#
# Обеспечить минимальную задержку в случае неудачи (в микросекундах).
# (Заменяет настройку `FAIL_DELAY` из login.defs)
# Обратите внимание, что другие модули могут требовать другую минимальную задержку. (например,
# чтобы отключить любую задержку, вы должны добавить опцию nodelay к pam_unix)
auth optional pam_faildelay.so delay=3000000
# Выводит файл сообщения перед каждым экраном входа (заменяет
# параметр ISSUE_FILE из login.defs). Раскомментируйте для использования
# auth required pam_issue.so issue=/etc/issue
# Запретить вход root, кроме tty, перечисленных в /etc/securetty
# (Заменяет настройку `CONSOLE` из login.defs)
#
# С установленным управлением этого модуля:
# [success=ok new_authtok_reqd=ok ignore=ignore user_unknown=bad default=die]
# root не будет запрашиваться пароль на небезопасных линиях.
# если введено недействительное имя пользователя, запрашивается пароль (но вход
# в конечном итоге будет отклонен)
#
# Вы можете изменить его на "необходимый" модуль, если считаете, что root может ошибиться в вводе
# своего логина и в этом случае не должен запрашиваться пароль. Но
# это оставит систему уязвимой к атакам на определение пользователей.
#
# Вы можете изменить его на "обязательный" модуль, если считаете, что это позволяет
# угадать действительные имена пользователей вашей системы (недействительные имена пользователей считаются
# как возможно root на небезопасных линиях), но пароли root могут быть
# переданы по небезопасным линиям.
auth [success=ok new_authtok_reqd=ok ignore=ignore user_unknown=bad default=die] pam_securetty.so
# Запретить вход, кроме root, когда существует /etc/nologin
# (Заменяет настройку `NOLOGINS_FILE` из login.defs)
auth requisite pam_nologin.so
# SELinux должен быть первым правилом сессии. Это обеспечивает удаление любого
# оставшегося контекста. Без этого возможно,
# что модуль мог бы выполнить код в неправильном домене.
# Когда модуль присутствует, "обязательный" будет достаточным (когда SELinux
# отключен, это возвращает успех.)
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
# Этот модуль разбирает файлы конфигурации окружения
# и также позволяет использовать расширенный конфиг
# файл /etc/security/pam_env.conf.
#
# разбор /etc/environment требует "readenv=1"
session required pam_env.so readenv=1
# локальные переменные также сохраняются в /etc/default/locale
# чтение этого файла *в дополнение к /etc/environment* не повредит
session required pam_env.so readenv=1 envfile=/etc/default/locale
# Стандартная аутентификация Un*x.
@include common-auth
# Это позволяет предоставить определенные дополнительные группы пользователю
# в зависимости от таких вещей, как время суток, tty, служба и пользователь.
# Пожалуйста, отредактируйте /etc/security/group.conf, чтобы соответствовать вашим нуждам
# (Заменяет параметр `CONSOLE_GROUPS` в login.defs)
auth optional pam_group.so
# Раскомментируйте и отредактируйте /etc/security/time.conf, если вам нужно установить
# временные ограничения на входы.
# (Заменяет настройку `PORTTIME_CHECKS_ENAB` из login.defs
# а также /etc/porttime)
# account requisite pam_time.so
# Раскомментируйте и отредактируйте /etc/security/access.conf, если вам нужно
# установить ограничения доступа.
# (Заменяет файл /etc/login.access)
# account required pam_access.so
# Устанавливает ограничения пользователей в соответствии с /etc/security/limits.conf
# (Заменяет использование /etc/limits в старом входе)
session required pam_limits.so
# Выводит информацию о последнем входе при успешном входе
# (Заменяет параметр `LASTLOG_ENAB` из login.defs)
session optional pam_lastlog.so
# Выводит сообщение при успешном входе
# (Заменяет параметр `MOTD_FILE` в login.defs)
session optional pam_motd.so
# Выводит статус почтового ящика пользователя при успешном входе
# (Заменяет параметр `MAIL_CHECK_ENAB` из login.defs).
#
# Это также определяет переменную окружения MAIL
# Однако, userdel также нуждается в переменных MAIL_DIR и MAIL_FILE
# в /etc/login.defs, чтобы убедиться, что удаление пользователя
# также удаляет почтовый спул файла пользователя.
# См. комментарии в /etc/login.defs
session optional pam_mail.so standard
# Стандартная учетная запись и сессия Un*x
@include common-account
@include common-session
@include common-password
# SELinux должен вмешиваться во время входа, чтобы обеспечить, что процесс
# начинается в правильном контексте безопасности по умолчанию. Только сессии, которые
# предназначены для выполнения в контексте пользователя, должны выполняться после этого.
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
# Когда модуль присутствует, "обязательный" будет достаточным (когда SELinux
# отключен, это возвращает успех.)
Единственное очевидное, что я вижу в этом файле входа, это часть, которая говорит:
# Запретить вход, кроме root, когда существует /etc/nologin
# (Заменяет настройку `NOLOGINS_FILE` из login.defs)
auth requisite pam_nologin.so
Но у меня нет /etc/nologin, так что это не выглядит как виновник.
У меня была похожая проблема. Попробуйте login bhh1988
из консоли root. Это покажет сообщение об ошибке.
В моем случае я набрал usermod -s bash auser
, но правильно было usermod -s /bin/bash auser
.
Ответ или решение
Проблема, с которой вы столкнулись, связана с невозможностью входа в систему как обычный пользователь (в данном случае, пользователь bhh1988
) на виртуальных терминалах (tty) с 1 по 6 на Ubuntu 12.04. При этом вы можете успешно войти в систему под пользователем root
. Судя по предоставленной информации из логов, сессия для пользователя bhh1988
сразу же закрывается после попытки входа. Это может быть вызвано несколькими причинами. Рассмотрим основные шаги для устранения данной проблемы.
1. Проверьте оболочку пользователя
Одной из распространенных причин, по которой пользователь не может войти в систему, является назначение неправильной оболочки в системе. Как вы уже упомянули, возможно, вы изменили оболочку пользователя не совсем корректно. Убедитесь, что у пользователя bhh1988
установлена правильная оболочка. Чтобы проверить это, выполните следующую команду от имени root
:
cat /etc/passwd | grep bhh1988
В результате выполнения команды вы должны увидеть что-то вроде этого:
bhh1988:x:1001:1001::/home/bhh1988:/bin/bash
В этой строке убедитесь, что последняя часть /bin/bash
(или другая корректная оболочка) указана верно. Если там указано что-то вроде /bin/false
или другая несуществующая оболочка, это и является причиной закрытия сессии. Чтобы исправить, выполните команду:
usermod -s /bin/bash bhh1988
2. Проверьте права доступа к домашней директории
Другой причиной может быть проблема с правами доступа к домашней директории пользователя bhh1988
. Проверьте права на директорию пользователя:
ls -ld /home/bhh1988
Права должны выглядеть как drwxr-xr-x
(или что-то подобное), и владелец должен быть bhh1988
. Если права настроены неправильно, вы можете исправить это, задействовав команды:
chown bhh1988:bha1988 /home/bhh1988
chmod 755 /home/bhh1988
3. Проверка конфигурации PAM
Вы предоставили конфигурацию файла PAM для службы login
. Проверьте, нет ли проблем в файле /etc/pam.d/common-shell
и убедитесь, что все модули правильно настроены. Иногда проблема может возникать из-за конфликта или ошибки в конфигурации PAM.
4. Просмотр других логов
Смотрите дополнительные логи, такие как /var/log/auth.log
и /var/log/syslog
. Посмотрите, есть ли какие-либо другие сообщения об ошибках, которые могли бы указать на причину проблемы.
5. Проверка системных файлов
Если все предыдущие шаги не помогли, возможно, стоит проверить системные файлы и конфигурации:
cat /etc/nologin
Если этот файл существует, это может быть причиной проблемы, так как он запрещает вход другим пользователям, кроме root. Удалите его, если он не нужен:
rm /etc/nologin
Вывод
После выполнения всех этих шагов вы должны иметь возможность входить в систему как пользователь bhh1988
. Если проблема сохраняется, возможно, стоит рассмотреть другие варианты, такие как восстановление системы или переустановка, если это целесообразно в вашем случае. Убедитесь, что у вас есть резервные копии важных данных перед проведением радикальных изменений.