Newsgroup: it.comp.os.linux.sys
Titolo: Problemi Samba PDC + OpenLDAP

Ciao all,
ho tentato, senza riuscirci, di far funzionare un server Samba 3.0.7 (PDC) 
con base utenti su OpenLDAP 2.0.27.
Per l'installazione e la configurazione ho seguito passo passo l'howto di 
IDEALX e tutto č stato configurato correttamente senza errori di alcun tipo. 
I demoni partono e tramite gli smbldap-tools sono in grado di creare account 
utente e workstation.
Il problema č che gli account sembrano essere inusabili dato che Samba non 
li "vede".
Aumentando il log level di samba, ho notato in /var/log/messages il seguente 
messaggio di errore:
smbd[16711]:   failed to bind to server with dn= 
cn=samba,dc=LINUXSRV,dc=work Error: Invalid credentials
Qualcuno esperto mi aiutare a capirci di piu' e risolvere il problema ?
Grazie,
A. 

 A.
Sxiamo bbene! :D
Ciao
DisgustingAngel

 Uhm.. in /etc/openldap e' tutto a posto?
Si, ho configurato tutto come da howto di IDEALX, ldap di per se non mi da 
nessun errore quando creo o rimuovo account (usando smbldap-tools), il 
problema sembra essere samba quando colloquia con ldap. Uso tuttavia il 
condizionale perche' non ne sono certo che il problema sia su Samba. C'e' 
qualcosa di particolare che mi consigli di controllare in /etc/openldap/* ?
ciao
A. 


Una cosa particolare che ho notato dopo aver configurato tutto č che dopo 
aver creato un utente di dominio su LDAP, se tento di effettuare un login 
ssh da altra macchina non riesco ad autenticarmi, mentre se effettuo il 
login sul PDC tramite su -l nomeutente il login funziona perfettamente
Spero qualcuno sia in grado di darmi una mano...
Grazie
A. 

>>> cn=samba,dc=LINUXSRV,dc=work Error: Invalid credentials
allora.. forse c'e' un problema nella riga "ldap admin dn" della conf di
samba 
Fammi saxe
DisgustingAngel

 samba
E' configurata come suggerito dall'howto di IDEALX
ldap admin dn = cn=samba,dc=LINUXSRV,dc=work
L'utente samba su ldap esiste
# samba, DSA, LINUXSRV, work
dn: cn=samba,ou=DSA,dc=LINUXSRV,dc=work
objectClass: organizationalRole
objectClass: top
objectClass: simpleSecurityObject
cn: samba
e la password č stata settata con il comando
ldappasswd -x -h localhost -D "cn=Manager,dc=LINUXSRV,dc=work" -s 
sambasecretpwd \
-W cn=samba,ou=DSA,dc=LINUXSRV,dc=work
Idee ?
Grazie
A.

 Idee ?
Nessuna :(
sorry
DisgustingAngel

 Nessuna :(
Beh, grazie lo stesso, almeno ci hai provato. Ogni tanto leggo post su 
configurazioni Samba e LDAP, ma mi sa che qui tutti sono al mio stesso 
livello di preparazione :-)
A. 


hai configurato male samba. Non si collega all'albero ldap.
-- 
Non c'č piů forza nella normalitŕ, c'č solo monotonia.

 cn: samba
io metterei
ldap admin dn = cn=samba,ou=DSA,dc=LINUXSRV,dc=work
comunque,scusa, questo dn può scrivere in tutto l'albero? Dove salvi gli 
account e i gruppi? Se non li salvi sotto ou=DSA,dc=LINUXSRV,dc=work 
presumo che avrai tanti altri problemini di configurazione....
-- 
Non c'è più forza nella normalità, c'è solo monotonia.

 presumo che avrai tanti altri problemini di configurazione....
Ho seguito l'howto di IDEALX configurando gli accessi su ldap come suggerito 
da loro ...
[lungo]
# users can authenticate and change their password
access to 
attrs=userPassword,sambaNTPassword,sambaLMPassword,sambaPwdLastSet,sambaPwdMustChange
      by dn="cn=samba,ou=DSA,dc=LINUXSRV,dc=work" write
      by dn="cn=smbldap-tools,ou=DSA,dc=LINUXSRV,dc=work" write
      by dn="cn=nssldap,ou=DSA,dc=LINUXSRV,dc=work" write
      by self write
      by anonymous auth
      by * none
# some attributes need to be readable anonymously so that 'id user' can 
answer correctly
access to 
attrs=objectClass,entry,gecos,homeDirectory,uid,uidNumber,gidNumber,cn,memberUid
      by dn="cn=samba,ou=DSA,dc=LINUXSRV,dc=workrg" write
      by dn="cn=smbldap-tools,ou=DSA,dc=LINUXSRV,dc=work" write
      by * read
# somme attributes can be writable by users themselves
access to attrs=description,telephoneNumber
      by dn="cn=samba,ou=DSA,dc=LINUXSRV,dc=work" write
      by dn="cn=smbldap-tools,ou=DSA,dc=LINUXSRV,dc=work" write
      by self write
      by * read
# some attributes need to be writable for samba
access to 
attrs=cn,sambaLMPassword,sambaNTPassword,sambaPwdLastSet,sambaLogonTime,sambaLogoffTime,sambaKickoffTime,sambaPwdCanChange,sambaPwdMustChange,sambaAcctFlags,displayName,sambaHomePath,sambaHomeDrive,sambaLogonScript,sambaProfilePath,description,sambaUserWorkstations,sambaPrimaryGroupSID,sambaDomainName,sambaSID,sambaGroupType,sambaNextRid,sambaNextGroupRid,sambaNextUserRid,sambaAlgorithmicRidBase
      by dn="cn=samba,ou=DSA,dc=LINUXSRV,dc=work" write
      by dn="cn=smbldap-tools,ou=DSA,dc=LINUXSRV,dc=work" write
      by self read
      by * none
# samba need to be able to create the samba domain account
access to dn.base="dc=LINUXSRV,dc=work"
      by dn="cn=samba,ou=DSA,dc=LINUXSRV,dc=work" write
      by dn="cn=smbldap-tools,ou=DSA,dc=LINUXSRV,dc=work" write
      by * none
# samba need to be able to create new users account
access to dn="ou=Users,dc=LINUXSRV,dc=work"
      by dn="cn=samba,ou=DSA,dc=LINUXSRV,dc=work" write
      by dn="cn=smbldap-tools,ou=DSA,dc=LINUXSRV,dc=work" write
      by * none
# samba need to be able to create new groups account
access to dn="ou=Groups,dc=LINUXSRV,dc=work"
      by dn="cn=samba,ou=DSA,dc=LINUXSRV,dc=work" write
      by dn="cn=smbldap-tools,ou=DSA,dc=LINUXSRV,dc=work" write
      by * none
# samba need to be able to create new computers account
access to dn="ou=Computers,dc=LINUXSRV,dc=work"
      by dn="cn=samba,ou=DSA,dc=LINUXSRV,dc=work" write
      by dn="cn=smbldap-tools,ou=DSA,dc=LINUXSRV,dc=work" write
      by * none
# this can be omitted but we leave it: there could be other branch
# in the directory
access to *
      by self read
      by * none
Ho ricontrollato con l'howto e sembra essere tutto corretto.
Ho modificato ldap admin dn di samba come da te giustamente suggerito, ma 
continua a non funzionare...
A. 

 [lungo]
brrr... almeno la radice dell'albero ldap potevi metterla più 
sensata,,,, :-)


 :-)
Ovvero ? :) Perdona l'ignoranza... ne capisco meno di zero di ldap....
Grazie
A. 

> behe, adesso controlla i log, probabilmente avrai un altro errore.
Altra info forse utile a circoscrivere il problema, se dal PDC eseguo
# net rpc testjoin
[2004/12/12 19:55:57, 0] utils/net_rpc_join.c:net_rpc_join_ok(66)
Join to domain 'LINUXSRV' is not valid
oppure
# net ads testjoin
LINUXSRV$@'s password:
[2004/12/12 19:57:11, 0] utils/net_ads.c:ads_startup(183)
  ads_connect: No results returned
Join to domain is not valid
Peraltro quale password devo digitare nell'ultimo caso ?
Grazie
A. 

 Ovvero ? :) Perdona l'ignoranza... ne capisco meno di zero di ldap....
beh, dichiamo che la ou nella radice, ou=DSA, per intenerci è un po' 
inutile, e magari potevi avere qualcosa di più significativo di 
dc=LINUXSRV,dc=work.


 Join to domain 'LINUXSRV' is not valid
eh, che cosa hai alla woce workgroup dentro smb.conf? occhio che non è 
come sotto windows, dove la radice dell'albero ldap determina anche il 
nome del dominio.


 Domanda: non ci dovrebbero essere riferimenti a samba in questo record ?
sì. Un esempio di workstation da me è
dn: uid=telecom08$,ou=Computers,dc=itisrossi,dc=vi,dc=it
objectClass: top
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: sambaSamAccount
cn: telecom08$
sn: telecom08$
uid: telecom08$
uidNumber: 3480
gidNumber: 553
homeDirectory: /dev/null
loginShell: /bin/false
description: Computer
sambaSID: S-1-5-21-4024104158-1992183200-1389257317-7960
sambaPrimaryGroupSID: S-1-5-21-4024104158-1992183200-1389257317-553
displayName: telecom08$
sambaPwdCanChange: 1100685336
sambaPwdMustChange: 
2147483647
sambaNTPassword: 9B0210AC730354CA7972A71B479ED6F0
sambaPwdLastSet: 1100685336
sambaAcctFlags: [W          ]


 /etc/pam.d/ssh?
Ecco il contenuto:
#%PAM-1.0
auth       required     pam_stack.so service=system-auth
auth       required     pam_nologin.so
account    required     pam_stack.so service=system-auth
password   required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth
session    required     pam_limits.so
session    optional     pam_console.so
Rivedendo l'howto che ho seguito pero' mi ha fatto configurare solo 
/etc/pam.d/system-auth
Eppure l'esempio esegue ssh ...
Grazie
A. 

 nome del dominio.
workgroup = LINUXSRV
A. 

> sģ. Un esempio di workstation da me č
Bene (anzi, male :-( )
Gli smbldap-tools dovrebbero essere configurati correttamente dato che 
sembrano funzionare.
Cosa dovrei controllare per verificare i motivi per cui non vengono aggiunti 
i riferimenti a samba nei record delle workstation ?
Gli account computer vengono creati con
smbldap-useradd -w nomepc
A. 

 writes:
T> smbd[16711]:   failed to bind to server with dn= 
T> cn=samba,dc=LINUXSRV,dc=work Error: Invalid credentials
Ho un raffreddore del cavolo addosso che mi abbassa il QI a livelli da
politico, ma azzardo un paio di cosette:
1. sintassi in smb.conf, in particolare  "ldap admin dn": occhio a spazi
   et similia e  occhio che l'utente in slapd.conf  e quello in smb.conf
   siano uguali. Occhio anche che il server LDAP sia quello giusto...
2. smbpasswd -w <password>, l'hai dato  ? Senza quello Samba se lo sogna
   di fare il binding a LDAP.
3. le ACL in slapd.conf consentono il "potere assoluto" all'utente ammi-
   nistrativo ?
Saluti,
Luca Polo.
-- 
Luca...@gest.unipd.it
 --- 
http://www.gest.unipd.it/~jake
----------------------------------------------------------
One Ping to rule them all. One Ping to find them.
One Ping to bring down them all.
And in the darkness crash them.         [The Lord of the Pings]

>ssh č configurato perché prenda gli utenti da ldap? cosa hai in 

senti, io non ho letto il tuo howto, so solo che se vuoi fare andrae ssh 
  con pam ed ldap ti serve qualcosa del tipo
{auth,account,session,password}	sufficient	pam_ldap.so
e cosě ssh si attacca direttamente sull'ldap.


 workgroup = LINUXSRV
boh... quel documento della idealx č cambiato molto, č molto vicino al 
funzionamento di M$ ormai....
hai letto il mio bestemmiario? lě c'č del materiale.
http://www.campana.vi.it/ottavio/Linux
 e lě lo trovi


> hai letto il mio bestemmiario? lě c'č del materiale.
Ce l'ho fatta! :-)
Ora sono riuscito ad aggiungere macchine nel dominio e a creare utenti; mi 
rimane solo un problema da risolvere: dalle macchine M$ non si riesce a 
cambiare la password dell'utente.
Peraltro smbldap-usermod non funziona con il parametro -A 1 che dovrebbe 
consentire agli utenti di cambiare password (attualmente č settato su 0).
A. 

 consentire agli utenti di cambiare password (attualmente č settato su 0).
da me va. perň se ricordo bene č un po' stupido, non cambia il relativo 
campo nell'oggetto ldap ma passa per i campi delle password. Facci caso.


 campo nell'oggetto ldap ma passa per i campi delle password. Facci caso.
Il fatto è che non capisco cosa c'e' che non va ...
[root@linuxsrv root]# smbldap-usershow luciano
dn: uid=luciano,ou=Users,dc=LINUXSRV,dc=work
objectClass: top,inetOrgPerson,posixAccount,shadowAccount,sambaSAMAccount
cn: luciano
sn: luciano
uid: luciano
uidNumber: 1020
gidNumber: 513
homeDirectory: /dati/home/luciano
loginShell: /bin/bash
gecos: System User
description: System User
sambaLogonTime: 0
sambaLogoffTime: 
2147483647
sambaKickoffTime: 
2147483647
sambaPwdCanChange: 0
displayName: System User
sambaSID: S-1-5-21-1161830333-1760410316-736444993-3040
sambaPrimaryGroupSID: S-1-5-21-1161830333-1760410316-736444993-513
sambaLogonScript: luciano.cmd
sambaProfilePath: \\LINUXSRV\profiles\luciano
sambaHomePath: \\LINUXSRV\home\luciano
sambaHomeDrive: Z:
sambaLMPassword: 7B64DC2C5677294EF7E62F36F8DB5AE6
sambaAcctFlags: [U]
sambaNTPassword: 371EA7131A6267C79B3D76A738041604
sambaPwdLastSet: 1102933453
sambaPwdMustChange: 1118485453
userPassword: {SSHA}x9U1inzS5VRU6SltIc115qzVRDXLIvRa
[root@linuxsrv root]# smbldap-usermod -A 1 luciano
Effettivamente sambaPwdCanChange resta a 0 e non viene cambiato:
[root@linuxsrv root]# smbldap-usershow luciano
dn: uid=luciano,ou=Users,dc=LINUXSRV,dc=work
objectClass: top,inetOrgPerson,posixAccount,shadowAccount,sambaSAMAccount
cn: luciano
sn: luciano
uid: luciano
uidNumber: 1020
gidNumber: 513
homeDirectory: /dati/home/luciano
loginShell: /bin/bash
gecos: System User
description: System User
sambaLogonTime: 0
sambaLogoffTime: 
2147483647
sambaKickoffTime: 
2147483647
displayName: System User
sambaSID: S-1-5-21-1161830333-1760410316-736444993-3040
sambaPrimaryGroupSID: S-1-5-21-1161830333-1760410316-736444993-513
sambaLogonScript: luciano.cmd
sambaProfilePath: \\LINUXSRV\profiles\luciano
sambaHomePath: \\LINUXSRV\home\luciano
sambaHomeDrive: Z:
sambaLMPassword: 7B64DC2C5677294EF7E62F36F8DB5AE6
sambaAcctFlags: [U]
sambaNTPassword: 371EA7131A6267C79B3D76A738041604
sambaPwdLastSet: 1102933453
sambaPwdMustChange: 1118485453
userPassword: {SSHA}x9U1inzS5VRU6SltIc115qzVRDXLIvRa
sambaPwdCanChange: 0
[root@linuxsrv root]#
Quando l'utente tenta di cambiare la password dalla sua macchina W2000
ottiene il messaggio che manca l'autorizzazione (tuttavia sembra che il
comando venga eseguito, prova che non ho fatto io direttamente).
Hai idea di cosa puo' essere ?!
Grazie
A.

> Il fatto è che non capisco cosa c'e' che non va ...
I log spesso aiutano...
Dec 14 10:10:46 linuxsrv smbd[1156]: [2004/12/14 10:10:46, 0]
auth/pampass.c:smb_pam_passchange(848)
Dec 14 10:10:46 linuxsrv smbd[1156]:   smb_pam_passchange: PAM: Password
Change Failed for user luciano!
Queste le righe di smb.conf che dovrebbero interessare:
   null passwords = no
   encrypt passwords = yes
   update encrypted = yes
   unix password sync = yes
   passwd program = /usr/sbin/smbldap-passwd -o %u
   passwd chat = *new*password* %n\n *new*password* %n\n *successfully*
   pam password change = yes
   obey pam restrictions = no
Cosa c'e' che non va ?!
A.

>Il fatto č che non capisco cosa c'e' che non va ...

manca .pl alla fine del nome dello script di cambio password? Inoltre 
metterei ldap passwd sync = yes


 metterei ldap passwd sync = yes
E' settato, non ti avevo riportato la riga perche' era un po' piu' su nel
file di config insieme ai parametri ldap che per completezza ti riporto di
seguito
   ldap suffix = dc=LINUXSRV,dc=work
   ldap admin dn = cn=samba,ou=DSA,dc=LINUXSRV,dc=work
   ldap ssl = yes
   ldap passwd sync = yes
   ldap delete dn = yes
   ldap user suffix = ou=Users
   ldap group suffix = ou=Groups
   ldap machine suffix = ou=Computers
;   ldap idmap suffix = ou=Users
;   ldap filter = (&(objectclass=sambaSamAccount)(uid=%u))
   add user script = /usr/sbin/smbldap-useradd -m "%u"
   add machine script = /usr/sbin/smbldap-useradd -w "%u"
   add group script = /usr/sbin/smbldap-groupadd -p "%g"
   delete user script = /usr/sbin/smbldap-userdel "%u"
   delete group script = /usr/sbin/smbldap-groupdel "%g"
   add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
   delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
   set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
Idee ?
Grazie
A.

 Idee ?
prova a togliere le ", io non le uso

 Idee ?
forse mi sono perso qualche pezzo del thread, ma il comando smbldap-passwd
se dato da utente normale, funziona?
non è che gli utenti non hanno i privilegi di scrittura sul campo
password del campo ldap.
ciao!

> prova a togliere le ", io non le uso
Stessa cosa.... manca l' "autorizzazione", sarà mica un settaggio di ldap ?! 

 password del campo ldap.
Ottima osservazione, dove dovrei controllare i privilegi per scrivere sul 
campo della password ? :)