Пользователь отсутствует в файлах passwd и shadow, но при выполнении getent passwd пользователь он отображается.

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

Пользователя нет в файлах /etc/passwd и /etc/shadow, но когда я выполняю “getent passwd userSec”, он показывает данные учетной записи.

[root@myServer systemadmin]# getent passwd userSec
userSec:sdfdgfdsge34gfdsgfdsgfdsgwerwrewd.:709:709:userSec_Account:/home/userSec:/bin/bash
[root@myServer systemadmin]# cat /etc/passwd | grep userSec
[root@myServer systemadmin]# cat /etc/shadow | grep userSec

Пробовал удалить и добавить пользователя, но всё безуспешно.

[root@myServer systemadmin]# sudo /usr/sbin/userdel -r userSec
userdel: ошибка удаления записи пароля
userdel: ошибка удаления записи пароля в теневой копии
userdel: ошибка удаления каталога /home/userSec
[root@myServer systemadmin]# /usr/sbin/useradd -d /home/userSec -m -s /bin/bash userSec
useradd: пользователь userSec уже существует

Думаю, это потому, что может потребоваться время для синхронизации. Что сработало для меня: попробуйте удалить пользователя с клиента и попробуйте снова getent)) и если все подключено к DNS, не забудьте добавить LDAP в DNS через poweradmin, а также попробуйте ifdown enp0s3 && ifup enp0s3

Ответ или решение

Проблема, с которой вы столкнулись, заключается в том, что информация о пользователе "userSec" отображается с помощью команды getent passwd userSec, однако отсутствует в файлах /etc/passwd и /etc/shadow. Давайте разберемся, почему так происходит и как можно это исправить.

Понимание проблемы

Система Linux традиционно хранит информацию о пользователях в файлах /etc/passwd и /etc/shadow. Однако в современных системах аутентификации часто используются дополнительные источники данных, такие как LDAP (Lightweight Directory Access Protocol), NIS (Network Information Service) и др. Это означает, что getent может извлекать данные не только из локальных файлов, но и из других внешних источников.

  1. **LDAP или NIS**: Если ваша система настроена на использование LDAP или NIS для аутентификации, то пользовательская информация может быть получена из этих источников, а не из локальных файлов. Это объясняет, почему `getent passwd userSec` возвращает данные, даже если в локальных файлах они отсутствуют.
  2. **Неполная синхронизация**: Синхронизация данных между различными системами аутентификации может не происходить мгновенно. Иногда требуется время или перезапуск службы, чтобы изменения в конфигурации вступили в силу.

Решение проблемы

  1. Проверка конфигурации NSS (Name Service Switch): Файл /etc/nsswitch.conf определяет порядок получения данных в системе. Убедитесь, что порядок поиска настроен правильно и включает все необходимые источники, например, files, ldap, nis.

  2. Диагностика LDAP или NIS:

    • Проверьте, настроена ли система на использование LDAP или NIS, открыв и изучив такие файлы, как /etc/ldap.conf или /etc/yp.conf.
    • Установите соединение с сервером LDAP или NIS, чтобы подтвердить, что данные для пользователя userSec присутствуют на сервере.
  3. Перезапуск сетевых интерфейсов и служб:

    • Используйте команды ifdown и ifup, как предложено, чтобы перезапустить сетевой интерфейс. Это может помочь обновить состояние подключения и синхронизировать данные.
    • Перезапуск служб ldap или nis (например, systemctl restart ldap или systemctl restart ypbind) также может быть полезен.
  4. Удаление пользователей через удаление LDAP записей:

    • Если пользователь хранится в системе LDAP, изменения должны вноситься через LDAP, а не локально. Это может потребовать доступа к менеджеру LDAP с необходимыми правами.

Заключение

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

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

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