Вопрос или проблема
Пользователя нет в файлах /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
может извлекать данные не только из локальных файлов, но и из других внешних источников.
- **LDAP или NIS**: Если ваша система настроена на использование LDAP или NIS для аутентификации, то пользовательская информация может быть получена из этих источников, а не из локальных файлов. Это объясняет, почему `getent passwd userSec` возвращает данные, даже если в локальных файлах они отсутствуют.
- **Неполная синхронизация**: Синхронизация данных между различными системами аутентификации может не происходить мгновенно. Иногда требуется время или перезапуск службы, чтобы изменения в конфигурации вступили в силу.
Решение проблемы
-
Проверка конфигурации NSS (Name Service Switch): Файл
/etc/nsswitch.conf
определяет порядок получения данных в системе. Убедитесь, что порядок поиска настроен правильно и включает все необходимые источники, например,files
,ldap
,nis
. -
Диагностика LDAP или NIS:
- Проверьте, настроена ли система на использование LDAP или NIS, открыв и изучив такие файлы, как
/etc/ldap.conf
или/etc/yp.conf
. - Установите соединение с сервером LDAP или NIS, чтобы подтвердить, что данные для пользователя userSec присутствуют на сервере.
- Проверьте, настроена ли система на использование LDAP или NIS, открыв и изучив такие файлы, как
-
Перезапуск сетевых интерфейсов и служб:
- Используйте команды
ifdown
иifup
, как предложено, чтобы перезапустить сетевой интерфейс. Это может помочь обновить состояние подключения и синхронизировать данные. - Перезапуск служб ldap или nis (например,
systemctl restart ldap
илиsystemctl restart ypbind
) также может быть полезен.
- Используйте команды
-
Удаление пользователей через удаление LDAP записей:
- Если пользователь хранится в системе LDAP, изменения должны вноситься через LDAP, а не локально. Это может потребовать доступа к менеджеру LDAP с необходимыми правами.
Заключение
Проблема с отображением информации о пользователе при отсутствии его в файловой системе может указывать на использование расширенной системы аутентификации, такой как LDAP или NIS. Необходимо провести тщательную проверку конфигурации и источников данных, чтобы определить причину и исправить ситуацию.