<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TommyBlue.it &#187; samba</title>
	<atom:link href="http://www.tommyblue.it/tag/samba/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tommyblue.it</link>
	<description>Bombardare per la pace è un po' come trombare per la verginità...</description>
	<lastBuildDate>Tue, 24 Jan 2012 09:34:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Realizzare un dominio con Samba 3 come Primary Domain Controller</title>
		<link>http://www.tommyblue.it/2011/02/14/realizzare-un-dominio-con-samba-3-come-pdc/</link>
		<comments>http://www.tommyblue.it/2011/02/14/realizzare-un-dominio-con-samba-3-come-pdc/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 23:10:57 +0000</pubDate>
		<dc:creator>TommyBlue</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[controller di dominio]]></category>
		<category><![CDATA[pdc]]></category>
		<category><![CDATA[samba]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.tommyblue.it/?p=1063</guid>
		<description><![CDATA[Questa guida può essere vista come un aggiornamento della vecchia guida Realizzare un dominio Windows con Linux: Samba come PDC, ma la procedura è cambiata sostanzialmente, soprattutto per l&#8217;aggiornamento del server LDAP. Ho testato il tutto su Ubuntu 8.04 e 8.10. Si può &#8220;ciecamente&#8221; seguire i vari passaggi per ottenere un dominio funzionante in pochi [...]]]></description>
			<content:encoded><![CDATA[<p>Questa guida può essere vista come un aggiornamento della vecchia guida <a title="Realizzare un dominio Windows con Linux: Samba come PDC" href="2008/02/06/realizzare-un-dominio-windows-con-linux-samba-come-pdc/"><em>Realizzare un dominio Windows con Linux: Samba come PDC</em></a>, ma la procedura è cambiata sostanzialmente, soprattutto per l&#8217;aggiornamento del server LDAP. Ho testato il tutto su Ubuntu 8.04 e 8.10.</p>
<p>Si può &#8220;ciecamente&#8221; seguire i vari passaggi per ottenere un dominio funzionante in pochi minuti, volendo invece approfondire si può leggere i due link principali che ho seguito: OpenLDAP è stato installato seguendo <a href="http://help.ubuntu-it.org/10.04/ubuntu/serverguide/it/openldap-server.html" target="_blank">questa guida</a> e configurato per l&#8217;autenticazione seguendo quest&#8217;<a href="https://help.ubuntu.com/10.04/serverguide/C/openldap-server.html#openldap-auth-config" target="_blank">altra guida</a>. Al termine dell&#8217;articolo ho comunque riportato tutta una serie di link che ho visitato.</p>
<p>Prima di iniziare scegliete il nome del dominio. Può essere un semplice <em>TOMMYBLUE</em> oppure un più complesso <em>BASE.TOMMYBLUE.IT</em>. Non cambia molto, basta &#8220;tradurre&#8221; correttamente il tutto in <em>ldappese</em>, quindi <em>TOMMYBLUE</em> sarà <em>dc=tommyblue</em> mentre <em>BASE.TOMMYBLUE.IT</em> diventa <em>dc=base,dc=tommyblue,dc=it</em>. Io per semplicità ho usato soltanto <em>DOMAIN</em>, fate le opportune sostituzioni. Scegliete anche una password e sostituitela dove io ho messo <em>PASSWORD</em>.</p>
<h2>Installazione di SLAPD</h2>
<p>Si inizia installando i pacchetti necessari:</p>
<pre>sudo apt-get install slapd ldap-utils</pre>
<p>E inserendo alcuni schemi base:</p>
<pre>sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif</pre>
<p>Creiamo poi un file <em>backend.ldif</em> con:</p>
<pre>dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb

dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=DOMAIN
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=DOMAIN
olcRootPW: PASSWORD
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=DOMAIN" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=DOMAIN" write by * read</pre>
<p>E inseriamolo nel db:</p>
<pre>sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif</pre>
<p>Creiamo <em>frontend.ldif</em>:</p>
<pre>dn: dc=DOMAIN
objectClass: top
objectClass: dcObject
objectclass: organization
o: MyDomain
dc: DOMAIN
description: My Domain's LDAP

dn: cn=admin,dc=DOMAIN
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: PASSWORD

dn: ou=People,dc=DOMAIN
objectClass: organizationalUnit
ou: People

dn: ou=Groups,dc=DOMAIN
objectClass: organizationalUnit
ou: Groups

dn: uid=john,ou=People,dc=DOMAIN
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: john
sn: Doe
givenName: John
cn: John Doe
displayName: John Doe
uidNumber: 10000
gidNumber: 10000
userPassword: password
gecos: John Doe
loginShell: /bin/bash
homeDirectory: /home/john
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
mail: john.doe@mymaildomain.com
postalCode: 31000
l: Toulouse
o: Example
mobile: +33 (0)6 xx xx xx xx
homePhone: +33 (0)5 xx xx xx xx
title: System Administrator
postalAddress:
initials: JD

dn: cn=example,ou=Groups,dc=DOMAIN
objectClass: posixGroup
cn: example
gidNumber: 10000</pre>
<p>e inseriamolo nel db:</p>
<pre>sudo ldapadd -x -D cn=admin,dc=DOMAIN -W -f frontend.ldif</pre>
<p>Aggiungiamo degli indici per velocizzare le query, creiamo il file <em>uid_index.ldif</em>:</p>
<pre>dn: olcDatabase={1}hdb,cn=config
add: olcDbIndex
olcDbIndex: uid eq,pres,sub</pre>
<p>E inseriamoli:</p>
<pre>sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f uid_index.ldif</pre>
<p>È necessario anche convertire gli schema al nuovo formato, creiamo quindi il file <em>schema_convert.conf</em>:</p>
<pre>include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema</pre>
<p>Creiamo una directory temporanea in cui salvare l&#8217;output:</p>
<pre>mkdir -p ./tmp/ldif_output</pre>
<p>E convertiamo il file schema in LDIF:</p>
<pre>slapcat -f schema_convert.conf -F ./tmp/ldif_output -n0 -s "cn={5}dyngroup,cn=schema,cn=config" &gt; ./tmp/cn=dyngroup.ldif</pre>
<p>Il file <em>./tmp/cn\=dyngroup.ldif</em> va modificato in questo modo:</p>
<pre>dn: cn=dyngroup,cn=schema,cn=config
...
cn: dyngroup</pre>
<p>E rimosse le seguenti righe dalla fine del file:</p>
<pre>structuralObjectClass: olcSchemaConfig
entryUUID: 10dae0ea-0760-102d-80d3-f9366b7f7757
creatorsName: cn=config
createTimestamp: 20080826021140Z
entryCSN: 20080826021140.791425Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20080826021140Z</pre>
<p>Infine inseriamo gli schema nel db:</p>
<pre>sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ./tmp/cn\=dyngroup.ldif</pre>
<p>Con questo comando possiamo verificare il tutto:</p>
<pre>sudo ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn</pre>
<h2>Autenticazione LDAP</h2>
<p>Come sempre installiamo il necessario:</p>
<pre>sudo apt-get install libnss-ldap</pre>
<p>In fase di configurazione dobbiamo rispondere:</p>
<pre>ldap://127.0.0.1:389/
dc=DOMAIN
3
yes
no
cn=admin,dc=DOMAIN
PASSWORD</pre>
<p>Configuriamo anche le autenticazioni NSS e PAM:</p>
<pre>sudo auth-client-config -t nss -p lac_ldap
sudo pam-auth-update</pre>
<p>Con <em>getent</em> possiamo verificare il funzionamento dell&#8217;autenticazione. Il sistema infatti adesso ha unito i gruppi e gli utenti su ldap a quelli in <em>/etc/passwd </em>e <em>/etc/group</em>:</p>
<pre>~$ getent passwd

...
john:x:10000:10000:John Doe:/home/john:/bin/bash

~$ getent group

...
example:*:10000:</pre>
<p>Se non vedete l&#8217;utente <em>john</em> o il gruppo <em>example</em>, avete sbagliato qualcosa :)</p>
<h2>Samba</h2>
<p>Installiamo i pacchetti:</p>
<pre>sudo apt-get install samba samba-doc smbldap-tools</pre>
<p>Inseriamo lo schema samba:</p>
<pre>sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/
sudo gzip -d /etc/ldap/schema/samba.schema.gz</pre>
<p>Creiamo il file <em>samba_schema_convert.conf</em>:</p>
<pre>include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/samba.schema</pre>
<p>E convertiamo gli schema:</p>
<pre>slapcat -f samba_schema_convert.conf -F ./tmp/ldif_output -n0 -s "cn={12}samba,cn=schema,cn=config" &gt; ./tmp/cn=samba.ldif</pre>
<p>Modifichiamo il file <em>./tmp/cn\=samba.ldif</em> sistemando i seguenti attributi:</p>
<pre>dn: cn=samba,cn=schema,cn=config
...
cn: samba</pre>
<p>e rimuovendo le seguenti righe dalla fine del file:</p>
<pre>structuralObjectClass: olcSchemaConfig
entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95
creatorsName: cn=config
createTimestamp: 20080827045234Z
entryCSN: 20080827045234.341425Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20080827045234Z</pre>
<p>Inseriamo il tutto nel db:</p>
<pre>sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ./tmp/cn\=samba.ldif</pre>
<p>Aggiungiamo gli indici, creiamo <em>samba_indexes.ldif</em>:</p>
<pre>dn: olcDatabase={1}hdb,cn=config
add: olcDbIndex
olcDbIndex: uidNumber eq
olcDbIndex: gidNumber eq
olcDbIndex: loginShell eq
olcDbIndex: memberUid eq,pres,sub
olcDbIndex: uniqueMember eq,pres
olcDbIndex: sambaSID eq
olcDbIndex: sambaPrimaryGroupSID eq
olcDbIndex: sambaGroupType eq
olcDbIndex: sambaSIDList eq
olcDbIndex: sambaDomainName eq
olcDbIndex: default sub</pre>
<p>Inseriamoli:</p>
<pre>sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f samba_indexes.ldif</pre>
<h2>smbldap-tools</h2>
<p>Gli <em>smbldap-tools</em> sono degli ottimi script per gestire il tutto, io comunque per la gestione del dominio consiglio l&#8217;utilizzo di LAM ma con <em>smbldap-tools</em> si può popolare velocemente LDAP con i dati necessari e Samba li utilizzerà per aggiungere le macchine che si uniscono al dominio.<br />
Iniziamo quindi configurandoli:</p>
<pre>sudo gzip -d /usr/share/doc/smbldap-tools/configure.pl.gz
sudo perl /usr/share/doc/smbldap-tools/configure.pl</pre>
<p>Dopo l&#8217;ultimo comando vi verranno fatte varie domande che servono a configurare i file che riporto qui di seguito, quindi dategli uno sguardo per capire cosa dovete rispondere.</p>
<p><em>/etc/smbldap-tools/smbldap_bind.conf</em>:</p>
<pre>slaveDN="cn=admin,dc=DOMAIN"
slavePw="PASSWORD"
masterDN="cn=admin,dc=DOMAIN"
masterPw="PASSWORD"</pre>
<p><em>/etc/smbldap-tools/smbldap.conf</em>:</p>
<pre>SID="S-1-5-21-395106984-1667043562-2069293566" (il SID è unico del vostro server, questo è il mio!)
sambaDomain="DOMAIN"
slaveLDAP="127.0.0.1"
slavePort="389"
masterLDAP="127.0.0.1"
masterPort="389"
ldapTLS="0"
verify=""
cafile=""
clientcert=""
clientkey=""
suffix="dc=DOMAIN"
usersdn="ou=People,${suffix}"
computersdn="ou=Computers,${suffix}"
groupsdn="ou=Groups,${suffix}"
idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="sambaDomainName=DOMAIN,${suffix}"
scope="sub"
hash_encrypt="SSHA"
crypt_salt_format=""
userLoginShell="/bin/bash"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
defaultMaxPasswordAge="120"
userSmbHome=""
userProfile=""
userHomeDrive="H:"
userScript="logon.cmd"
mailDomain="mymaildomain.com"
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"</pre>
<p>A questo punto configuriamo anche samba con il suo file <em>/etc/samba/smb.conf</em>. Riporto direttamente l&#8217;output del comando <em>testparm</em> che verifica il ruolo del server Samba e poi stampa il dump del file <em>smb.conf</em>:</p>
<pre>Load smb config files from /etc/samba/smb.conf
rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)
Processing section "[netlogon]"
WARNING: The "share modes" option is deprecated
Processing section "[profiles]"
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC
Press enter to see a dump of your service definitions

[global]
        dos charset = 850
        unix charset = ISO8859-1
        workgroup = DOMAIN
        server string = %h server (Samba, Ubuntu)
        map to guest = Bad User
        obey pam restrictions = Yes
        passdb backend = ldapsam:ldap://127.0.0.1
        pam password change = Yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        unix password sync = Yes
        log level = 3 passdb:5 auth:10 winbind:2
        syslog = 0
        log file = /var/log/samba/log.%m
        max log size = 1000
        smb ports = 139 445
        name resolve order = wins host dns bcast
        time server = Yes
        deadtime = 10
        socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
        load printers = No
        show add printer wizard = No
        add machine script = sudo /usr/sbin/smbldap-useradd -t 0 -w "%u"
        logon script = logon.cmd
        logon path =
        logon drive = H:
        logon home =
        domain logons = Yes
        os level = 65
        preferred master = Yes
        domain master = Yes
        dns proxy = No
        wins support = Yes
        ldap admin dn = cn=admin,dc=DOMAIN
        ldap group suffix = ou=Groups
        ldap idmap suffix = ou=Idmap
        ldap machine suffix = ou=Computers
        ldap passwd sync = yes
        ldap suffix = dc=DOMAIN
        ldap ssl = no
        ldap user suffix = ou=People
        usershare allow guests = Yes
        panic action = /usr/share/samba/panic-action %d
        idmap backend = ldap:ldap://127.0.0.1
        idmap uid = 10000-20000
        idmap gid = 10000-20000
        template shell = /bin/bash
        winbind enum users = Yes
        winbind enum groups = Yes
        nt acl support = No
        case sensitive = No
        dont descend = /proc,/dev,/etc,/lib,/lost+found,/initrd

[netlogon]
        comment = Network Logon Service
        path = /srv/samba/netlogon
        guest ok = Yes
        share modes = No

[profiles]
        comment = Users profiles
        path = /srv/samba/profiles
        create mask = 0600
        directory mask = 0700
        profile acls = Yes
        browseable = No
        browsable = No</pre>
<p>A questo punto popoliamo LDAP:</p>
<pre>sudo smbldap-populate</pre>
<p>Se tutto è andato bene il vostro albero LDAP dovrebbe esser più o meno così:</p>
<p><a href="http://www.tommyblue.it/wp-content/uploads/2011/02/ldap-populate.png" rel="lightbox[1063]"><img class="alignnone size-full wp-image-1068" title="Albero LDAP popolato" src="http://www.tommyblue.it/wp-content/uploads/2011/02/ldap-populate.png" alt="" width="251" height="473" /></a></p>
<p>Prima di terminare creiamo la cartella <em>netlogon</em>:</p>
<pre>sudo mkdir -p /srv/samba/netlogon
sudo touch /srv/samba/netlogon/logon.cmd</pre>
<p>Il file <em>logon.cmd</em> può contenere le istruzioni che volete che i pc Windows eseguano all&#8217;accesso dell&#8217;utente, ad esempio per montare delle condivisioni o settare qualche paramentro.</p>
<p>Riavviamo Samba e impostiamo la password di root:</p>
<pre>sudo stop smbd
sudo start smbd
sudo smbpasswd -w PASSWORD</pre>
<p>Verifichiamo il mappaggio dei gruppi Samba nei gruppi LDAP con il comando <em>net</em>:</p>
<pre>~$ sudo net groupmap list

Domain Admins (S-1-5-21-395106984-1667043562-2069293566-512) -&gt; Domain Admins
Domain Users (S-1-5-21-395106984-1667043562-2069293566-513) -&gt; Domain Users
Domain Guests (S-1-5-21-395106984-1667043562-2069293566-514) -&gt; Domain Guests
Domain Computers (S-1-5-21-395106984-1667043562-2069293566-515) -&gt; Domain Computers
Administrators (S-1-5-32-544) -&gt; Administrators
Account Operators (S-1-5-32-548) -&gt; Account Operators
Print Operators (S-1-5-32-550) -&gt; Print Operators
Backup Operators (S-1-5-32-551) -&gt; Backup Operators
Replicators (S-1-5-32-552) -&gt; Replicators</pre>
<p>Attualmente l&#8217;utente <em>Domain Admin</em> è <em>root</em>, è comodo avere l&#8217;alias in <em>Administrator</em>:</p>
<pre>echo "root = Administrator" &gt; /etc/samba/smbusers</pre>
<p>Abbiamo terminato, possiamo adesso aggiungere il primo pc al dominio!</p>
<h2>Aggiungere un pc Windows al dominio</h2>
<p>In generale si può seguire la <a href="http://support.microsoft.com/?kbid=295017" target="_blank">guida ufficiale Microsoft</a></p>
<p>Accedere al pc, cliccare col tasto destro del mouse su <em>Risorse del computer</em> e poi su <em>Proprietà</em>. Selezionare la scheda <em>Nome computer</em> e premere su <em>Cambia</em>.<br />
Spuntare <em>Membro di Dominio</em> e inserire il nome del dominio <em>DOMAIN</em>.<br />
Alla richiesta inserire username <em>root</em> (o <em>Administrator</em>) e la relativa password.</p>
<h2>Risoluzione dei problemi</h2>
<p>In caso di errore nell&#8217;unione al dominio:</p>
<ul>
<li>Aprire l&#8217;editor delle policy di Sicurezza Locale <em>Start-&gt;Pannello di controllo-&gt;Strumenti di Aministrazione-&gt;Criteri di protezione locali-&gt;Criteri locali-&gt;opzioni di protezione</em></li>
<li>Disabilitare la voce <em>Domain member: Digitally encrypt or sign secure channel (always)</em> (<em>_Membro di dominio: aggiunta crittografia of irma digitale ai dati del canale protetto (sempre)</em>)</li>
<li>Disabilitare la voce <em>Domain member: Disable machine account password changes</em> (<em>Controller di dominio: rifiuta cambio password account computer</em>)</li>
<li>Disabilitare la voce <em>Domain member: Require strong (Windows 2000 or later) session key</em> (<em>Membro di dominio: richiesta chiave di sessione avanzata (Windows 2000 o versioni successive)</em>)</li>
<li>Scaricare il file <em>WinXP_SignOrSeal.reg</em> (qui di seguito) ed eseguirlo per modificare il registro di sistema:</li>
</ul>
<pre>Windows Registry Editor Version 5.00

;
; This registry key is needed for a Windows XP Client to join
; and logon to a Samba domain. Note: Samba 2.2.3a contained
; this key in a broken format which did nothing to the registry -
; however XP reported "registry key imported". If in doubt
; check the key by hand with regedit.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters]
"requiresignorseal"=dword:00000000</pre>
<h2>Funzioni di base</h2>
<p>Qui di seguito riporto alcuni comandi di base per la gestione del dominio, consiglio comunque l&#8217;utilizzo di LAM (ldap-account-manager) che semplifica il tutto.. e parecchio :)</p>
<ul>
<li>Per aggiungere un nuovo utente a LDAP con attributi Samba, digitare quanto segue, sostituendo &#8220;NOME_UTENTE&#8221; con un nome utente reale:</li>
</ul>
<pre>sudo smbldap-useradd -a -P NOME_UTENTE</pre>
<p>L&#8217;opzione -a aggiunge gli attributi Samba, -P chiama l&#8217;utilità smbldap-passwd dopo aver creato l&#8217;utente consentendo di inserire la password per l&#8217;utente.</p>
<ul>
<li>Per rimuovere un utente dalla directory:</li>
</ul>
<pre>sudo smbldap-userdel NOME_UTENTE</pre>
<p>L&#8217;utilità smbldap-userdel è dotata anche di un&#8217;opzione -r per rimuovere la directory home dell&#8217;utente.</p>
<ul>
<li>Per aggiungere un gruppo, usare smbldap-groupadd, sostituendo &#8220;NOME_GRUPPO&#8221; con il nome di un gruppo esistente:</li>
</ul>
<pre>sudo smbldap-groupadd -a NOME_GRUPPO</pre>
<p>Come per smbldap-useradd, l&#8217;opzione -a aggiunge gli attributi Samba.</p>
<ul>
<li>Per aggiungere un utente a un gruppo, usare smbldap-groupmod:</li>
</ul>
<pre>sudo smbldap-groupmod -m NOME_UTENTE NOME_GRUPPO</pre>
<p>Assicurarsi di sostituire NOME_UTENTE con un utente reale. Inoltre, con l&#8217;opzione -m è possibile aggiungere più di un utente alla volta, elencandoli come valori separati da virgola.</p>
<ul>
<li>smbldap-groupmod può essere usato anche per rimuovere un utente da un gruppo:</li>
</ul>
<pre>sudo smbldap-groupmod -x NOME_UTENTE NOME_GRPPO</pre>
<ul>
<li>L&#8217;utilità smbldap-useradd può anche aggiungere degli account macchina:</li>
</ul>
<pre>sudo smbldap-useradd -t 0 -w NOME_MACCHINA</pre>
<p>Sostituire NOME_MACCHINA con il nome della workstation. L&#8217;opzione -t 0 crea un account macchina immediatamente, -w indica di creare l&#8217;utente come account macchina. Notare che l&#8217;opzione add machine script in <em>/etc/samba/smb.conf</em> è stata modificata per usare <em>smbldap-useradd</em>.</p>
<h2>Webografia</h2>
<ul>
<li><a href="http://help.ubuntu-it.org/10.04/ubuntu/serverguide/it/samba-ldap.html" target="_blank">http://help.ubuntu-it.org/10.04/ubuntu/serverguide/it/samba-ldap.html</a></li>
<li><a href="http://help.ubuntu-it.org/10.04/ubuntu/serverguide/it/samba-dc.html" target="_blank">http://help.ubuntu-it.org/10.04/ubuntu/serverguide/it/samba-dc.html</a></li>
<li><a href="https://help.ubuntu.com/10.04/serverguide/C/samba-dc.html" target="_blank">https://help.ubuntu.com/10.04/serverguide/C/samba-dc.html</a></li>
<li><a href="https://help.ubuntu.com/10.04/serverguide/C/samba-ldap.html" target="_blank">https://help.ubuntu.com/10.04/serverguide/C/samba-ldap.html</a></li>
<li><a href="http://it.fon.wikia.com/wiki/Samba_pdc" target="_blank">http://it.fon.wikia.com/wiki/Samba_pdc</a></li>
<li><a href="http://www.areanetworking.it/installazione-di-samba-come-pdc-con-ldap-backend.html" target="_blank">http://www.areanetworking.it/installazione-di-samba-come-pdc-con-ldap-backend.html</a></li>
<li><a href="http://www.finex.org/configurare-samba-su-ubuntu-come-pdc.html" target="_blank">http://www.finex.org/configurare-samba-su-ubuntu-come-pdc.html</a></li>
<li><a href="http://www.pluto.it/files/journal/pj0605/samba3pdc.html" target="_blank">http://www.pluto.it/files/journal/pj0605/samba3pdc.html</a></li>
<li><a href="http://www.openskill.info/infobox.php?ID=552" target="_blank">http://www.openskill.info/infobox.php?ID=552</a></li>
<li><a href="http://wiki.novell.com/index.php/OES_as_PDC" target="_blank">http://wiki.novell.com/index.php/OES_as_PDC</a></li>
<li><a href="http://www.pascal-hacker.de/info/it/sw/ubuntu/pdc.htm" target="_blank">http://www.pascal-hacker.de/info/it/sw/ubuntu/pdc.htm</a></li>
<li><a href="http://tuxnetworks.blogspot.com/2010/07/howto-samba-ldap-on-1004-lucid-short.html" target="_blank">http://tuxnetworks.blogspot.com/2010/07/howto-samba-ldap-on-1004-lucid-short.html</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tommyblue.it/2011/02/14/realizzare-un-dominio-con-samba-3-come-pdc/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Realizzare un dominio Windows con Linux: Samba come PDC</title>
		<link>http://www.tommyblue.it/2008/02/06/realizzare-un-dominio-windows-con-linux-samba-come-pdc/</link>
		<comments>http://www.tommyblue.it/2008/02/06/realizzare-un-dominio-windows-con-linux-samba-come-pdc/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 17:31:34 +0000</pubDate>
		<dc:creator>TommyBlue</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Software Libero]]></category>
		<category><![CDATA[controller di dominio]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[pdc]]></category>
		<category><![CDATA[samba]]></category>

		<guid isPermaLink="false">http://www.tommyblue.it/2008/02/06/realizzare-un-dominio-windows-con-linux-samba-come-pdc/</guid>
		<description><![CDATA[Questo How-To prende spunto dalle guide presenti nella webografia e dalle conoscenze personali per realizzare un Primary Domain Controller (PDC) utilizzando Samba anzich&#233; il costoso e proprietario Windows Server. Ricordo comunque che attualmente con Samba &#232; possibile implementare un Primary Domain Controller di Windows 2000/NT e non un Active Directory Domain di Windows Server 2003. [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.tommyblue.it/wp-content/uploads/2008/02/sambalogo.jpg' alt='Samba' align='left' /></p>
<p> Questo How-To prende spunto dalle guide presenti nella webografia e  dalle conoscenze personali per realizzare un Primary Domain Controller  (PDC) utilizzando <a href="http://www.samba.org">Samba</a> anzich&eacute; il costoso e proprietario Windows Server. Ricordo comunque che  attualmente con Samba &egrave; possibile implementare un Primary Domain  Controller di Windows 2000/NT e non un Active Directory Domain di  Windows Server 2003. Per le mie necessit&agrave; &egrave; comunque pi&ugrave; che  sufficiente. </p>
<p>Nella stesura della guida si &egrave; usato un server con una installazione  base di Debian Etch (al momento versione stabile di Debian). Per  installazione base si intende una installazione effettuata con un cdrom  minimale Debian Etch Netinstall, una sola partizione / oltre alla swap,  l&#8217;installazione del solo pacchetto &#8220;sistema base&#8221; proposto  dall&#8217;installer Debian. Per completare ho installato anche vim e  openssh-server per agire da remoto (dato che devo usare il browser,  altrimenti non e strettamente necessario). In ogni caso una qualsiasi  installazione non comporta sostanziali cambiamenti a questo howto.  Il nome del pc &egrave; <strong>pdc</strong>. </p>
<p><span id="more-108"></span></p>
<h2 id="InstallazionediSamba">Installazione di Samba</h2>
<p> Installiamo subito i pacchetti relativi a Samba nonostante la sua  configurazione sar&agrave; ad un passo successivo. Alcuni componenti infatti  sono necessari prima. </p>
<pre>pdc:~# apt-get install samba smbclient samba-doc  </pre>
<p> Alle domande scegliamo un dominio (io ho scelto <em>TOMMYBLUE</em>) e non usiamo DHCP. Queste configurazioni sono comunque temporanee e dopo verranno ampiamente modificate. </p>
<h2 id="InstallazionediLDAP">Installazione di LDAP</h2>
<p>Proseguiamo con l&#8217;installazione di Open-LDAP, una implementazione  libera del protocollo di servizio di directory LDAP. Su LDAP infatti  verranno mantenuti i dati relativi agli utenti, i computer del dominio  e tutti gli altri necessari. Di default Samba utilizza tdbsam per  gestire questi dati. La guida di Openskills (vedi la webografia)  realizza un PDC utilizzando tdbsam anzich&eacute; LDAP. </p>
<p> Procediamo con l&#8217;installazione: </p>
<pre>pdc:~# apt-get install slapd ldap-utils  </pre>
<p>La password richiesta consentir&agrave; di accedere a qualunque dato  in LDAP, &egrave; quindi necessariamente una password sicura. La mia scelta  per questa guida &egrave; <em>pippo</em> :-) ma chiaramente in ambiente non di sviluppo sar&agrave; molto pi&ugrave; complessa. </p>
<h2 id="ConfigurazionedelserverLDAPslapd">Configurazione del server LDAP slapd</h2>
<p> Spostiamoci subito nella cartella delle configurazioni di LDAP e iniziamo a guardarci intorno: </p>
<pre>pdc:~# cd /etc/ldap
pdc:/etc/ldap# ls
ldap.conf  sasl2  schema  slapd.conf  </pre>
<p> NB. Ho notato che in una diversa installazione di LDAP, sempre su  Debian Etch, il file &acute;ldap.conf&acute; non e&#8217; presente. Non preoccupiamoci  tanto lo creeremo piu&#8217; avanti. </p>
<p> Come prima cosa dobbiamo copiare nella cartella <em>schema</em> lo schema di Samba.   Prima facciamo per&ograve; chiarezza sugli <strong>schema</strong> che, in pratica, definiscono la struttura in cui certi tipi di dati  devono essere salvati e quali, tra questi dati, sono obbligatori o  facoltativi. Gli <a href="http://www.ietf.org/rfc/rfc2252.txt">RFC 2252</a> e <a href="http://www.ietf.org/rfc/rfc2256.txt">RFC 2256</a>,  basati sullo standard X.500, definiscono alcuni schema di base che  contengono attributi relativi a localizzazione, persone,  organizzazioni, gruppi, reti e dispositivi di una rete. Questi schema  sono gi&agrave; presenti nella installazione base di una directory LDAP (nel  nostro caso sono quelli nella cartella <em>schema</em>) mentre attributi aggiuntivi possono essere definiti in ogni momento.  Nel nostro caso lo schema necessario a mantenere i dati di un dominio &egrave; stato installato col pacchetto <em>samba-doc</em>, copiamolo nella cartella <em>schema</em>: </p>
<pre>pdc:/etc/ldap# zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz &gt; /etc/ldap/schema/samba.schema  </pre>
<p> Adesso inseriamo lo schema nel file <em>slapd.conf</em> nella sezione <em>Schema and objectClass definitions</em>: </p>
<pre>include /etc/ldap/schema/samba.schema  </pre>
<p> Nella sezione <em>Indexing options</em> aggiungiamo una serie  di indicizzazioni che ottimizzeranno le interrogazioni per l&#8217;utilizzo  del server Samba (sono opzionali ma utili, la prima riga potrebbe  essere gi&agrave; presente): </p>
<pre>index 	objectClass	eq
index 	uid,uidNumber,gidNumber,memberUid 	eq
index 	cn,mail,surname,givenname	eq,subinitial
index 	sambaSID	eq
index 	sambaPrimaryGroupSID	eq
index 	sambaDomainName	eq  </pre>
<p> Bisogna consentire agli utenti di cambiare non solo la propria password  LDAP, ma anche le password di Samba e contemporaneamente proteggere  tali informazioni da un accesso pubblico sostituendo la riga: </p>
<pre>access to attribute=userPassword,shadowLastChange  </pre>
<p> con: </p>
<pre>access to attrs=userPassword,shadowLastChange,sambaNTPassword,sambaLMPassword  </pre>
<p> Infine aggiungiamo le informazioni per l&#8217;autenticazione (inserendo il dominio e la password scelta in precedenza): </p>
<pre>rootdn          "cn=admin,dc=TOMMYBLUE"
rootpw          "pippo"  </pre>
<p> Controlliamo anche che nelle varie voci di configurazione il dominio preimpostato sia effettivamente <em>dc=TOMMYBLUE</em> Come ultima cosa riavviamo <em>slapd</em> e controlliamo se tutto funziona: </p>
<pre>pdc:/etc/ldap# /etc/init.d/slapd restart
Stopping OpenLDAP: slapd.
Starting OpenLDAP: slapd.
pdc:/etc/ldap# ldapsearch -x
# extended LDIF
#
# LDAPv3
# base &lt;&gt; with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#    

# search result
search: 2
result: 32 No such object  </pre>
<p> Il risultato dell&#8217;ultimo comando deve essere in formato <a href="http://en.wikipedia.org/wiki/LDAP_Data_Interchange_Format">LDIF</a>. Se invece otteniamo un errore di connessione ricontrolliamo tutte le impostazioni e i file di log (di base slapd logga in <em>/var/log/syslog</em>).  Per controllare il funzionamento di slapd pu&ograve; sempre tornare utile  fermare il servizio e farlo partire, anzich&eacute; con gli script standard  Debian, con il comando: </p>
<pre># slapd -d 256  </pre>
<p> In tal modo viene avviato visualizzando varie informazioni di debug a video. </p>
<h2 id="ConfigurazionedelclientLDAP">Configurazione del client LDAP</h2>
<p> Un client LDAP deve conoscere la base di ricerca e l&#8217;indirizzo del server LDAP, possiamo impostarli nel file <em>ldap.conf</em>: </p>
<pre>BASE dc=TOMMYBLUE
URI ldap://localhost  </pre>
<p> A questo punto una nuova ricerca nell&#8217;albero LDAP restituisce un risultato molto pi&ugrave; piacevole: </p>
<pre>pdc:/etc/ldap# ldapsearch -x
# extended LDIF
#
# LDAPv3
# base <> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# TOMMYBLUE
dn: dc=TOMMYBLUE
objectClass: top
objectClass: dcObject
objectClass: organization
o: TOMMYBLUE
dc: TOMMYBLUE

# admin, TOMMYBLUE
dn: cn=admin,dc=TOMMYBLUE
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2
</pre>
<h2 id="Utilitydigestione:smbldap-tools">Utility di gestione: smbldap-tools</h2>
<p>Dovendo trasferire gruppi e utenti di sistema sulla directory LDAP i  &#8220;vecchi&#8221; strumenti di Unix non sono vanno pi&ugrave; bene. I smbldap-tools  sono, appunto, i tools che permettono questa gestione. Iniziamo a  installarli: </p>
<pre>pdc:/etc/ldap# apt-get install smbldap-tools  </pre>
<p> Il pacchetto ha molte dipendenze (17 per l&#8217;esattezza), non spaventatevi. Spostiamoci quindi in <em>/etc/smbldap-tools</em> e iniziamo la configurazione creando i files di default: </p>
<pre>pdc:/etc/smbldap-tools# zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz &gt; /etc/smbldap-tools/smbldap.conf
pdc:/etc/smbldap-tools# cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf  </pre>
<p> Iniziamo configurando <em>smbldap_bind.conf</em>. Il file  contiene la configurazione sia per il server master che per quello  slave, nel nostro caso coincidono e quindi la configurazione sar&agrave;  doppia. Ecco il risultato: </p>
<pre>slaveDN="cn=admin,dc=TOMMYBLUE"
slavePw="pippo"
masterDN="cn=admin,dc=TOMMYBLUE"
masterPw="pippo"  </pre>
<p> Prima di configurare il file <em>smbldap.conf</em> copiamo il valore ottenuto col seguente comando: </p>
<pre>pdc:/etc/smbldap-tools# net getlocalsid
SID for domain PDC is: S-1-5-21-323165295-1747901579-802220036  </pre>
<p> Proseguiamo quindi con <em>smbldap.conf</em>, la configurazione &egrave; complessa e procederemo a passi. Fino al termine di questo paragrafo far&ograve; sempre riferimento al file <em>smbldap.conf</em>.  Date innanzitutto un primo sguardo al file (&egrave; ben commentato) dopodich&egrave;  modificate le varie voci che, qui di seguito, non sono riportate nello  stesso ordine del file e a cui ho tolto, per sintesi, i commenti. </p>
<p>Innanzitutto impostiamo il SID appena ottenuto e il dominio inserito  al momento dell&#8217;installazione di Samba (nel mio caso TOMMYBLUE) dove  serve: </p>
<pre>SID="S-1-5-21-323165295-1747901579-802220036"
sambaDomain="TOMMYBLUE"
sambaUnixIdPooldn="sambaDomainName=TOMMYBLUE,${suffix}"  </pre>
<p> Dopodich&egrave; controlliamo che gli indirizzi e le porte dei server master e slave siano entrambi su 127.0.0.1: </p>
<pre>slaveLDAP="127.0.0.1"
slavePort="389"
masterLDAP="127.0.0.1"
masterPort="389"  </pre>
<p> Disabilitiamo (almeno momentaneamente) TLS: </p>
<pre>ldapTLS="0"  </pre>
<p> Modifichiamo il suffisso LDAP e il dominio per le email: </p>
<pre>suffix="dc=TOMMYBLUE"
mailDomain="tommyblue.it"  </pre>
<p>Infine impostiamo le homes degli utenti e la directory dove  salvare i profili. PDC-SERVER &egrave; il nome che utilizzeremo per  identificare il nostro server PDC (lo imposteremo tra poco). </p>
<pre>userSmbHome="\\PDC-SERVER\%U"
userProfile="\\PDC-SERVER\profiles\%U"  </pre>
<p> Per finire impostiamo i giusti permessi ai files appena modificati: </p>
<pre>pdc:/etc/smbldap-tools# chmod 0644 /etc/smbldap-tools/smbldap.conf
pdc:/etc/smbldap-tools# chmod 0600 /etc/smbldap-tools/smbldap_bind.conf  </pre>
<h2 id="ConfigurazionediSamba">Configurazione di Samba</h2>
<p> Adesso che il backend &egrave; pronto non ci resta che far si che Samba possa correttamente utilizzare queste informazioni.  Innanzitutto a Samba servono dei gruppi predefiniti e due utenti: <em>Administrator</em> e <em>nobody</em>.  Inoltre, per permettere alle macchine Windows di essere aggiunte in  automatico al dominio, serve un utente con uid = 0. Potremmo usare  l&#8217;utente root inserendolo a mano, ma in questo caso abbiamo deciso di  cambiare l&#8217;uid dell&#8217;utente Administrator cos&igrave; da farlo diventare  amministratore si per Samba che per la nostra macchina Linux.  Possiamo creare i gruppi: </p>
<pre>pdc:~# smbldap-populate -k 0
pdc:~# smbldap-useradd -a -m -c "Admin" Administrator
pdc:~# smbldap-usermod -G "Domain Admins" Administrator
pdc:~# smbldap-usermod -u 0 Administrator
pdc:~# smbldap-populate -a Administrator -k 0  </pre>
<p> Le opzioni <em>-k 0</em> impostano l&#8217;uid a 0 rendendo di fatto l&#8217;utente <em>Administrator</em> anche l&#8217;utente <em>root</em> di sistema, al momento del primo e ultimo comando dobbiamo anche  impostare la password di root: impostatene una ma non preoccupatevene  troppo, la cambieremo tra poco. Possiamo controllare i dati col  seguente comando: </p>
<pre>pdc:~# ldapsearch -x | less  </pre>
<p> Come detto, cambiamo la password dell&#8217;utente <em>Administrator</em>: </p>
<pre>pdc:~# smbldap-passwd Administrator  </pre>
<p> Facciamo amicizia con <strong>smbldap-passwd</strong> perch&eacute; sar&agrave; il futuro comando di gestione delle password. </p>
<h2 id="ConfigurazionediNSSePAM">Configurazione di NSS e PAM</h2>
<p>Affinch&egrave; Samba funzioni correttamente deve esserci corrispondenza  tra gli utenti di sistema e quelli di LDAP. Per far questo configuriamo <a href="http://en.wikipedia.org/wiki/Name_Service_Switch">NSS</a> in modo che possa utilizzare anche LDAP. Installiamo quindi: </p>
<pre>pdc:~# apt-get install libnss-ldap  </pre>
<p> Alle domande rispondiamo con le configurazioni effettuate in precedenza. Configuriamo quindi il file <em>nsswitch.conf</em> dicendogli di reperire le informazioni anche da LDAP: </p>
<pre>passwd:	compat ldap
group: 	compat ldap
shadow:	compat ldap  </pre>
<p> Per concludere possiamo verificare che effettivamente funzioni con: </p>
<pre>pdc:~# getent passwd
[...]
openldap:x:104:104:OpenLDAP Server Account,,,:/var/lib/ldap:/bin/false
root:x:0:0:Netbios Domain Administrator:/home/root:/bin/false
nobody:x:999:514:nobody:/dev/null:/bin/false
Administrator:x:0:513:Admin:/home/Administrator:/bin/bash  </pre>
<p> Come possiamo vedere anche gli utenti della directory LDAP sono  visibili come utenti di sistema. Questo &egrave; sufficiente per alcuni  operazioni base, molti programmi per&ograve; utilizzano <a href="http://en.wikipedia.org/wiki/Pluggable_Authentication_Modules">PAM</a>, installiamo quindi i programmi necessari a farlo dialogare con LDAP: </p>
<pre>pdc:~# apt-get install libpam-ldap  </pre>
<p> Le configurazioni di default sono sufficienti, impostate solamente il corretto account di root (nel mio caso<em>cn=admin,dc=TOMMYBLUE</em>). La configurazione viene salvata in <em>/etc/pam_ldap.conf</em> e pu&ograve; comunque essere modificata a mano.  Infine, nella cartella <em>/etc/pam.d</em> modifichiamo come segue i seguenti files.  Nella cartella /etc/pam.d modificare i seguenti files. </p>
<p> common-account: </p>
<pre>account sufficient	pam_ldap.so
account required 	pam_unix.so  </pre>
<p> commom-auth: </p>
<pre>auth    sufficient      pam_ldap.so nullok_secure
auth    required        pam_unix.so use_first_pass  </pre>
<p> commom-password: </p>
<pre>password    sufficient      pam_ldap.so
password    required      pam_unix.so try_first_pass nullok obscure min=4 max=8 md5  </pre>
<p> commom-session: </p>
<pre>session    sufficient      pam_ldap.so
session    required        pam_unix.so  </pre>
<p> Una volta terminato possiamo riavviare il server ssh e ritentare il collegamento: </p>
<pre>pdc:~# /etc/init.d/ssh restart
Restarting OpenBSD Secure Shell server: sshd.
pdc:~# exit
Connection to pdc closed.
MyPC:~$ ssh Administrator@pdc
Administrator@pdc's password:
Last login: Sat Feb  2 18:35:28 2008 from 192.168.0.2
root@pdc:~# whoami
root  </pre>
<p> Funziona perfettamente e, come possiamo notare dall&#8217;ultima riga, siamo loggati come utente <em>root</em>! </p>
<p> NB. Se utilizzate una connessione SSH per verificare la funzionalit&agrave; (come nell&#8217;esempio) fate attenzione che <em>root</em> abbia l&#8217;accesso con la riga </p>
<pre>PermitRootLogin yes  </pre>
<p> in <em>/etc/ssh/sshd_config</em> altrimenti, come ho fatto io, smadonnate per un&#8217;ora contro LDAP e la colpa e&#8217; di SSH :-) </p>
<h2 id="ConfigurazionedelserverSamba">Configurazione del server Samba</h2>
<p> Il file di configurazione di Samba <em>/etc/samba/smb.conf</em> deve essere pesantemente rimaneggiato. Possiamo dare uno sguardo ad un esempio nel file <em>/usr/share/doc/smbldap-tools/examples/smb.conf</em> oppure possiamo direttamente utilizzarlo per sostituire l&#8217;originale (backuppando l&#8217;originale!) e iniziare da questo.  Per completezza riporto l&#8217;intero <em>/etc/samba/smb.conf</em>: </p>
<pre>
[global]
        workgroup = TOMMYBLUE
        netbios name = PDC-SERVER
        server string = LAN Server %v
        enable privileges = yes

##### Per permettere un corretto login dei client XP #####
        wins support = yes
        socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
        ; include = /etc/samba/dhcp.conf
        dns proxy = no
        ;name resolve order = lmhosts host wins bcast
        unix charset = ISO8859-1
        dos charset = 850
        ; character set = ISO8859-1
        hosts allow = 127.0.0.1 192.168.2.0/255.255.255.0

        ### Each machina has its own log file ###
        log file = /var/log/samba/log.%m
        max log size = 1000
        log level = 2
        ; syslog only = no
        syslog = 0

        panic action = /usr/share/samba/panic-action %d

        ### Authentication ###
        security = user
        encrypt passwords = true
        ; passdb backend = tdbsam guest
        passdb backend = ldapsam:ldap://127.0.0.1
        obey pam restrictions = yes
        ; guest account = nobody
;       invalid users = root
;       unix password sync = yes

        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\sLinux\spassword:* %n\n *Retype\snew\sLinux\spassword:* %n\n .

        ; pam password change = no

        ##### LDAP Configuration #####

        ldap admin dn = cn=admin,dc=TOMMYBLUE
        ldap suffix = dc=TOMMYBLUE
        ldap group suffix = ou=Groups
        ldap user suffix = ou=Users
        ldap machine suffix = ou=Computers
        ldap idmap suffix = ou=Idmap
        ldap passwd sync = yes
        ldap delete dn = yes

        add user script = /usr/sbin/smbldap-useradd -m "%u"
        delete user script = /usr/sbin/smbldap-userdel "%u"
        add machine script = /usr/sbin/smbldap-useradd -w "%u"
        add group script = /usr/sbin/smbldap-groupadd -p "%g"
        delete group script = /usr/sbin/smbldap-groupdel "%g"
        add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
        delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
        set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"

        ##### Samba PDC #####

        os level = 255
        domain master = yes
        domain logons = yes
        preferred master = yes
        time server = yes
        logon home =
        logon path =
        logon script = logon.bat
        logon drive = H:

        ##### File sharing #####

        ; preserve case = yes
        ; short preserve case = yes

        ##### Misc #####

        ; include = /home/samba/etc/smb.conf.%m
        ; idmap uid = 10000-20000
        ; idmap gid = 10000-20000
        ; template shell = /bin/bash
        time server = yes
        hide dot files = yes

#======================= Share Definitions =======================

        [homes]
        comment = Home Directories
        browseable = no
        writable = yes
        create mask = 0700
        directory mask = 0700

        [netlogon]
        comment = Network Logon Service
        path = /var/lib/samba/netlogon
        guest ok = yes
        writable = no
        share modes = no

        [profiles]
        path = /var/lib/samba/profiles
        read only = no
        create mask = 0600
        directory mask = 0700
        writable = yes
        browseable = yes
        profile acls = yes
        hide files = /desktop.ini/ntuser.ini/NTUSER.*/
        store dos attributes = yes
        csc policy = disable
</pre>
<p> Il contenuto del file <em>desktop.ini</em>, citato in fondo alla configurazione, sarebbe: </p>
<pre>[.ShellClassInfo]
LocalizedResourceName=@shell32.dll,-21786  </pre>
<p> Una volta salvato il file possiamo verificarne la correttezza con: </p>
<pre>pdc:~# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[netlogon]"
Processing section "[profiles]"
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC  </pre>
<p> Creiamo anche le cartelle e diamo i giusti permessi alla cartella dei profili impostando lo <strong>sticky bit</strong> e rendendola scrivibile da root e le sue sottodirectory gestibili dai  rispettivi utenti, senza possibilit&agrave; di modificare quelle degli altri  (altrimenti i <strong>roaming profiles</strong> non funzionano): </p>
<pre>pdc:~# mkdir /var/lib/samba/netlogon
pdc:~# mkdir /var/lib/samba/profiles
pdc:~# chmod 1777 /var/lib/samba/profiles  </pre>
<p> NB. In molte guide vengono usati i permessi <strong>1757</strong> per la cartella dei profili, ma con quei permessi non sono riuscito a  fargli creare in automatico le cartelle dei profili al primo login  (Windows restituisce due errori al login, dicendo, in breve, che non  riesce a salvare il profilo e ad ogni nuovo login ci si ritrova con il  profilo intonso), quindi ho copiato i permessi da <em>/tmp</em> e usato quindi <strong>1777</strong> </p>
<p> Infine bisogna impostare la password per l&#8217;accesso a LDAP come admin,  in questo modo Samba potr&agrave; accedere a LDAP con permessi di scrittura.  La password sar&agrave; salvata nel file <em>/var/lib/samba/secrets.tdb</em>: </p>
<pre>pdc:~# smbpasswd -w &lt;password_di_admin&gt;  </pre>
<p> Per finire riavviamo Samba: </p>
<pre>pdc:~# /etc/init.d/samba restart
Stopping Samba daemons: nmbd smbd.
Starting Samba daemons: nmbd smbd.  </pre>
<p> e uniamo lo stesso PDC al dominio: </p>
<pre>pdc:~# net rpc join -U Administrator
Password:
Joined domain TOMMYBLUE.  </pre>
<p> Dopo quest&#8217;ultimo comando possiamo verificarne l&#8217;effettiva riuscita con <em>getent passwd</em> e cercando (nell&#8217;ultima riga) una entry del genere: </p>
<pre>pdc-server$:*:1004:515:Computer:/dev/null:/bin/false  </pre>
<p> Il simbolo $ finale indica che si tratta di un computer e non di un utente. </p>
<h2 id="Creazionedelprimoutente">Creazione del primo utente</h2>
<p> Adesso siamo pronti per la creazione del primo utente con il comando: </p>
<pre>pdc:~# smbldap-useradd -a -m -c "Tommaso Visconti" tommaso  </pre>
<p> Dove -a serve per creare anche i dati UNIX, -m crea l&#8217;home directory e  -c specifica il nome completo. Infine impostiamo la password  dell&#8217;utente: </p>
<pre>pdc:~# smbldap-passwd tommaso  </pre>
<p> Per verificare il tutto possiamo usare il comando: </p>
<pre>
pdc:~# smbldap-usershow tommaso
dn: uid=tommaso,ou=Users,dc=TOMMYBLUE
objectClass: top,person,organizationalPerson,inetOrgPerson,posixAccount,shadowAccount,sambaSamAccount
cn: tommaso
sn: tommaso
givenName: tommaso
uid: tommaso
uidNumber: 1000
gidNumber: 513
homeDirectory: /home/tommaso
loginShell: /bin/bash
gecos: Tommaso Visconti
sambaLogonTime: 0
sambaLogoffTime: 2147483647
sambaKickoffTime: 2147483647
sambaPwdCanChange: 0
displayName: Tommaso Visconti
sambaSID: S-1-5-21-323165295-1747901579-802220036-3000
sambaPrimaryGroupSID: S-1-5-21-323165295-1747901579-802220036-513
sambaLogonScript: logon.bat
sambaProfilePath: \\PDC-SERVER\profiles\tommaso
sambaHomePath: \\PDC-SERVER\tommaso
sambaHomeDrive: H:
sambaLMPassword: 9DA4560FB165977D3EA23D825A8A8B03
sambaAcctFlags: [U]
sambaNTPassword: C15028F27535EABEFEBB15F0552E5725
sambaPwdLastSet: 1201975835
sambaPwdMustChange: 1217527835
userPassword: {SSHA}QGDIzHLcRa8/hDtCIOCJJ84OFkulbmx3
</pre>
<p> Creiamo anche un gruppo aggiungendoci l&#8217;utente appena creato: </p>
<pre>pdc:~# smbldap-groupadd ufficio
pdc:~# smbldap-usermod -G ufficio tommaso
pdc:~# smbldap-groupshow ufficio
dn: cn=ufficio,ou=Groups,dc=TOMMYBLUE
objectClass: top,posixGroup
cn: ufficio
gidNumber: 1000
memberUid: tommaso  </pre>
<p> Come specificato nel file <em>/etc/smbldap-tools/smbldap.conf</em> il file eseguito al netlogon &egrave; <em>logon.bat</em>. Questo script batch deve essere creato nella condivisione di <strong>netlogon</strong> e deve avere la codifica di uno script batch DOS. Installiamo quindi il  software necessario (dato che, fortunatamente, non abbiamo il DOS&#8230;): </p>
<pre>pdc:~# apt-get install tofrodos  </pre>
<p> Creiamo quindi il file <em>/var/lib/samba/netlogon/logon.bat</em> scrivendoci, per ora, quanto necessario per sincronizzare gli orologi.  Al batch pu&ograve; comunque essere aggiunto tutto ci&ograve; di cui abbiamo bisogno  (ad esempio per il montaggio di unit&agrave; di rete o altre condivisioni): </p>
<pre>pdc:~# echo "net time %LOGONSERVER% /set /yes" &gt; /var/lib/samba/netlogon/logon.bat  </pre>
<p> Codifichiamo quindi il file come se fosse stato scritto in DOS: </p>
<pre>pdc:~# unix2dos /var/lib/samba/netlogon/logon.bat  </pre>
<h2 id="Connessionealdominio">Connessione al dominio</h2>
<p>Prima di procedere con la configurazione dei vari client Windows e  Unix/Linux proviamo con una connessione locale utilizzando l&#8217;utente  creato poco fa: </p>
<pre>
pdc:~# smbclient -L localhost -U tommaso
Password:
Domain=[TOMMYBLUE] OS=[Unix] Server=[Samba 3.0.24]

        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk      Network Logon Service
        profiles        Disk
        IPC$            IPC       IPC Service (LAN Server 3.0.24)
        tommaso         Disk      Home Directories
Domain=[TOMMYBLUE] OS=[Unix] Server=[Samba 3.0.24]

        Server               Comment
        ---------            -------
        PDC-SERVER           LAN Server 3.0.24

        Workgroup            Master
        ---------                -------
        TOMMYBLUE          PDC-SERVER
</pre>
<p>La procedura di connessione dei client al dominio varia a  seconda del sistema operativo utilizzato sulle macchine client, ho  avuto modo di provare la configurazione per Windows 2000, Windows XP e Windows Vista, per il resto mi sono fidato di altre fonti sul web</p>
<h3 id="Windows9598ME">Windows 95/98/ME</h3>
<ol>
<li>Verificare che sia installato il &#8220;Client per Reti Microsoft&#8221; fra le propriet&agrave; di rete </li>
<li>Assicurarsi che il Client per Reti Microsoft sia selezionato  come protocollo di rete primario (Pannello di Controllo -&gt; Rete  -&gt; Logon di rete primario). </li>
<li>Andare su Pannello di Controllo -&gt; Rete -&gt; Client per reti Microsoft -&gt; Propriet&agrave; -&gt; Logon su Dominio NT. </li>
<li>Se si &egrave; configurata su smb.conf l&#8217;opzione &#8220;add user script&#8221;,  selezionare il checkbox Crea un Computer Account, altrimenti creare a  mano sul server Samba un utente con il nome della macchina Windows. </li>
<li>Inserire il nome del proprio dominio e cliccare OK. </li>
</ol>
<h3 id="WindowsNT">Windows NT</h3>
<ol>
<li>Andare su Pannello di Controllo -&gt; Rete -&gt; Identificazione Rete -&gt; Propriet&agrave; </li>
<li>Selezionare Dominio e inserire il nome del prorio dominio </li>
<li>Selezionare Crea un Computer Account </li>
<li>Alla richiesta della password di un amministratore inserire la  login e la password di Administrator, ricordarsi che l&#8217;utente root deve  essere aggiunto a smbpasswd. </li>
<li>Dovrebbe comparire un messaggio che ci da il benvenuto sul dominio. </li>
</ol>
<h3 id="Windows2000">Windows 2000</h3>
<ol>
<li>Le procedure sono uguali a quelle per Windows NT tranne che i  settaggi di rete sono trovati sotto Pannello di Controllo -&gt; Sistema  -&gt; Identificazione Rete (oppure, sul Desktop, cliccare col tasto  destro del mouse sull&#8217;icona Risorse del Computer, selezionare  Propriet&agrave;, cliccare sulla tab Identificazione Rete e sul tasto  Propriet&agrave;). </li>
</ol>
<h3 id="WindowsXP">Windows XP</h3>
<p> Innanzitutto chiariamo che solo la versione Professional Edition pu&ograve;  entrare a far parte di un dominio (NT o Active Directory). Per la  versione Home Edition possiamo comunque utilizzare un escamotage e  riuscire ad accedere alle cartelle condivise: il nome del Workgroup  deve essere esattamente il nome del dominio e l&#8217;utente locale deve  essere uguale e avere la stessa password di quello di dominio, meglio  di niente&#8230; </p>
<p> Tornando a Windows XP Professional Edition, apriamo l&#8217;editor delle policy di Sicurezza Locale: </p>
<ul>
<li><em>Start</em>-&gt;<em>Pannello di controllo</em>-&gt;<em>Strumenti di Amministrazione</em>-&gt;<em>Criteri di protezione locali</em>-&gt;<em>Criteri locali</em>-&gt;<em>Opzioni di protezione</em> </li>
</ul>
<ol>
<li>Disabilitare la voce <strong>Membro di dominio: aggiunta crittografia o firma digitale ai dati del canale protetto (sempre)</strong> (<em>Domain member: Digitally encrypt or sign secure channel (always)</em>) </li>
<li>Disabilitare la voce <strong>Controller di dominio: rifiuta cambio password account computer</strong> (<em>Domain member: Disable machine account password changes</em>) </li>
<li>Disabilitare la voce <strong>Membro di dominio: richiesta chiave di sessione avanzata (Windows 2000 o versioni successive)</strong> (<em>Domain member: Require strong (Windows 2000 or later) session key</em>) </li>
</ol>
<p>Nelle versioni pi&ugrave; recenti di Samba i passaggi dovrebbero  essere finiti, nelle versioni precedenti invece serve una piccola patch  al registro.  Innanzitutto creiamo un file di testo con questo contenuto: </p>
<pre>Windows Registry Editor Version 5.00

;
; This registry key is needed for a Windows XP Client to join
; and logon to a Samba domain. Note: Samba 2.2.3a contained
; this key in a broken format which did nothing to the registry -
; however XP reported "registry key imported". If in doubt
; check the key by hand with regedit.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters]
"requiresignorseal"=dword:00000000
</pre>
<p> e salviamolo come <em>la_mia_patch.reg</em> (il nome chiaramente &egrave; inventato, l&#8217;importante &egrave; l&#8217;estensione <strong>.reg</strong>). A questo punto basta un doppio click per patchare il registro di Windows.  Per finire uniamoci al dominio come su Windows NT/2000: Tasto destro su <em>Risorse del Computer</em>, selezionare <em>Propriet&agrave;</em>, <em>Nome del Computer</em> e tasto <em>Modifica</em> uppure cliccare su <em>Identificazione di Rete</em> ed eseguire il Wizard fornendo le credenziali di <em>root</em>. </p>
<h3 id="WindowsVista">Windows Vista</h3>
<p> Innanzitutto un premessa: la prova &egrave; stata portata a termine con la versione <em>Business</em>. Dovrebbe essere possibile unire ad un dominio anche le versioni <em>Enterprise</em> e <em>Ultimate</em> mentre le versioni <em>Home basic</em> e <em>Home premium</em> no.  Le operazioni da compiere sono uguali a quelle per <em>Windows XP</em> con, in aggiunta, una sola operazione. Innanzitutto date uno sguardo pi&ugrave; in basso alla risoluzione del problema <strong>Impossibile unirsi al dominio con errore <em>Impossibile trovare il percorso di rete</em></strong>.  Bene, probabilmente avrete quel problema. L&#8217;operazione in pi&ugrave; che  citavo &egrave;, dal pannello delle propriet&agrave; della scheda di rete, dalle  propriet&agrave; del <em>Protocollo Internet (TCP/IP)</em>-&gt;<em>Avanzate&#8230;</em>-&gt;<em>WINS</em> ho anche dovuto abilitare, in <em>Impostazioni Netbios</em>, la voce <em>Abilita Netbios su TCP/IP</em>. </p>
<h2 id="UnaGUIwebperildatabaseLDAP:phpldapadmin">Una GUI web per il database LDAP: phpldapadmin</h2>
<p> Vabb&egrave; che siamo amministratori Linux e la shell ci garba, per&ograve; pu&ograve;  essere utile avere una GUI per esplorare l&#8217;albero LDAP. Uno strumento  agile &egrave; <em>phpldapadmin</em>. L&#8217;installazione &egrave; rapida, la configurazione altrettanto. </p>
<pre>pdc:~# apt-get install phpldapadmin  </pre>
<p> La configurazione &egrave; in <em>/etc/phpldapadmin</em>, per una configurazione base ci basta il file <em>config.php</em>, in particolare questi valori: </p>
<pre>$ldapservers-&gt;SetValue($i,'server','name','LDAP PDC-SERVER');
$ldapservers-&gt;SetValue($i,'server','host','localhost');
$ldapservers-&gt;SetValue($i,'server','base',array('dc=TOMMYBLUE'));
$ldapservers-&gt;SetValue($i,'server','auth_type','session');  </pre>
<p> Se, per funzionalit&agrave; di debug, desideriamo un login automatico,  possiamo cambiare il tipo di autenticazione e fornire le credenziali: </p>
<pre>$ldapservers-&gt;SetValue($i,'server','auth_type','config');
$ldapservers-&gt;SetValue($i,'login','dn','cn=admin,dc=TOMMYBLUE');
$ldapservers-&gt;SetValue($i,'login','pass','pippo');  </pre>
<p> Per concludere modifichiamo il resto del file cercando <em>dc=example,dc=com</em> e sostituendolo con <em>dc=TOMMYBLUE</em>.   Apriamo quindi il browser e iniziamo a sfogliare l&#8217;albero LDAP da <em>http://192.168.0.250/phpldapadmin</em> (ovviamente cambiate l&#8217;ip mettendoci quello del vostro server). </p>
<h2 id="Soluzioniavariproblemi">Soluzioni a vari problemi</h2>
<h3 id="Problemiconipermessi">Problemi con i permessi</h3>
<p> Se, per caso, abbiamo dei problemi di permessi, pu&ograve; darsi che ci siano problemi nell&#8217;associazione (<em>bind</em>)  dei nomi utente o di gruppo al loro SID, in pratica problemi con WINS.  Possiamo allora specificare nelle condivisioni direttamente i SID dei  gruppi o degli utenti.  Innanzitutto installiamo il pacchetto <em>winbind</em>, dopodich&eacute;, se, ad esempio, vogliamo trovare il SID del gruppo <em>Domain Users</em>: </p>
<pre>pdc:~# wbinfo -n "Domain Users"
S-1-5-21-323165295-1747901579-802220036-513 Domain Group (2)  </pre>
<p> Possiamo usare questo SID come fosse un qualsiasi nome di gruppo o nome utente in <em>smb.conf</em>: </p>
<pre>    valid users = S-1-5-21-323165295-1747901579-802220036-513  </pre>
<p> Altre informazioni molto utili possono essere ottenute col comando <em>net</em>. Iniziamo con <em>net &#8211;help</em> poi, ad esempio, se vogliamo vedere l&#8217;attuale binding tra utenti del  dominio e del sistema (nonch&eacute; tutti i SID), possiamo utilizzare: </p>
<pre>pdc:~# net groupmap list
Domain Admins (S-1-5-21-323165295-1747901579-802220036-512) -> Domain Admins
Domain Users (S-1-5-21-323165295-1747901579-802220036-513) -> Domain Users
Domain Guests (S-1-5-21-323165295-1747901579-802220036-514) -> Domain Guests
Domain Computers (S-1-5-21-323165295-1747901579-802220036-515) -> Domain Computers
Administrators (S-1-5-32-544) -> Administrators
Account Operators (S-1-5-32-548) -> Account Operators
Print Operators (S-1-5-32-550) -> Print Operators
Backup Operators (S-1-5-32-551) -> Backup Operators
Replicators (S-1-5-32-552) -> Replicators
</pre>
<p> Facciamo anche due esempi per mappare <em>&#8220;Domain Admins&#8221;</em> col gruppo <em>root</em> e <em>&#8220;Domain Users&#8221;</em> col gruppo <em>users</em>: </p>
<pre>pdc:~# net groupmap modify netgroup="Domain Admins" unixgroup=root
pdc:~# net groupmap modify netgroup="Domain Users" unixgroup=users  </pre>
<h3 id="Aggiungereunamacchinaaldominio">Aggiungere una macchina al dominio</h3>
<pre>pdc:~# smbpasswd -a -m NOME_COMPUTER  </pre>
<h3 id="ImpossibileunirsialdominioconerroreImpossibiletrovareilpercorsodirete">Impossibile unirsi al dominio con errore <em>Impossibile trovare il percorso di rete</em></h3>
<p>Credo di aver capito che il problema sia nella risoluzione dei nomi  Netbios e quindi del server WINS. In pratica, nonostante Samba operi  come server WINS pu&ograve; capitare che il client Windows (nel mio caso XP)  non se ne accorga. Da notare che quest&#8217;errore non mi &egrave; capitato nella  prima prova che ho fatto in una rete composta solo da uno switch, il  server Samba e una postazione.  Comunque sia, per risolvere il problema &egrave; sufficiente impostare  l&#8217;indirizzo ip del server tra i server WINS del client Windows. Quindi:  click destro su <em>Risorse di rete</em>-&gt;<em>Propriet&agrave;</em>. Click destro sulla scheda di rete (in genere <em>Connessione alla rete locale (LAN)</em>)-&gt;<em>Propriet&agrave;</em>. Selezioniamo <em>Protocollo Internet (TCP/IP)</em>-&gt;<em>Propriet&agrave;</em>-&gt;<em>Avanzate&#8230;</em>. Nel pannello <em>WINS</em> clicchiamo su <em>Aggiungi&#8230;</em> e inseriamo l&#8217;indirizzo ip del server Samba. Adesso riproviamo ad unire il computer al dominio. </p>
<h2 id="Webografia">Webografia</h2>
<h3 id="Software">Software</h3>
<ul>
<li><a href="http://www.samba.org">http://www.samba.org</a> </li>
<li><a href="http://www.openldap.org">http://www.openldap.org</a> </li>
</ul>
<h3 id="Cultura:-">Cultura :-)</h3>
<ul>
<li><a href="http://it.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol">http://it.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol</a> </li>
<li><a href="http://en.wikipedia.org/wiki/Active_Directory_Service">http://en.wikipedia.org/wiki/Active_Directory_Service</a> </li>
<li><a href="http://en.wikipedia.org/wiki/Primary_Domain_Controller">http://en.wikipedia.org/wiki/Primary_Domain_Controller</a> </li>
<li><a href="http://en.wikipedia.org/wiki/Windows_Internet_Name_Service">http://en.wikipedia.org/wiki/Windows_Internet_Name_Service</a> </li>
</ul>
<h3 id="How-To">How-To</h3>
<ul>
<li><a href="http://www.stenoit.com/modules/spxsection/item.php?itemid=5">http://www.stenoit.com/modules/spxsection/item.php?itemid=5</a> </li>
<li><a href="http://openskills.info/infobox.php?ID=552">http://openskills.info/infobox.php?ID=552</a> </li>
<li><a href="http://www.tuxjournal.net/?p=2240">http://www.tuxjournal.net/?p=2240</a> </li>
<li><a href="http://guide.debianizzati.org/index.php/Samba_e_OpenLDAP:_creare_un_controller_di_dominio">http://guide.debianizzati.org/index.php/Samba_e_OpenLDAP:_creare_un_controller_di_dominio</a> </li>
<li><a href="http://dev.autistici.org/orangebook/html/index.html">http://dev.autistici.org/orangebook/html/index.html</a> </li>
<li><a href="http://java.sun.com/products/jndi/tutorial/ldap/TOC.html">http://java.sun.com/products/jndi/tutorial/ldap/TOC.html</a> </li>
<li><a href="http://help.ubuntu-it.org/6.06/ubuntu/serverguide/it/configuring-samba.html">http://help.ubuntu-it.org/6.06/ubuntu/serverguide/it/configuring-samba.html</a> </li>
</ul>
<h3 id="Letturevarie">Letture varie</h3>
<ul>
<li><a href="http://www.zaffa.org/2007/10/02/samba-active-directory-e-permessi/">http://www.zaffa.org/2007/10/02/samba-active-directory-e-permessi/</a> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tommyblue.it/2008/02/06/realizzare-un-dominio-windows-con-linux-samba-come-pdc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installazione e configurazione di Samba 3.0.14a su Slackware 10.1</title>
		<link>http://www.tommyblue.it/2006/05/07/installazione-e-configurazione-di-samba-3014a-su-slackware-101/</link>
		<comments>http://www.tommyblue.it/2006/05/07/installazione-e-configurazione-di-samba-3014a-su-slackware-101/#comments</comments>
		<pubDate>Sun, 07 May 2006 09:02:28 +0000</pubDate>
		<dc:creator>TommyBlue</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[samba]]></category>

		<guid isPermaLink="false">http://www.tommyblue.it/?p=405</guid>
		<description><![CDATA[Ottenere Samba Potete scaricare Samba nel sito ufficiale Samba.org, ad oggi la versione current è la 3.0.14a. Compilazione e installazione Scaricate il pacchetto e scompattatelo con: $ tar xvzf samba-3.0.14a.tar.gz Per compilare Samba eseguite: $ ./configure --sysconfdir=/etc --prefix=/usr --with-smbmount Le opzioni specificano: --sysconfdir La directory in cui installare i files di configurazione --prefix La directory [...]]]></description>
			<content:encoded><![CDATA[<h3>Ottenere Samba</h3>
<p>Potete scaricare Samba nel sito ufficiale <a href="http://www.lilik.it/%7Etommyblue/modules/appunti/%22http://www.samba.org%22" target="&quot;_blank&quot;">Samba.org</a>, ad oggi la versione <span>current</span> è la 3.0.14a.</p>
<h3>Compilazione e installazione</h3>
<p>Scaricate il pacchetto e scompattatelo con:</p>
<pre>$ tar xvzf samba-3.0.14a.tar.gz</pre>
<p>Per compilare Samba eseguite:</p>
<pre>$  ./configure --sysconfdir=/etc --prefix=/usr --with-smbmount</pre>
<p>Le opzioni specificano:</p>
<pre>--sysconfdir</pre>
<p>La directory in cui installare i files di configurazione</p>
<pre>--prefix</pre>
<p>La directory principale del programma</p>
<pre>--with-smbmount</pre>
<p>Attivazione della caratteristica smbmount per montare partizioni samba come fossero dischi locali.<br />
Inoltre questa caratteristica è richiesta da <a href="http://www.lilik.it/%7Etommyblue/modules/appunti/%22http://smbwebclient.sourceforge.net/%22" target="&quot;_blank&quot;">SMB Web Client</a>, un client samba in php che permette di navigare in Samba col browser web.</p>
<p>A questo punto si può compilare e installare Samba:</p>
<pre>$ make
# make install</pre>
<p>Per automatizzare il lancio di Samba all&#8217;avvio si può utilizzare il file /etc/rc.d/rc.samba dandogli i permessi di esecuzione:</p>
<pre># chmod +x /etc/rc.d/rc.samba</pre>
<p>Ecco il mio rc.samba:</p>
<pre>#!/bin/sh
#
# /etc/rc.d/rc.samba
#
# Start/stop/restart the Samba SMB file/print server.
#
# To make Samba start automatically at boot, make this
# file executable:  chmod 755 /etc/rc.d/rc.samba
#

samba_start() {
 if [ -x /usr/sbin/smbd -a -x /usr/sbin/nmbd -a -r /etc/smb.conf ]; then

    echo "Starting Samba: /usr/sbin/smbd -D"
    /usr/sbin/smbd -D
    echo "                /usr/sbin/nmbd -D"
    /usr/sbin/nmbd -D
  fi
}

samba_stop() {
  killall smbd nmbd
}

samba_restart() {
  samba_stop
  sleep 2
  samba_start
}

case "$1" in
'start')
  samba_start
  ;;
'stop')
  samba_stop
  ;;
'restart')
  samba_restart
  ;;
*)
  # Default is "start", for backwards compatibility with previous
  # Slackware versions.  This may change to a 'usage' error someday.
  samba_start
esac</pre>
<h3>Configurazione: smb.conf</h3>
<p>Per una guida completa leggete <a href="http://www.lilik.it/%7Etommyblue/modules/appunti/%22http://openskills.info/topic.php?ID=62%22" target="&quot;_blank&quot;">qui</a>.</p>
<p>Le opzioni di configurazione possono essere di 2 tipi fondamentali:</p>
<p>- <span>global</span>, appaiono solo nella sezione [global] e definiscono i comportamente generali del server Samba<br />
- <span>share</span>, appaiono all&#8217;interno di specifiche share e definiscono il comportamento riguardo alla specifica share. Se appaiono in [global] definiscono i comportamenti di default.</p>
<p>Qualsiasi opzione deve essere inclusa una una sezione. Esistono le seguenti sezioni speciali:<br />
<span>[global]</span> Sempre presente, di solito ad inizio file, definisce le opzioni di default valide per tutte le condivisioni (possono essere sovrascritte da opzioni contrarie presenti nelle specifiche sezioni) e i parametri generali di configurazione del server.<br />
<span>[printers]</span> E&#8217; una sezione speciale utilizzata per condividere l&#8217;accesso via rete a delle stampanti<br />
<span>[homes]</span> E&#8217; una sezione speciale che coincide con la home directory di un utente autenticato. Di fatto è una condivisione generica con il nome dell&#8217;utente che accede a Samba.</p>
<p>Oltre a queste sezioni speciali ne possono esistere un numero arbitrario di altre, il nome di ogni sezione coincide con il nome della relativa condivisione, così come appare al client SMB.</p>
<p>Qui di seguito il mio file smb.conf:</p>
<pre>[global]
   workgroup = Tommyblue.it
   netbios name = Tommyblue
   server string = Desktop
   hosts allow = ALL

   log file = /var/log/samba/samba.%m
   max log size = 500
   log level = 3

   guest account = samba-guest
   smb passwd file = /etc/samba/smbpasswd
   encrypt passwords = yes

[netlogon]
   path = /samba/logon
   public = no
   Comment = share to domain logon
   writable = no
   browsable = no

[printers]
   comment = All Printers
   path = /var/spool/samba
   browseable = yes
   guest ok = yes
   writable = no
   printable = yes
   public = yes

[public]
   comment = Public Stuff
   path = /home/samba-guest
   public = yes
   writable = yes
   printable = no
   create mask = 0765
   guest ok = yes

[Dati]
    path = /mnt/dati
    public = yes
    writable = yes
    printable = no
    create mask = 0765
    guest ok = yes</pre>
<p><span>NOTA:<br />
</span>Nonostante l&#8217;opzione &#8211;sysconfdir Samba cerca il file smb.conf in /usr/lib, ho quindi creato un link simbolico in /etc:</p>
<pre><span># cd /etc</span>
<span># ln -s /usr/lib/smb.conf
</span></pre>
<h3>Configurazione: smbpasswd</h3>
<p>smbpasswd è l&#8217;applicazione che gestisce le password e gli utenti di samba. Per far funzionare l&#8217;applicazione dovete creare il percorso di smbpasswd specificato in smb.conf [/etc/samba]<br />
A questo punto per abilitare gli utenti ad accedere alle vostre condivisioni dovete aggiungerli al file smbpasswd.<br />
Per prima cosa gli utenti di Samba devono anche essere utenti del sistema, quindi aggiungeteli se non esistono.<br />
Per avere una panoramica completa su smbpasswd lanciate:</p>
<pre>$ man smbpasswd</pre>
<p>Di seguito alcuni semplici esempi:</p>
<p>* Creare un utente senza password</p>
<pre># smbpasswd -n -a utente</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.tommyblue.it/2006/05/07/installazione-e-configurazione-di-samba-3014a-su-slackware-101/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

