Вопрос или проблема
У меня есть centos7 как виртуальная машина на Windows 7. Помимо root, я создал другого пользователя “john” в то время. Некоторое время спустя я забыл пароль root и восстановил его, перейдя в однопользовательский режим. С тех пор, когда я вхожу как “john”, я не могу выполнить su -l root
. Я получаю permission denied
. Я вошел как root и изменил файл sudoer следующим образом:
root ALL=(ALL) ALL
admin ALL=/bin/su
Defaults: admin rootpw
john ALL=(ALL) ALL
Затем я добавил john в группу wheel и обновил /etc/pam.d/su
с:
auth required pam_wheel.so use_uid
Также я не могу выполнить su -l john
, когда я вхожу как “root”.
Любая помощь будет оценена.
/var/log/secure
показывает:
Mar 6 .... localhost su: PAM(other) no module name supplied
Mar 6 .....localhost su: PAM(other) illegal module type: @include
Mar 6 .....localhost su: PAM pam_parse: expecting return value: [...common-session]
Manny
Похоже, у вас может быть некоторая неправильная конфигурация в PAM. Проверьте /etc/pam.d на предмет недавних изменений. Для быстрой проверки вы можете сделать что-то вроде этого:
for i in /etc/pam.d/* ; do rpm -qf $i; done | sort -u | sed -e 's/-[0-9]*.*//' | while read p; do echo "Verrifing package $p"; rpm -V $p ; done
Это в основном напечатает все пакеты, которым принадлежат файлы в /etc/pam.d. Далее я использую sed, чтобы убрать маркеры версий из них, а в конце я использую rpm -V, который сравнивает файлы на диске с теми, что в пакетах rpm.
Если будет обнаружено какое-либо изменение, оно будет напечатано на экране в форме:
S.5....T. c /etc/pam.d/su-l
Значение флагов следующее (man rpm
)
S Размер файла отличается M Режим отличается (включает разрешения и тип файла) 5 контрольная сумма (ранее MD5) отличается D Mismatch major/minor номер устройства L readLink(2) несовпадение пути U Владение пользователем отличается G Владение группой отличается T Время изменения отличается P Способности отличаются
Если вы найдете измененные файлы, вы можете изучить их, чтобы проверить, сделаны ли изменения вами и есть ли ошибки. Возможно, вам захочется переместить проблемный конфигурационный файл и переустановить пакет, которому он принадлежит, с помощью yum reinstall pkg_name
.
Ответ или решение
Проблема, с которой вы столкнулись, связана с некорректной конфигурацией доступа к root-пользователю через команду su -l
. Рассмотрим детально основной сценарий:
Проблема
Вы получили сообщение "permission denied" при попытке использовать su -l root
будучи пользователем "john" после того, как сбросили пароль root в режиме одного пользователя. Вы также внесли изменения в конфигурации sudoers и PAM, но они, судя по всему, не решили проблему.
Варианты решения
1. Проверка конфигурации PAM:
На основе логов /var/log/secure
, у вас есть проблема с конфигурацией PAM, что может вызывать ошибки при аутентификации.
-
Проверка
/etc/pam.d/su
: Вам нужно убедиться, что файл имеет корректную синтаксическую структуру и содержит необходимые модули для работы PAM. В вашем случае строкаauth required pam_wheel.so use_uid
активирует ограничение доступа через группуwheel
. Проверьте, что:- Пользователь "john" действительно добавлен в группу
wheel
. Это можно сделать командой:groups john
- Пользователь "john" действительно добавлен в группу
-
Проверка изменений PAM: Используйте предложенную команду для проверки изменений в файлах PAM:
for i in /etc/pam.d/* ; do rpm -qf $i; done | sort -u | sed -e 's/-[0-9]*.*//' | while read p; do echo "Verifying package $p"; rpm -V $p ; done
Это проверит целостность файлов конфигурации PAM, сопоставляя их с версиями из пакетов RPM. Если обнаружены изменения, рассмотрите возможность их восстановления.
2. Редактирование /etc/sudoers
:
Ваши изменения в файле /etc/sudoers
могут также влиять на процесс аутентификации:
- Убедитесь, что внесённые строки конфигурации не вступают в конфликт или не содержат ошибок синтаксиса. Вы можете использовать
visudo
для редактирования файла, так как он проверяет синтаксис.
3. Решение проблем с командой su:
Если команда su -l john
также не работает под root, это может свидетельствовать о более широких проблемах с PAM или конфигурацией системы.
- Проверьте разделы PAM, относящиеся к
su
, и убедитесь, что все необходимые модули указаны правильно.
Заключение
Для устранения проблемы необходимо внимательно проверить конфигурации PAM и sudoers на предмет ошибок. Используйте пакетные инструменты для восстановления затронутых файлов при необходимости. Если проблема сохраняется, рассмотрите возможность временного отключения всех изменений и тестирования с минимальной конфигурацией, чтобы выявить причину конфликта. Это поможет в локализации проблемы и её дальнейшем устранении.