[MYDOC_SMB]
comment = Cartella documenti personalizzati per utenti
path = /mnt/samba/mydoc_smb/%U
browsable = yes
available = yes
writable = yes
printable = no
copy = perm_template
valid users = %U
A questo punto occorre però creare le cartelle di ogni singolo utente, che devono avere come nome il relativo login, e assegnare i diritti a tutte le cartelle in modo che siano di proprietà esclusiva dell'utente stesso. Su un sistema con OpenLDAP è possibile eseguire il seguente script per ottenere lo scopo:
#!/bin/bash
SEARCH_CMD=`which ldapsearch`
SEARCH_OPTIONS=" -x uid "
GREP_CMD=`which grep`
GREP_OPTIONS=" uid:"
AWK_CMD=`which awk`
AWK_OPTIONS="'{print \$2;}' "
EVAL_CMD="eval"
MKDIR_CMD=`which mkdir`
MKDIR_OPTIONS=" -p "
MYDOC_ROOT="/mnt/samba/mydoc_smb"
CHOWN_CMD=`which chown`
CHMOD_CMD=`which chmod`
CHMOD_OPTIONS=" 777 "
SUCCESSES=0
FAILURES=0
for utente in `$EVAL_CMD "$SEARCH_CMD $SEARCH_OPTIONS | $GREP_CMD $GREP_OPTIONS | $AWK_CMD $AWK_OPTIONS" `
do
# devo ottenere il gruppo di questo utente
SEARCH_OPTIONS_2=" -x \"(&(objectClass=posixGroup)(memberUid=$utente))\" "
GREP_OPTIONS_2=" cn: "
echo -en "Processo utente <$utente>..."
dstDir=${MYDOC_ROOT}/${utente}
$MKDIR_CMD $MKDIR_OPTIONS $dstDir > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo -en "ok\n"
# devo cambiare il proprietario della directory. Siccome la directory potrebbe
# contenere piu' gruppi, devo ciclare su ognuno e assegno i permessi dell'ultimo gruppo.
for gruppo in `$EVAL_CMD "$SEARCH_CMD $SEARCH_OPTIONS_2 | $GREP_CMD $GREP_OPTIONS_2 | $AWK_CMD $AWK_OPTIONS" `
do
$CHOWN_CMD $utente:$gruppo $dstDir > /dev/null 2>&1
done
$CHMOD_CMD $CHMOD_OPTIONS $dstDir > /dev/null 2>&1
SUCCESSES=$(( SUCCESSES + 1 ))
else
echo -en "KO\n"
FAILURES=$(( FAILURES + 1 ))
fi
done
echo -en "\n\n\nFinito:\n\t $SUCCESSES processati correttamente,\n\t $FAILURES falliti\n"
In sostanza tramite ldapsearch si va a cercare ogni utente nel sistema, dopdoiché si effettua una ricerca per trovare i gruppi a cui questo utente appartiene. Siccome un utente può appartenere a più gruppi, come scelta implementativa si tiene valido l'ultimo gruppo trovato. Viene creata la directory e vengono impostati i permessi e il proprietario della directory stessa.
Nessun commento:
Posta un commento