== 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 }}}. 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 }}} * verificare se e` venuto bene con il comando {{{pdbedit -L -v }}} '''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 }}} 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.