PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LDAP User SAmba Atribute geben ????



blade74
01.04.04, 22:31
Hallo ,
ich habe hier mehrere Benuter die in Ldap einen PosixAcount haben
wenn ich nun smbpasswd -a ausführe bekomme ich immer die Fehlermeldung

test:~ # smbpasswd -a test3
New SMB password:
Retype new SMB password:
Failed to initialise SAM_ACCOUNT for user test3
Failed to modify password entry for user test3


ldif File der Person

cn test3
gidNumber 100
homeDirectory /home/test3
loginShell /bin/bash
objectClass top
objectClass shadowAccount
objectClass posixAccount
objectClass account
shadowLastChange 11660
shadowMax 99999
shadowWarning 0
uid test3
uidNumber 500
userPassword [B@99176f


Aber auch andersherum wenn ich mit smbpasswd -a einen neuen User anlege ist es mir hinterher nicht möglich diesen Benuzer einen posixAccount zu geben

Bekomme ständif object class violation

so sieht bei mir ein Samba Benutzer aus

objectClass sambaSamAccount
objectClass account
sambaAcctFlags [U ]
sambaLMPassword
sambaNTPassword
sambaPrimaryGroupSID S-1-5-21-399387668-2831621932-2410598413-1201
sambaPwdCanChange 1080734894
sambaPwdLastSet 1080734894
sambaPwdMustChange 2147483647
sambaSID S-1-5-21-399387668-2831621932-2410598413-114304
uid test2

emba
02.04.04, 00:03
da dies hier öfters gefragt wird und ich selbst auf die schnelle keine befriedigende lösung gefunden habe, habe ich mir ein eigenes script gebaut



emba@emba:~> cat adduser.sh

###############################################
# #
# script to add posix and samba users in LDAP #
# #
# (c) Michael Gasch 2003 #
# #
###############################################


#!/bin/bash

# authorization
echo -e "\n===================================="
echo " Please enter LDAP-Manager Password"
echo -e "====================================\n"
read -s password


ldapwhoami -x -w "$password" 2>/dev/null >&1

if [ $? -gt 0 ]; then
echo -e "\nWrong password - aborting...\n"
exit 0

else

# suche letzte userid und erhoehe um 1
UserID=$((`ldapsearch -x|grep -i uidnumber:|awk -F" " '{print $2}'|sort -n|tail -n 1` + 1))

if [ $UserID -le 499 ]
then
UserID="500"
fi

USERNAME=$1
# posix settings
# GroupID -> 500 for "users"
GroupID="500"
HOME_DIR=/data/$USERNAME/home
PROF_DIR=/data/$USERNAME/profile
# ldap settings
OU="users"
DOMAIN="your.domain.org"
BASEDN="dc=your,dc=domain,dc=org"
LDAP_MAN="cn=manager,dc=your,dc=domain,dc=org"
LDAP_MAN_PW="$password"
# samba settings
PDC_NAME="sambapdc"
DRIVE="H:"
ACC_CONTROL="[UX]"
LEVEL=0
RID=$(($UserID * 2 + 1000))
DOMAINNAME="samba"
DOMAINSID=`net getlocalsid $DOMAINNAME -d0|awk -F": " '{print $2}'`


#########################################
# #
# section for adding posix-user #
# in LDAP #
# #
#########################################

/bin/rm -rf /tmp/ldap
/bin/mkdir /tmp/ldap

if [ `ldapsearch -xb "uid=$USERNAME,ou=$OU,$BASEDN"|grep -c numEntries` -gt 0 ]
then
echo -e "User already present...skipping\n"
exit 0

else

/bin/cat <<EOF>/tmp/ldap/useradd.ldif

# $USERNAME, $OU, $DOMAIN
dn: uid=$USERNAME,ou=$OU,$BASEDN
objectclass: posixAccount
objectclass: person
objectclass: sambaSamAccount
cn: $USERNAME
uid: $USERNAME
sn: $USERNAME
displayName: $USERNAME
uidNumber: $UserID
gidNumber: $GroupID
sambaSID: $DOMAINSID-$RID
sambaPrimaryGroupSID: $DOMAINSID-513
homeDirectory: $HOME_DIR
loginShell: /bin/false
userPassword:: none
sambaAcctFlags: [U ]
sambaHomeDrive: U:
sambaHomePath: \\\\$PDC_NAME\\$USERNAME
sambaLogonScript: $USERNAME.bat

EOF


# create dirs - no profiles
/bin/touch /var/lib/samba/netlogon/$USERNAME.bat
/bin/chmod 700 /var/lib/samba/netlogon/$USERNAME.bat
/bin/mkdir -p $HOME_DIR
# /bin/mkdir -p $PROF_DIR
/usr/bin/ldapadd -D $LDAP_MAN -x -w "$LDAP_MAN_PW" -f /tmp/ldap/useradd.ldif
/bin/chmod 700 $HOME_DIR
# give ldap insert some time - fix problems like "user xxx.xxx unknown"
sleep 2;
/bin/chown $USERNAME.$GroupID $HOME_DIR
# /bin/chmod 700 $PROF_DIR
# /bin/chown $USERNAME.$GroupID $PROF_DIR

# set rights (incl. heredity) to: 0700 on home-dir
# does not work, if top-dir inherits no default acls to
# newly created directories
/usr/bin/setfacl -m u::rwx,g::---,o::---,default:user::rwx,default:group::---,default:other::---,default:mask::rwx $HOME_DIR

# /usr/bin/setfacl -m u::rwx,g::---,o::---,default:user::rwx,\
# default:group::---,default:other::---,default:mask::rwx $PROF_DIR


# clean up
/bin/rm -rf /tmp/ldap

smbpasswd -a $USERNAME test1234

echo -e "!!! Don't forget to change default smb and unix password of user $USERNAME !!!\n"
echo -e " !!! Default password for both is "test1234" !!!\n"

exit 0

fi

fi



greez

DaQuark
05.04.04, 11:49
Hi emba,

ich war mal so dreist und hab mir dein Script kopiert ;) Ich möchte es nun an meine Bedürfnisse anpassen. Dazu reicht es doch, wenn ich diesen Abschnitt anpasse - oder muss ich noch was anderes anpassen ?


