2 votes

Impossible d'ajouter un utilisateur local sur le système en utilisant l'authentification ldap pour samba

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.

1voto

Ma dernière réponse était mauvaise, n'en tenez pas compte.

Je pense que votre seule option est l'édition manuelle de /etc/passwd ( vipw est préférable car elle vous évite de commettre vos propres erreurs). Les -o vous permet de créer plusieurs noms pour un UID, mais il n'y a pas d'option équivalente pour dire à passwd d'ignorer le nom déjà existant lorsqu'il effectue une recherche dans le SSN.

getent passwd vous montrera comment les uids se succèdent une fois que vous avez ajouté l'utilisateur ; la première entrée l'emporte. Assurez-vous que l'uid est identique pour éviter les problèmes de changement de permissions. (vos exemples n'incluaient pas -u syntaxe)

1voto

Joshua Russell Points 101

Aucune de ces deux solutions n'est optimale, mais elles permettent aux administrateurs système d'aller de l'avant s'ils se trouvent dans la situation délicate où LDAP et le fichier passwd local se bloquent l'un l'autre.

Solution 1 : J'ai créé un utilisateur local avec un UID (nom d'utilisateur) différent pour donner un accès ssh à une personne qui avait déjà une entrée LDAP/Samba. C'est probablement la solution d'administrateur système la plus bizarre que j'ai faite depuis des années.

Solution 2 : C'est un peu plus compliqué, mais cela revient à ajouter l'utilisateur local avec le même numéro uid que dans LDAP.

  1. Consulter le numéro d'utilisateur LDAP avec getent, ldapsearch ou smbldap-usershow
  2. Désactiver temporairement l'utilisateur dans LDAP afin d'ajouter l'utilisateur local sans conflit
  3. Créer le compte local correspondant à l'uidNumber avec LDAP
  4. Réactiver l'utilisateur dans LDAP

Ces deux solutions fonctionnent, mais aucune ne résout le problème sous-jacent qui consiste à permettre à l'authentification d'utiliser LDAP exclusivement pour l'authentification Samba et /etc/passwd pour l'authentification locale. Mais en l'absence d'une autre solution, il faudra s'en contenter.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X