Installazione di Samba come PDC su Debian Squeeze (sambra 3.5.6)
Installazione di Samba
- Installare come minimo il pacchetto "samba", eventualmente anche swat.
- Durante l'installazione, se la procedura di installazione chiede se si vuole creare il database utenti di Samba partendo da /etc/passwd, la risposta giusta e` "NO", a differenza di quando vi chiedono "Sei tu forse un dio?".
Riferendosi a Samba/ConfigDiBase, farsi il proprio smb.conf.
Preparazione dei gruppi
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.
Creazione del mapping dei gruppi
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.
Aggiunta di gruppi oltre a quelli di base
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
Creazione degli utenti
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.
- Prima di tutto, aggiungere l'utente "root" a samba:
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
- creare su linux un utente administrator (e` un normale user!) e aggiungerlo al gruppo ntadmins
- aggiungerlo a samba cosi`:
pdbedit -a -u administrator -U 500 pdbedit -r -u administrator -c "[X ]"
verificare se e` venuto bene con il comando pdbedit -L -v administrator (SID giusto!)
- Dargli almeno il privilegio di aggiungere le workstations al dominio (vedi il paragrafo successivo)
- creare su Linux un utente normale qualsiasi
aggiungerlo a Samba con smbpasswd -a <username>
verificare se e` venuto bene con il comando pdbedit -L -v <username>
Nota: Fino a ieri la documentazione di Samba riportava il RID dell'utente administrator come "512", adesso e` "500".
Utilizzo dei privilegi per gli utenti
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].
Conclusione
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.