USERNAME=$1
# posix settings
# GroupID -> 500 for "users"
GroupID="100"
HOME_DIR=/home/$USERNAME/
PROF_DIR=/usr/local/samba/profiles/$USERNAME/
# ldap settings
OU="People"
DOMAIN="testserver.dom"
BASEDN="dc=testserver,dc=dom"
LDAP_MAN="cn=root,dc=testserver,dc=dom"
LDAP_MAN_PW="$password"
# samba settings
PDC_NAME="TESTSERVER.DOM"
DRIVE="Z:"
ACC_CONTROL="[UX]"
LEVEL=0
RID=$(($UserID * 2 + 1000))
DOMAINNAME="testserver.dom"
DOMAINSID=`net getlocalsid $DOMAINNAME -d0|awk -F": " '{print $2}'`


Wenn ich nun das Script aufrufe und mein Passwort angebe kommt immer Wrong Password. Wo hab ich was falsch gemacht ?

THX

emba
05.04.04, 15:42
du führst doch das script als root aus
ldap verlangt immer für einen BIND die DN, welche ich im script nicht angegeben habe, weil ich im homeverzeichnis von root die DN in die datei .ldaprc geschrieben habe

lege einfach diese datei mit dem entsprechenden inhalt an oder wandle folgende scriptzeile um

<alt>
ldapwhoami -x -w "$password" 2>/dev/null >&1

<neu>
ldapwhoami -x -D "cn=manager,dc=your,dc=domain,dc=org" -w "$password" 2>/dev/null >&1

nimmt aber an, dass der LDAP Verwalter unter dieser DN firmiert

an dem script musst du im prinzip nur die variablen deinen gegebenheiten anpassen, der rest sollte dynamisch geschehen

das script wurde dahingegen geändert, dass ich keine roaming profiles verwende und die zeilen dafür entweder auskommentiert oder gelöscht (im ldif) wurden

um das zu ändern musst du nur die entsprechenden attribute im ldif-template hinzufügen, den profil pfad anpassen (variable) und die zeilen auskommentieren, die etwas mit profilen zu tun haben

greez

blade74
06.04.04, 16:47
ich bekomme immer einen Fehlermeldung

dn:cn=Manager,o=no-ip
ldap_bind: Invalid credentials (49)
setfacl: /data//home: Operation not supported

??

Was soll das bedeuten ?

emba
06.04.04, 20:25
@blade

wenn das

ldapwhoami -x -D "cn=manager,dc=your,dc=domain,dc=org" -W

