Prima di tutto, occorre decidere a quali gruppi su Linux dovranno coincidere i gruppi di base di Windows per il dominio, che sono "domain admins", "domain users", "domain guests". Una mappatura civile potrebbe essere questa:
Gruppo Windows | Gruppo Linux | ||
Domain Admins | ntadmins | ||
Domain users | users | ||
Domain Guests | nogroup |
Anche se non voglio che l'utente "root" venga usato in Samba (vedi in seguito il paragrafo "utilizzo dei privilegi per gli utenti"), e` necessario crearlo in samba (dopo averlo aggiunto al gruppo ntadmins in linux) per motivi di amministrazione.
E` possibile creare anche altri gruppi, ovviamente, ma questi sono i minimi necessari perche` il tutto funzioni.
Per mappare i gruppi e` opportuno creare un semplice shell script da tenere in seguito per riferimento (o per ricreare i mapping), da mettere, per esempio, in /etc/samba.
net groupmap add ntgroup="Domain Admins" unixgroup=ntadmins rid=512 type=d net groupmap add ntgroup="Domain Users" unixgroup=users rid=513 type=d net groupmap add ntgroup="Domain Guests" unixgroup=nogroup rid=514 type=d
Eseguendo questo script e poi eseguendo il comando net groupmap list
si dovrebbero vedere i seguenti mapping:
Domain Guests (S-1-5-21-219693454-829537487-2401495533-514) -> nogroup Domain Admins (S-1-5-21-219693454-829537487-2401495533-512) -> ntadmins Domain Users (S-1-5-21-219693454-829537487-2401495533-513) -> users
Tutti i gruppi non appartenenti al dominio (quindi che non iniziano per "domain") non vanno mappati, o meglio li si puo` anche mappare, ma non servono a nulla.
Volendo aggiungere altri gruppi oltre a quelli elencati prima, occorre ovviamente aggiungere i gruppi in Linux (ed eventualmente inserirvi gli utenti). Questo e` sufficiente allo scopo di usare i gruppi per limitare l'accesso ai files sharati da Samba, ma non so se sia sufficiente nel caso in cui samba faccia da PDC per dei member servers i quali a loro volta devono fare uso delle definizioni dei gruppi fatte sul PDC per le loro ACL.
Se ho capito bene (e` da verificare) in questo ultimo caso e` necessario mappare anche i gruppi aggiuntivi. Nella mappatura inoltre si puo` anche fare uso di nomi non validi su Linux (con gli spazi, per dire).
Per esempio, per creare e mappare un gruppo di nome "amministrazione" da usare sul dominio Windows, si fa cosi`:
addgroup amministrazione net groupmap add ntgroup="Amministrazione" unixgroup=amministrazione type=d
Se non si vogliono avere in samba tutti gli inutili utenti di sistema (tutti con la password disabilitata) e` possibile cancellarli prima di iniziare a creare gli utenti "buoni". Questo one-liner serve a rasare il database degli utenti (prende la lista degli utenti e li cancella uno per uno)
pdbedit -L | awk -F ":" '{print ($1)}' | xargs -n 1 pdbedit -x -u
Solo DOPO aver creato i mapping dei gruppi, si possono creare gli utenti su Samba, con il comando pdbedit
o piu` semplicemente con smbpasswd -a <username>
. Naturalmente gli utenti devono esistere gia` con lo stesso username in /etc/passwd.
pdbedit -a -u root pdbedit -r -u root -c "[X ]"
''In principio, Root creo` l'utente "administrator" e un utente normale, e vide se gli erano venuti bene''
pdbedit -a -u administrator -U 500 pdbedit -r -u administrator -c "[X ]"
pdbedit -L -v administrator
(SID giusto!)smbpasswd -a <username>
pdbedit -L -v <username>
Nota: Fino a ieri la documentazione di Samba riportava il RID dell'utente administrator come "512", adesso e` "500".
Da samba 3.0.11 in poi dovrebbe essere possibile dare a utenti o gruppi i privilegi che tipicamente erano solo di root (come ad esempio aggiungere macchine al dominio) pertando dovrebbe essere possibile (e sensato) creare un utente administrator con SID 500 (come piace a windows) e poi dargli i privilegi tipi di root, cosi`:
net rpc rights grant <utente> <privilego>
Per esempio, per dare all'utente administrator il privilegio di aggiungere workstation al dominio, cosa utile in ogni caso, si fa:
net rpc rights grant administrator SeMachineAccountPrivilege
Per sapere quali privilegi sono disponibili:
net rpc rights list
Per sapere quali utenti hanno quali privilegi:
net rpc rights list accounts
I privilegi disponibili, destinati ad aumentare di numero nel futuro, sono:
SeMachineAccountPrivilege Add machines to domain SeTakeOwnershipPrivilege Take ownership of files or other objects SeBackupPrivilege Back up files and directories SeRestorePrivilege Restore files and directories SeRemoteShutdownPrivilege Force shutdown from a remote system SePrintOperatorPrivilege Manage printers SeAddUsersPrivilege Add users and groups to the domain SeDiskOperatorPrivilege Manage disk shares
Perche` questo funzioni, occorre avere in smb.conf la dicitura enable privileges = yes
nella sezione [global].
Una volta creati i mapping dei gruppi di base, e almeno l'utente administrator, e` possibile iniziare a provare a joinare una workstation al dominio ed eventualmente verificare che si riesca a fare login sulla WS sia con l'utente administrator che con altri utenti del dominio.