<?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; windows</title>
	<atom:link href="http://www.tommyblue.it/tag/windows/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>Windows Server 2003 virtuale su Debian Etch con VirtualBox</title>
		<link>http://www.tommyblue.it/2007/11/26/windows-server-2003-virtuale-su-debian-etch-con-virtualbox/</link>
		<comments>http://www.tommyblue.it/2007/11/26/windows-server-2003-virtuale-su-debian-etch-con-virtualbox/#comments</comments>
		<pubDate>Mon, 26 Nov 2007 16:19:24 +0000</pubDate>
		<dc:creator>TommyBlue</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Software Libero]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[etch]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[virtual server]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualizzazione]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.tommyblue.it/2007/11/26/windows-server-2003-virtuale-su-debian-etch-con-virtualbox/</guid>
		<description><![CDATA[English version L&#8217;idea è semplice: utilizzare una base sicura (e meglio &#8220;aggeggiabile&#8221;) come Debian Etch con cui virtualizzare Windows Server 2003 (per alcuni servizi che non si possono far girare altrimenti) utilizzando VirtualBox. Tutto sommato non è stato così difficile, ecco qua cosa ho fatto. Installazione Ho effettuato l&#8217;installazione del &#8220;sistema standard&#8221; aggiungendo poi ai [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.tommyblue.it/wp-content/uploads/2007/11/snapshot113aq1.png" alt="VirtualBox" align="left" /></p>
<p><strong><a href="http://www.tommyblue.it/wp-content/uploads/2007/12/virtualbox_eng.pdf" title="Virtual Windows Server 2003 on Debian Etch with VirtualBox">English version</a></strong></p>
<p>L&#8217;idea è semplice: utilizzare una base sicura (e meglio &#8220;aggeggiabile&#8221;) come Debian Etch con cui virtualizzare Windows Server 2003 (per alcuni servizi che non si possono far girare altrimenti) utilizzando <a href="http://www.virtualbox.org">VirtualBox</a>.<br />
Tutto sommato non è stato così difficile, ecco qua cosa ho fatto.<br />
<span id="more-84"></span><br />
<strong>Installazione</strong></p>
<p>Ho effettuato l&#8217;installazione del &#8220;sistema standard&#8221; aggiungendo poi ai repository quello di virtualbox come descritto nella <a href="http://www.virtualbox.org/wiki/Downloads">pagina ufficiale di download</a>.<br />
Il pacchetto da installare è <strong><em>virtualbox</em></strong> che si porta dietro un bel po&#8217; di dipendenze:</p>
<pre>I seguenti pacchetti NUOVI (NEW) saranno installati:
cpp cpp-4.1 defoma fontconfig fontconfig-config libasound2 libaudio2 libdirectfb-0.9-25 libexpat1 libfontconfig1
libfreetype6 libglib2.0-0 libice6 libicu36 libidl0 libjpeg62 liblcms1 libmng1 libpng12-0 libqt3-mt libsdl1.2debian
libsdl1.2debian-alsa libsm6 libsvga1 libsysfs2 libx11-6 libx11-data libxalan110 libxau6 libxcursor1 libxdmcp6
libxerces27 libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxrandr2 libxrender1 libxt6 psmisc svgalibg1
ttf-dejavu virtualbox x11-common</pre>
<p>Quindi aggiungete al gruppo <strong><em>vboxusers</em></strong> l&#8217;utente che poi lancerà la macchina virtuale (eventualmente createlo prima, io ho usato <em>winserver2003</em>).</p>
<p>Se volete lanciare la GUI VirtualBox per la configurazione della macchina virtuale o per utilizzarla in locale e&#8217; necessario installare anche i pacchetti <strong><em>xorg</em></strong> (o quelli che ritenete più opportuni per poter lanciare <strong><em>X</em></strong> e <strong><em>xterm</em></strong>)<strong><em> </em></strong>e<strong><em> libxalan110</em></strong>. Questi pacchetti non sono invece necessari se la macchina sara&#8217; configurata da console (o su un&#8217;altra macchina) e se sara&#8217; necessario solo l&#8217;accesso remoto.</p>
<p><strong>ATTENZIONE</strong><br />
Puo&#8217; capitare che la compilazione del modulo <b><em>vboxdrv</em></b> fallisca, in questo caso verificate di aver installato il pacchetto <strong>linux-headers-vostrokernel</strong> ed, eventualmente, <strong>build-essential</strong>, dopodiche&#8217; rilanciate </p>
<pre> ~# /etc/init.d/vboxdrv setup</pre>
<p><strong>Creazione e configurazione della macchina virtuale con la GUI</strong></p>
<p>A questo punto si può lanciare X con <strong><em>startx</em></strong> (dall&#8217;utente appena aggiunto al gruppo <strong><em>vboxusers</em></strong>) e da xterm si lancia virtualbox col comando  <strong><em>VirtualBox</em></strong>. Creare una macchina virtuale è molto semplice e potete far riferimento alle tantissime risorse già presenti su internet. L&#8217;unica nota è non attivare il server RDP presente in VirtualBox (funziona malissimo!), se necessario meglio usare quello di Windows.</p>
<p>La macchina virtuale puo&#8217; essere creata su un pc e poi spostata nel server finale (dove, magari, non e&#8217; installato l&#8217;ambiente grafico) semplicemente spostando (e impostando poi i giusti permessi) la cartella ~/.VirtualBox.</p>
<p><strong>Configurare la rete</strong></p>
<p>La procedura consiste nel creare una scheda di rete virtuale <strong>vbox0</strong> e un bridge tra essa e la scheda fisica su cui, per comodità, ho creato un ip alias per gestire meglio le richieste.</p>
<p>Ecco quindi il file <em><strong>/etc/network/interfaces</strong></em> col quale imposto l&#8217;ip primario e un alias che assocerò alla macchina virtuale:</p>
<pre># Interfaccia fisica
auto eth0
iface eth0 inet static
        address 192.168.2.60
        netmask 255.255.255.0
        gateway 192.168.2.254
        dns-nameservers 208.67.222.222 208.67.220.220

# Interfaccia virtuale
auto eth0:1
iface eth0:1 inet static
        address 192.168.2.61
        netmask 255.255.255.0</pre>
<p>Poi, dopo aver installato <strong>bridge-utils</strong>, bisogna creare il bridge <strong>br0</strong> tra <strong>eth0:1</strong> e <strong>vbox0</strong>, io ho creato uno script che faccio avviare all&#8217;inizio, ovvero <strong>/etc/init.d/bridge</strong> linkato in <strong>/etc/rc.2/S20bridge</strong>.<br />
<strong>ATTENZIONE:</strong> è fondamentale che parta <strong>PRIMA</strong> che virtualbox abbia creato <strong>vbox0</strong>, altrimenti <strong>br0</strong> non viene trovato, ovvero prima dei files <strong>S20vboxdrv</strong> e <strong>S20vboxnet</strong>.</p>
<p>Ecco quindi <strong>/etc/init.d/bridge</strong>:</p>
<pre>#!/bin/bash
brctl addbr br0
ifconfig br0 10.1.1.1 netmask 255.255.255.0 up

# Regole per far funzionare PASV mode in FTP
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp

echo 1 &gt; /proc/sys/net/ipv4/ip_forward

# Giro tutte le richieste su .61 alla macchina virtuale
iptables -t nat -A PREROUTING -p tcp -d 192.168.2.61 -j DNAT --to 10.1.1.2

# Con queste regole si possono girare singole porte
# HTTP
#iptables -t nat -A PREROUTING -p tcp -d 192.168.2.61 --dport 80 -j DNAT --to 10.1.1.2:80
# HTTPS
#iptables -t nat -A PREROUTING -p tcp -d 192.168.2.61 --dport 443 -j DNAT --to 10.1.1.2:443
# Desktop Remoto
#iptables -t nat -A PREROUTING -p tcp -d 192.168.2.61 --dport 3389 -j DNAT --to 10.1.1.2:3389

# Permetto alla macchina virtuale di navigare
iptables -t nat -A POSTROUTING -o eth0 -s 10.1.1.2 -j MASQUERADE</pre>
<p>Infine creo l&#8217;interfaccio <em><strong>vbox0</strong></em>, prima però è meglio riavviare la rete per aggiornare gli indirizzi ip (attenzione se cambiate l&#8217;ip e siete connessi via SSH) ed eseguire lo script <strong>/etc/init.d/bridge</strong> per creare il bridge (altrimenti verrà mostrato un errore che si risolverà al riavvio del pc).</p>
<pre>/etc/init.d/netrworking restart
chmod +x /etc/init.d/bridge
/etc/init.d/bridge</pre>
<p>Il comando qui di seguito crea <strong>vbox0</strong> e salva la cui configurazione nel file <strong>/etc/vbox/interfaces</strong>):</p>
<pre>VBoxAddIF vbox0 nomeutente br0</pre>
<p>Al posto di <em>nomeutente</em> ho usato <em>winserver2003</em>.<br />
Ricordatevi di impostare su Windows l&#8217;ip a <strong>10.1.1.2/24</strong> e il gateway a <strong>10.1.1.1</strong></p>
<p><strong>Avvio automatico all&#8217;accensione del pc</strong></p>
<p>Per avviare con l&#8217;interfaccia grafica ho usato <strong>gdm</strong> con login automatico dell&#8217;utente con cui lancio la macchina virtuale e nel file <strong>.bashrc</strong> ho inserito il comando necessario a lanciare la macchina da console:</p>
<pre>VBoxSDL -fullscreen -vm WinServer2003</pre>
<p>Se invece volete soltanto l&#8217;accesso remoto alla macchina il comando e&#8217;:</p>
<pre>VBoxVRDP -startvm WinServer2003</pre>
<p>Per l&#8217;avvio automatico ho creato il file <strong>/etc/init.d/VBoxAutostart</strong> linkato in <strong>/etc/rc.2/S99VBoxAutostart</strong> come questo qui sotto:</p>
<pre>#!/bin/bash

echo -e ""
echo -e "### AVVIO DELLA MACCHINA VIRTUALE ###"
echo -e ""
su winserver2003 -c 'VBoxVRDP -startvm WinServer2003 &amp;'
sleep 5
echo -e ""</pre>
<p>In alternativa e&#8217; possibile creare uno script contenente</p>
<pre>VBoxVRDP -startvm WinServer2003 &amp;</pre>
<p>da lanciare poi con <strong>start-stop-daemon</strong> sempre nel file  <strong>/etc/init.d/VBoxAutostart</strong></p>
<pre>#!/bin/bash
start-stop-daemon --start -c winserver2003 --exec /path/script.sh</pre>
<p><strong>Cose che capitano&#8230;</strong><br />
Ho avuto modo di provare più volte la procedura descritta qui sopra e di correggerla altrettante volte a causa di qualche &#8220;svista&#8221;. Alcuni fallimenti nella creazione/avvio della macchina virtuale però non sono relativi alla procedura da me descritta ed ho quindi deciso di elencarli per cercare di esservi d&#8217;aiuto.</p>
<p>Se, ad esempio, la macchina da linea di comando non si avvia con l&#8217;errore <strong><em>Invalid machine name!</em></strong> non è proprio detto che sia sbagliato il nome della macchina. Nel mio caso infatti mi ero scordato di creare la cartella <strong><em>/home/winserver2003/scambio</em></strong> che avevo impostato come cartella di scambio tra il sistema host e quello virtuale.</p>
<p>Altri errori sui permessi, ad esempio, dell&#8217;uso del cdrom o altre periferiche li ho risolti aggiungendo l&#8217;utente ai gruppi relativi (audio, cdrom, floppy, plugdev, ecc.)</p>
<p><strong>continua&#8230;</strong> :D</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tommyblue.it/2007/11/26/windows-server-2003-virtuale-su-debian-etch-con-virtualbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