nicht funktioniert, dann stimmt etwas mit deinem verwalteraccount oder dessen passwort (slapd.conf) für ldap nicht - da kann das script auch nicht erfolgreich durchlaufen (fehler mit setfacl ... )

greez

blade74
07.04.04, 08:49
wenn ich nur den Befel eingebe erhalte ich


# ldapwhoami -x -D "cn=Manager,o=no-ip" -W
Enter LDAP Password:
dn:cn=Manager,o=no-ip

linux:~/incoming #

emba
07.04.04, 15:21
@blade

okay, du verwendest also mein script und er gibt dir diesen fehler aus, ja?

der bind klappt ja schon
und du hast auch in meinem script die entsprechende zeile angepasst (siehe alt-neu) ???

greez

blade74
07.04.04, 16:09
@emba

Hallo,
also ich habe das Skript angepast

meiner Meinung nach erfolgt ja auch die Autentifizierung am LDAP

hier mal die Komplette Meldung




====================================
Please enter LDAP-Manager Password
====================================

dn:cn=Manager,o=no-ip
ldap_bind: Invalid credentials (49)
setfacl: /home: Operation not supported
New SMB password:
Retype new SMB password:
Failed to initialise SAM_ACCOUNT for user test1234.
Failed to modify password entry for user test1234
!!! Don't forget to change default smb and unix password of user !!!

!!! Default password for both is test1234 !!!

emba
07.04.04, 16:18
aja, danke für die ausführliche beschreibung

du hast auch die VARIABLE "BINDDN" angepasst?
wahrscheinlich hängt er beim insert (ldapadd)
arbeitest du mit ACLs in der slapd.conf?

kannst du mal mit einem temporären ldif aus der kommandozeile ein ldapadd machen?

greez

blade74
07.04.04, 16:43
@emba

habe gerade im skript noch ein Fehler endeckt

jetzt erhalte ich diese Fehlermeldung


====================================
Please enter LDAP-Manager Password
====================================

dn:cn=Manager,o=no-ip
adding new entry "uid=,ou=user,o=no-ip"
ldapadd: update failed: uid=,ou=user,o=no-ip
ldap_add: Invalid DN syntax (34)
additional info: invalid DN

setfacl: /home: Operation not supported

blade74
07.04.04, 16:46
@emba

habe gerade im skript noch ein Fehler endeckt (beim anpassen nicht aufgepast )

jetzt erhalte ich diese Fehlermeldung


====================================
Please enter LDAP-Manager Password
====================================

dn:cn=Manager,o=no-ip
adding new entry "uid=,ou=user,o=no-ip"
ldapadd: update failed: uid=,ou=user,o=no-ip
ldap_add: Invalid DN syntax (34)
additional info: invalid DN

setfacl: /home:


hier mal ein ldif auszug

dn: o=no-ip
objectClass: organization
o: no-ip

dn: ou=tigersworld,o=no-ip
objectClass: organizationalunit
ou: tigersworld

dn: cn=Manager,ou=tigersworld,o=no-ip
objectClass: person
cn: Manager
sn: Manager
description: "LDAP Manager"

dn: ou=user,ou=tigersworld,o=no-ip
ou: user
objectClass: organizationalUnit

dn: ou=group,ou=tigersworld,o=no-ip
ou: group
objectClass: organizationalUnit


dn: ou=rechner,ou=tigersworld,o=no-ip
objectClass: organizationalUnit
ou: rechner

dn: uid=test,ou=user,ou=tigersworld,o=no-ip
uid: test
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}58yXIHFcMuj9Y
shadowLastChange: 11660
shadowMax: 99999
shadowWarning: 0
uidNumber: 500
gidNumber: 100
homeDirectory: /home/roland
loginShell: /bin/bash
cn: test


dn: sambaDomainName=TIGGERSWORLD,ou=tigersworld,o=no-ip
sambaDomainName: TIGGERSWORLD
sambaSID: S-1-5-21-793689834-1346722071-2963399784
sambaAlgorithmicRidBase: 1000
objectClass: sambaDomain
sambaNextUserRid: 41000
sambaNextGroupRid: 41001


und das sagt das log


