无法在系统上使用ldap auth添加本地用户samba

尝试将本地用户添加到正在使用ldap进行Samba身份validation的CentOS 6.3系统,但受到用户在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 

但是他们是ldap中的Samba用户:

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

adduser没有本地选项。 如何让adduser正常工作以在存在ldap身份validation的情况下添加本地用户。

其他要考虑的事情:

  • 目前有本地用户共享一个带有ldap条目(具有不同的uidNumber)的用户,他们可以独立访问samba和ssh。
  • 不,我不想将用户直接编辑到/ etc / passwd和/ etc / group中。 我想解决潜在的问题。 此外,本地条目干扰访问桑巴。
  • 不,我不想依赖ldap进行本地sshlogin。
  • 不,我不想为用户使用不同的uid。

我最初设置我的samba-ldap身份validation用方便(但似乎不可逆转)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 

我的sambaconfiguration从RHEL4.x系统迁移到CentOS 6.3。 现在,而不是nss和pam的kludgy mashup,谁知道什么,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身份validation独立工作,我会很兴奋。

更新:虽然下面有一些相当充足的解决方法,但是我从sssd_users列表的专家那里得到了一些build议:“是的,它可能在早期的操作系统版本中使用nss和pam工作,这不是最好的做法允许共享的UIDs,使用sssd的较新的系统阻止了这一点。“ 虽然我的用例是完全有效的,但是我的系统通过意图阻止了我想要做的事情。

然而,我从来没有find一种方法来解除或反转authconfig给我系统带来的许多变化。 所以,如果我给authconfig的参数是错误的,就没有回头路了。

我最后的回答是不好的,忽略了。

我相信你唯一的select是手动编辑/etc/passwdvipw是首选,因为它可以帮助你避免自己的错误)。 -o选项允许您为一个UID创build多个名称,但是没有相当的选项告诉passwd在执行NSS查找时忽略已存在的名称。

getent passwd将向您展示如何添加用户后的uids级联; 第一个入场胜利。 确保uid是相同的,以避免转移权限的问题。 (你的例子不包括-u语法)

这两种解决方法都不是最佳的,但是如果系统pipe理员发现自己处于LDAP和本地passwd文件互相阻塞的粘滞状态,它们会给系统pipe理员一种前进的方式。

解决方法1:我使用不同的UID(用户名)创build了一个本地用户,以便对已经拥有LDAP / Samba项的用户进行ssh访问。 可能是我几年来所做的最亲切的系统pipe理员解决scheme。

解决方法2:稍微复杂一点,但是要添加与LDAP中相同的uidNumber的本地用户。

  1. 使用getent,ldapsearch或smbldap-usershow查找LDAP uidNumber
  2. 暂时禁用LDAP中的用户,以添加本地用户而不发生冲突
  3. 使用LDAP创build与uidNumber匹配的本地帐户
  4. 在LDAP中重新启用用户

这两个工作,但都没有解决允许身份validation使用LDAP专用于Samba身份validation和/ etc / passwd本地身份validation的基本问题。 但是如果没有另一个解决scheme,这将不得不做。