尝试将本地用户添加到正在使用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的情况下添加本地用户。
其他要考虑的事情:
我最初设置我的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/passwd ( vipw是首选,因为它可以帮助你避免自己的错误)。 -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的本地用户。
这两个工作,但都没有解决允许身份validation使用LDAP专用于Samba身份validation和/ etc / passwd本地身份validation的基本问题。 但是如果没有另一个解决scheme,这将不得不做。