J'essaie d'ajouter un utilisateur local à un système CentOS 6.3 qui utilise ldap pour l'authentification Samba, mais je suis bloqué par l'entrée existante de l'utilisateur dans ldap.
[root@samba ~]# adduser wchandy
adduser: user 'wchandy' already exists
[root@samba ~]# useradd wchandy
useradd: user 'wchandy' already exists
L'utilisateur n'est pas déjà un utilisateur local :
[root@edgar2 ~]# grep wchandy /etc/passwd
Mais il s'agit d'un utilisateur Samba dans ldap :
[root@edgar2 ~]# smbldap-usershow wchandy | grep uid
dn: uid=wchandy,ou=people,dc=ucsc,dc=edu
uid: wchandy
uidNumber: 30490
adduser n'a pas d'option locale. Comment faire pour que adduser fonctionne correctement pour ajouter des utilisateurs locaux en présence d'une authentification ldap.
Autres éléments à prendre en compte :
- Il y a actuellement des utilisateurs locaux qui partagent un uid avec une entrée ldap (avec un numéro d'uid différent) qui peuvent accéder à samba et ssh indépendamment.
- Non, je ne veux pas éditer l'utilisateur directement dans /etc/passwd et /etc/group. J'aimerais résoudre le problème sous-jacent. De plus, l'entrée locale interfère avec l'accès à samba.
- Non, je ne veux pas dépendre de ldap pour la connexion ssh locale.
- Non, je ne veux pas utiliser un uid différent pour l'utilisateur.
J'ai initialement configuré mon authentification samba-ldap avec la commande pratique (mais apparemment irréversible) authconfig :
[root@samba ~]# authconfig --enableshadow --enablemd5 --enableldap \
--enableldapauth --enableldaptls --enablemkhomedir \
--ldapserver=dir.mydomain.com --ldapbasedn="dc=mydomain,dc=com" \
--enablelocauthorize --updateall
Mon fichier /etc/sysconfig/authconfig ressemble à ceci :
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
Ma configuration samba a été migrée d'un système RHEL4.x vers CentOS 6.3. Maintenant, au lieu de l'amalgame maladroit de nss, pam et je ne sais quoi, CentOS 6.x utilise sssd, une solution simple et efficace.
Mon fichier /etc/sssd/sssd.conf ressemble à ceci :
[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
Merci pour votre aide. Si je peux faire fonctionner mon authentification locale et samba-ldap indépendamment, je serai ravi.
MISE À JOUR : Bien qu'il y ait quelques solutions de rechange raisonnablement suffisantes ci-dessous, voici une paraphrase des conseils que j'ai reçus des experts de la liste sssd_users : "Oui, cela a pu fonctionner dans les versions antérieures du système d'exploitation utilisant nss et pam, mais ce n'était pas la meilleure pratique d'autoriser les UID partagés. Les systèmes plus récents utilisant sssd empêchent cela". Alors que mon cas d'utilisation était parfaitement valable, mon système empêchait intentionnellement ce que je voulais faire.
Cependant, je n'ai jamais trouvé le moyen de désactiver ou d'annuler l'un des nombreux changements apportés par authconfig à mon système. Donc, si les paramètres que j'ai donnés à authconfig étaient erronés, il n'y avait pas de retour en arrière possible.