Apr 7 17:58:13 linux slapd[929]: conn=645 fd=18 ACCEPT from IP=192.168.1.16:33877 (IP=0.0.0.0:389)
Apr 7 17:58:13 linux slapd[1305]: conn=645 op=0 BIND dn="cn=Manager,o=no-ip" method=128
Apr 7 17:58:13 linux slapd[1305]: conn=645 op=0 BIND dn="cn=Manager,o=no-ip" mech=simple ssf=0
Apr 7 17:58:13 linux slapd[1305]: conn=645 op=0 RESULT tag=97 err=0 text=
Apr 7 17:58:13 linux slapd[1305]: conn=645 op=2 UNBIND
Apr 7 17:58:13 linux slapd[1305]: conn=645 fd=18 closed
Apr 7 17:58:14 linux slapd[929]: conn=646 fd=18 ACCEPT from IP=192.168.1.16:33878 (IP=0.0.0.0:389)
Apr 7 17:58:14 linux slapd[1296]: conn=646 op=0 BIND dn="" method=128
Apr 7 17:58:14 linux slapd[1296]: conn=646 op=0 RESULT tag=97 err=0 text=
Apr 7 17:58:14 linux slapd[1305]: conn=646 op=1 SRCH base="o=no-ip" scope=2 filter="(objectClass=*)"
Apr 7 17:58:14 linux slapd[1305]: conn=646 op=1 SEARCH RESULT tag=101 err=0 nentries=21 text=
Apr 7 17:58:14 linux slapd[1296]: conn=646 op=2 UNBIND
Apr 7 17:58:14 linux slapd[1296]: conn=646 fd=18 closed
Apr 7 17:58:14 linux slapd[929]: conn=647 fd=18 ACCEPT from IP=192.168.1.16:33884 (IP=0.0.0.0:389)
Apr 7 17:58:14 linux slapd[1305]: conn=647 op=0 BIND dn="" method=128
Apr 7 17:58:14 linux slapd[1305]: conn=647 op=0 RESULT tag=97 err=0 text=
Apr 7 17:58:14 linux slapd[1305]: do_search: invalid dn (uid=,ou=user,o=no-ip)
Apr 7 17:58:14 linux slapd[1305]: conn=647 op=1 RESULT tag=101 err=34 text=invalid DN
Apr 7 17:58:14 linux slapd[929]: conn=648 fd=19 ACCEPT from IP=192.168.1.16:33885 (IP=0.0.0.0:389)
Apr 7 17:58:14 linux slapd[1305]: conn=647 op=2 UNBIND
Apr 7 17:58:14 linux slapd[1305]: conn=647 fd=18 closed
Apr 7 17:58:14 linux slapd[1305]: conn=648 op=0 BIND dn="cn=Manager,o=no-ip" method=128
Apr 7 17:58:14 linux slapd[1305]: conn=648 op=0 BIND dn="cn=Manager,o=no-ip" mech=simple ssf=0
Apr 7 17:58:14 linux slapd[1305]: conn=648 op=0 RESULT tag=97 err=0 text=
Apr 7 17:58:14 linux slapd[1305]: do_add: invalid dn (uid=,ou=user,o=no-ip)
Apr 7 17:58:14 linux slapd[1305]: conn=648 op=1 RESULT tag=105 err=34 text=invalid DN
Apr 7 17:58:14 linux slapd[1305]: conn=648 op=2 UNBIND
Apr 7 17:58:14 linux slapd[1305]: conn=648 fd=19 closed
Apr 7 17:58:16 linux slapd[1296]: conn=635 op=5 SRCH base="ou=user,ou=tigersworld,o=no-ip" scope=1 filter="(&(objectClass=posixAccount)(uid=.500))"
Apr 7 17:58:16 linux slapd[1296]: conn=635 op=5 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass
Apr 7 17:58:16 linux slapd[1296]: conn=635 op=5 SEARCH RESULT tag=101 err=0 nentries=0 text=
Apr 7 17:58:16 linux slapd[1296]: conn=635 op=6 SRCH base="ou=user,ou=tigersworld,o=no-ip" scope=1 filter="(&(objectClass=posixGroup)(cn=500))"
Apr 7 17:58:16 linux slapd[1296]: conn=635 op=6 SRCH attr=cn userPassword memberUid uniqueMember gidNumber
Apr 7 17:58:16 linux slapd[1296]: conn=635 op=6 SEARCH RESULT tag=101 err=0 nentries=0 text=

emba
07.04.04, 17:07
okay, du scheinst das script passend deinen gegebenheiten geändert zu haben (kannst es ja mal posten)

du musst das script so aufrufen, dass es funzt

./adduser.sh username

;)

greez

blade74
07.04.04, 17:23
ES Läuft

waren noch Fehler in der LDAP BASE

@emba DANKE