#!/bin/bash ## users while read -d '' record; do sambaSID=$(echo "$record" | sed -n 's/^sambaSID: \(.*\)/\1/p') uidNumber=$(echo "$record" | sed -n 's/^uidNumber: \(.*\)/\1/p') if [ -n "$uidNumber" ]; then echo "## Tying to add idmapping of sid $sambaSID to uid $uidNumber" cat <<%EOF | ldbadd -H /var/lib/samba/private/idmap.ldb 2>/dev/null dn: CN=$sambaSID cn: $sambaSID objectClass: sidMap objectSid: $sambaSID type: ID_TYPE_UID xidNumber: $uidNumber distinguishedName: $sambaSID %EOF if ! [ $? == 0 ]; then echo "## Tying to update idmapping of sid $sambaSID to uid $uidNumber" cat <<%EOF | ldbmodify -H /var/lib/samba/private/idmap.ldb dn: CN=$sambaSID changetype: modify replace: type type: ID_TYPE_UID - replace: xidNumber xidNumber: $uidNumber - %EOF fi fi done < <(univention-ldapsearch -x '(&(objectClass=sambaSamAccount)(sambaSID=*))' sambaSID uidNumber | sed 's/^$/\x0/') ## groups while read -d '' record; do sambaSID=$(echo "$record" | sed -n 's/^sambaSID: \(.*\)/\1/p') gidNumber=$(echo "$record" | sed -n 's/^gidNumber: \(.*\)/\1/p') if [ -n "$gidNumber" ]; then echo "## Tying to add idmapping of sid $sambaSID to gid $gidNumber" cat <<%EOF | ldbadd -H /var/lib/samba/private/idmap.ldb 2>/dev/null dn: CN=$sambaSID cn: $sambaSID objectClass: sidMap objectSid: $sambaSID type: ID_TYPE_UID xidNumber: $gidNumber distinguishedName: $sambaSID %EOF if ! [ $? == 0 ]; then echo "## Tying to update idmapping of sid $sambaSID to gid $uidNumber" cat <<%EOF | ldbmodify -H /var/lib/samba/private/idmap.ldb dn: CN=$sambaSID changetype: modify replace: type type: ID_TYPE_UID - replace: xidNumber xidNumber: $gidNumber - %EOF fi fi done < <(univention-ldapsearch -x '(&(objectClass=sambaGroupMapping)(sambaSID=*))' sambaSID gidNumber | sed 's/^$/\x0/')