Samba4 ist ein mächtiges Werkzeug. Einige Installations Bundles (u.a. z.B. Zentyal) geben zwar einen guten grafischen Überblick über die verfügbaren Benutzer und Gruppen der Domäne, aber manchmal braucht man als Administrator einen raschen Überblick in der Befehlszeile. Hier hilft wbinfo weiter; Der einzige Schönheitsfehler ist, dass die Information sehr granular ausgewählt und ausgegeben wird.

Ein kleines Bash Script samba4_user_info soll hier nun den Überblick zu verschaffen …

Quellcode samba4_user_info

#!/bin/bash

# Purpose: 	Read a samba4 domain user/group config in one list on command line
#  		and respond with a plain list
# Author:	STD - Markus -> Neubauer (at) std-service com
# Copyright:	© 2016 STD-M.Neubauer
# License:	AGPL v3: http://www.gnu.org/licenses/agpl-3.0.de.html
# Version: 	0.9

# per default use local domain
DOM=`wbinfo --own-domain`

# gather relevant user information
function get_user_info() {

	# get user info in unix passwd style
	wbinfo -i ${1}
	# get user groups
	wbinfo -r ${1} \
	| while read id
	do
		echo -en "\t"
		echo -n $id
		echo -en "\t"
		# get group sid
		SID=`wbinfo -G $id`
		# get group sid to name
		INFO=`wbinfo -s "${SID%% *}"`
		echo -n ${INFO% *}
		echo -en "\t"
		echo ${SID}
	done
	echo -n "${u}"
	echo -en "\t"
	# get user name to sid
	echo `wbinfo -n "${1}"` | cut -d'(' -f1 | tr " " $'\t'

}

# gather relevant group information
function get_group_info() {

	# get group name to sid
	SID=`wbinfo -n "${1}"`
	# get GID of sid
	_ID=`wbinfo -Y ${SID%% *}`
	# get group info in unix group style
	wbinfo --gid-info=${_ID}
	echo -n "${1}"
	echo -en "\t"
	echo ${SID% *} | tr " " $'\t'

}

# print domain info
echo 
echo "SETUP on `date`"
echo
echo 'DOMAIN:'
echo '======='
wbinfo -D ${DOM}
echo

# loop through groups and users
# g ~ groups, u ~ users
for request in g u
do
	if [ $request == 'u' ]
	then
		echo 'USERS:'
		echo '======'
	else
		echo 'GROUPS:'
		echo '======='
	fi

	# get a list of requested type (users/groups)
	wbinfo -${request} \
	| while read -r entry
	do
		echo

		if [ $request == 'u' ]
		then
			get_user_info "${entry#*\\}"
		else
			get_group_info "${entry}"
		fi

	done
	echo
done

# get Zentyal 4.2 users using
if [ -f /var/lib/samba/privatesam.ldb ]
then
	ldbsearch  -H /var/lib/samba/private/sam.ldb
fi

## eof

weitere Zentyal 4.2 Benutzer dokumentiert

Im Zentyal System sind Benutzer für den Admin im Terminal manchmal nicht transparent, besonders wenn man getfacl verwendet. In der ldb gemapped, kann dem System folgende Dokumentation hinzugefügt werden:

groupadd -g 3000002 -r Local_System
useradd -u 3000002 -g Local_System -r -M -N -d /nonexistent -s /bin/false smb-Local_System groupadd -g 3000003 -r smb-Authenticated_Users groupadd -g 3000010 -r Enterprise_Domain_Controllers groupadd -g 3000013 -r smb-Everyone groupadd -g 3000014 -r smb-Network groupadd -g 3000029 -r smb-integrity_level_low

Das ist der schnelle und einfache Weg; Die Alternative über ldbadd ist hier nicht erforderlich, die Konten sind nur relevant für das lokale System, eine Verteilung der Berechtigung ist somit auch nicht erforderlich.