adduser говорит, что пользователь существует, когда пользователь не существует

Как говорит субъект, я пытаюсь добавить нового пользователя. Когда я запускаю команду, он говорит, что пользователь уже существует. Но поиск в / etc / passwd, / etc / group и / etc / shadow показывает, что пользователь не существует.

Выполнение команды на моей локальной машине работает просто отлично. Я использую Ubuntu 11.10 на обоих.

Вот мои терминальные команды и вывод:

root@ws-prod-www-01:~# useradd -s /sbin/nologin -m -d /var/www/html/atc -g 33 -u 10141 atc
useradd: user 'atc' already exists
root@ws-prod-www-01:~# grep atc /etc/passwd
speech-dispatcher:x:111:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh
root@ws-prod-www-01:~# grep atc /etc/shadow
speech-dispatcher:!:15259:0:99999:7:::
root@ws-prod-www-01:~# grep atc /etc/group
root@ws-prod-www-01:~# 

Я также попробовал:

root@ws-prod-www-01:~# adduser --shell /sbin/nologin --home /var/www/html/atc --gid 33 --uid 10141 atc
Warning: The home dir /var/www/html/atc you specified already exists.
adduser: The user `atc' already exists.
root@ws-prod-www-01:~# 

Есть мысли?

7
задан 16 February 2012 в 23:29

4 ответа

Попробуйте набрать в терминале следующее

0
ответ дан 16 February 2012 в 23:29

В моем случае, /etc/nsswitch.conf имел это для passwd:

passwd:     files winbind

Пользователь был в Active Directory, поэтому winbind видел «существующую» учетную запись пользователя в AD.

Running:   # service winbind stop

Затем запуск useradd позволил мне добавить учетную запись пользователя.

0
ответ дан 16 February 2012 в 23:29

Есть ли причина, по которой вы указываете uid, а не позволяете системе выбрать один для вас? Вы можете увидеть, используется ли выбранный вами идентификатор, выполнив grep '10141' /etc/passwd. Если это так, то сообщение об ошибке, безусловно, немного вводит в заблуждение: /

Также вполне возможно, что ваша система распознает пользователей, которых нет в /etc/passwd - например, с помощью LDAP. Один быстрый способ проверить это - выполнить id atc и посмотреть, распознает ли система это. Другим способом будет getent passwd atc, который также покажет вам пользователей, которых система распознает, а кто нет в /etc/passwd. Или вы можете еще раз проверить, используется ли uid с getent passwd 10141. (Вы также можете запустить getent passwd, чтобы получить полный список записей.) Подробнее о getent .

Чтобы увидеть, откуда могут появиться эти пользователи, вы можете взглянуть на /etc/nsswitch.conf ( man-страница ) - строка, начинающаяся с passwd, покажет вам, где ваша система ищет пользователей. Общие значения по умолчанию - files и compat, хотя более сложные установки могут иметь несколько значений, включая такие, как ldap, dns и winbind. files означает стандартные файлы, включая /etc/passwd.

Мне не очень понятно точное значение compat, но мое чтение справочной страницы nsswitch.conf предполагает, что это комбинация files и nis. nis - это Сетевая информационная служба , которая в настоящее время в значительной степени заменена, но может повлиять на вашу систему.

0
ответ дан 16 February 2012 в 23:29

Как было предложено в одном из приведенных выше ответов, взгляните на файл вашей библиотеки NSS /etc/nsswitch.conf, чтобы проверить, ищет ли система пользователя в настройках типа LDAP. Если это так, вы можете выполнить одно из следующих действий, чтобы устранить проблему:

  1. Удалить пользователя с сервера ldap.

  2. Удалите ссылку на ldap из файла /etc/nsswitch.conf, чтобы библиотека NSS не искала пользователя на сервере ldap.

  3. Оставьте пользователя в ldap как есть, но создайте того же пользователя в системе с помощью команды luseradd.

    luseadd myuser

Посмотрите на эту статью https://www.easyaslinux.com/quick-fix/user-already-exists-error-when-user-doesnt-exist-on-the -system/ для подробных инструкций.

0
ответ дан 4 July 2020 в 15:57

Другие вопросы по тегам:

Похожие вопросы: