Samba 4 AD: Gruppe mit Berechtigungen für Domänenbeitritt versehen

Ein auf Samba 4 basierendes Active Directory kann mit den (graphischen) Tools von Microsoft verwaltet werden. Oftmals ist es aber ganz praktisch, wenn man auf dem Server selbst die eine oder andere Aufgabe versehen kann ohne sich durch die AD-Tools auf einem Windows-Rechner quälen zu müssen.

Eine dieser ganz simplen und oft benötigten Aufgaben ist das Einrichten einer Gruppe, deren Mitglieder das Recht erhalten, Rechner in die Domäne aufzunehmen. Tatsächlich ist diese Aufgabe mit samba-tool zu bewältigen, auch wenn die Lösung alles andere als naheliegend ist.

Wir verwenden dazu das folgende Skript:

#!/bin/sh

user=Administrator
stty -echo
read -p "Password for $user: " pw
echo ""
stty echo
read -p "Group: " group

objectsid=`ldbsearch -H ldap://localhost  \
-U "Administrator%$pw" "(&(objectclass=group)(cn=$group))" \
objectSid | \
sed -e ':a;$!{N;ba};s/\n //g' -e 's/.*objectSid: //' -e 's/\n.*//' -n -e '/^S-1/p'`
if [ "$objectsid" = "" ]; then
    echo Group $group not found
    exit 1
fi
echo "Group SID: $objectsid"

dn=`ldbsearch -H ldap://localhost  \
-U "Administrator%$pw" "(&(objectclass=container)(cn=computers))" \
dn | \
sed -e ':a;$!{N;ba};s/\n //g' -e 's/.*dn: //' -e 's/\n.*//' -n -e '/=/p'`
if [ "$dn" = "" ]; then
    echo "Computers container not found"
    exit 1
fi
echo "Computers DN: $dn"

samba-tool dsacl set --action=allow --objectdn="$dn" \
--sddl="(OA;CI;CCDC;BF967A86-0DE6-11D0-A285-00AA003049E2;;$objectsid)"\
"(OA;CIIO;SWWP;F3A64788-5306-11D1-A9C5-0000F80367C1;BF967A86-0DE6-11D0"\
"-A285-00AA003049E2;$objectsid)(OA;CIIO;SWRPWP;72E39547-7B18-11D1-ADEF"\
"-00C04FD8D5CD;BF967A86-0DE6-11D0-A285-00AA003049E2;$objectsid)(OA;CIIO;"\
"RPWP;4C164200-20C0-11D0-A768-00AA006E0529;BF967A86-0DE6-11D0-A285-"\
"00AA003049E2;$objectsid)(OA;CIIO;CR;00299570-246D-11D0-A768-00AA006E0529;"\
"BF967A86-0DE6-11D0-A285-00AA003049E2;$objectsid)"

Um das Skript zu nutzen muss bereits eine Gruppe existieren. Deren Name wird vom Skript ebenso abgefragt wie das Passwort des Administrators. Per ldbsearch wird dann die SID der Gruppe und die DN des Computers-Container eruiert. Mittels samba-tool werden für die gefundene Gruppe die nötigen Berechtigungen erteilt.

Referenz: Delegating domain join privileges in Samba 4 from the command line (or not) sowie Active Directory Permissions : Security Descriptors