Не могу добавить локального пользователя в систему, используя 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 ответа
Ни один из этих двух обходных путей не является оптимальным, но они дают системным администраторам возможность двигаться вперед, если они оказываются в затруднительной ситуации, когда LDAP и локальный файл passwd блокируют друг друга.
Обходной путь 1: я создал локального пользователя с другим UID (именем пользователя), чтобы дать ssh-доступ человеку, который уже имел запись LDAP/Samba. Возможно, самое грязное решение сисадмина, которое я делал за последние годы.
Обходной путь2: Немного сложнее, но все сводится к добавлению локального пользователя с тем же номером uidNumber, что и в LDAP.
- Поиск LDAP uidNumber с помощью getent, ldapsearch или smbldap-usershow
- Временно отключите пользователя в LDAP, чтобы добавить локального пользователя без конфликтов
- Создайте локальную учетную запись, соответствующую uidNumber с LDAP
- Повторно включите пользователя в LDAP
Оба они работают, но ни один из них не решает основную проблему разрешения аутентификации использовать LDAP исключительно для аутентификации Samba и /etc/passwd для локальной аутентификации. Но при отсутствии другого решения это придется делать.
Мой последний ответ был плохим, игнорируй это.
Я считаю, что ваш единственный вариант - ручное редактирование /etc/passwd
(vipw
предпочтительнее, потому что это спасает вас от ваших собственных ошибок). -o
опция позволяет вам создать несколько имен для одного UID, но нет эквивалентной опции для сообщения passwd
игнорировать имя, уже существующее, когда оно выполняет поиск NSS.
getent passwd
покажет вам, как работает uids после добавления пользователя; первая запись побеждает. Убедитесь, что идентификатор пользователя идентичен, чтобы избежать проблем со сменой разрешений. (ваши примеры не включают -u
синтаксис)