Невозможно добавить локального пользователя в систему с использованием ldap auth для samba [закрыто]

Попытка добавить локального пользователя в CentOS 6.3, которая использует ldap для аутентификации Samba, но заблокирована существующей записью пользователя в ldap.

[root@samba ~]# adduser wchandy
adduser: user 'wchandy' already exists

[root@samba ~]# useradd wchandy
useradd: user 'wchandy' already exists

Пользователь еще не является локальным пользователем:

[root@edgar2 ~]# grep wchandy /etc/passwd

Но он является пользователем Samba в ldap:

[root@edgar2 ~]# smbldap-usershow wchandy | grep uid
dn: uid=wchandy,ou=people,dc=ucsc,dc=edu
uid: wchandy
uidNumber: 30490

adduser не имеет локальной опции. Как заставить adduser работать правильно для добавления локальных пользователей при наличии аутентификации ldap.

Другие моменты, на которые следует обратить внимание:

  • В настоящее время есть локальные пользователи, которые используют uid совместно с записью ldap (с другим uidNumber), которые могут получить доступ к samba и ssh независимо.
  • Нет, я не хочу редактировать пользователя напрямую в / etc / passwd и /etc/group. Я хочу исправить основную проблему. Плюс локальный вход мешает доступу к самбе.
  • Нет, я не хочу полагаться на ldap для локального входа по ssh.
  • Нет, я не хочу использовать другой uid для пользователя.

Изначально я установил свою аутентификацию samba-ldap с помощью удобной (но, похоже, необратимой) команды authconfig:

[root@samba ~]# authconfig --enableshadow --enablemd5 --enableldap \
--enableldapauth --enableldaptls --enablemkhomedir \
--ldapserver=dir.mydomain.com --ldapbasedn="dc=mydomain,dc=com" \
--enablelocauthorize --updateall

Мой / etc / sysconfig / authconfig выглядит так:

IPADOMAINJOINED=no
USEMKHOMEDIR=yes
USEPAMACCESS=no
CACHECREDENTIALS=yes
USESSSDAUTH=no
USESHADOW=yes
USEWINBIND=no
PASSWDALGORITHM=sha512
FORCELEGACY=no
USEFPRINTD=yes
USEHESIOD=no
FORCESMARTCARD=no
USEDB=no
USELDAPAUTH=yes
IPAV2NONTP=no
USELDAP=yes
USECRACKLIB=yes
USEIPAV2=no
USEWINBINDAUTH=no
USESMARTCARD=no
USELOCAUTHORIZE=yes
USENIS=no
USEKERBEROS=no
USESYSNETAUTH=no
USESSSD=no
USEPASSWDQC=no

Моя конфигурация samba была перенесена с RHEL4.x систему на CentOS 6.3. Теперь вместо беспорядочного мэшапа nss, pam и неизвестно чего в CentOS 6.x используется довольно простой и удобный sssd.

Мой /etc/sssd/sssd.conf выглядит так:

[domain/default]

cache_credentials = True
#cache_credentials = False
ldap_search_base = dc=mydomain,dc=com
krb5_realm = EXAMPLE.COM
krb5_server = kerberos.example.com
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://dir.mydomain.com/
ldap_tls_cacertdir = /etc/openldap/cacerts
#ldap_tls_reqcert = allow

entry_cache_timeout = 5

debug_level = 31

[sssd]
config_file_version = 2
services = nss, pam
# SSSD will not start if you do not configure any domains.
# Add new domain configurations as [domain/<NAME>] sections, and
# then add the list of domains (in the order you want them to be
# queried) to the "domains" attribute below and uncomment it.
# domains = LDAP
domains = default

#debug_level = 31

[nss]

[pam]

debug_level = 31

Спасибо за помощь. Если я смогу заставить мою локальную аутентификацию и аутентификацию samba-ldap работать независимо, я буду в восторге.

ОБНОВЛЕНИЕ: Несмотря на то, что ниже приведены некоторые достаточно достаточные обходные пути, вот краткий обзор совета, который я получил от экспертов из списка sssd_users: «Да, это могло работать в более ранних версиях ОС с использованием nss и pam, но это не так. лучший способ разрешить использование общих UID.Новые системы, использующие sssd, предотвращают это ». Хотя мой вариант использования был вполне допустимым, моя система намеренно препятствовала тому, что я хотел сделать.

Однако я так и не нашел способа отменить или отменить какое-либо из многих изменений, внесенных authconfig в мою систему. Так что, если параметры, которые я дал authconfig, были неправильными, пути назад не было.

2
задан 6 March 2014 в 08:37
2 ответа

Ни один из этих двух обходных путей не является оптимальным, но они действительно дают системным администраторам возможность двигаться вперед, если они оказываются в сложной ситуации, когда LDAP и локальный файл passwd блокируют друг друга.

Обходной путь 1: Я создал локального пользователя с другим UID (именем пользователя), чтобы предоставить ssh-доступ человеку, у которого уже была запись LDAP / Samba. Возможно, самое глупое решение для системного администратора, которое я когда-либо делал.

Обходной путь 2: Немного сложнее, но сводится к добавлению локального пользователя с тем же uidNumber, что и в LDAP.

  1. Найдите uidNumber LDAP с помощью getent, ldapsearch или smbldap-usershow
  2. Временно отключите пользователь в LDAP, чтобы добавить локального пользователя без конфликтов
  3. Создайте локальную учетную запись, соответствующую uidNumber с LDAP
  4. Повторно включите пользователя в LDAP

Оба эти действия работают, но ни один из них не решает основную проблему, позволяющую аутентификации использовать LDAP исключительно для Samba auth и / etc / passwd для локальной аутентификации. Но в отсутствие другого решения этого придется.

1
ответ дан 3 December 2019 в 11:46

Мой последний ответ был плохим, не обращайте на него внимания.

Я считаю, что ваш единственный вариант - это ручное редактирование / etc / passwd ( vipw is предпочтительнее, потому что это избавляет вас от ваших собственных ошибок). Параметр -o позволяет вам создать несколько имен для одного UID, но не существует эквивалентной опции для указания passwd игнорировать уже существующее имя при выполнении поиска NSS.

getent passwd покажет вам, как uids каскадируются после добавления пользователя; первая запись побеждает. Убедитесь, что uid идентичен, чтобы избежать проблем с изменением разрешений. (ваши примеры не включают синтаксис -u )

1
ответ дан 3 December 2019 в 11:46

Теги

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