<?xml version="1.0" encoding="windows-1252"?><rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>Morzello.com - Informatica a bocconi</title><link>http://www.morzello.com/dblog/</link>
<description>Morzello.com - Informatica a bocconi</description><language>it</language>
<item>
	<title><![CDATA[CentOS: accedere alle partizioni NTFS]]></title>
	<description><![CDATA[Capita a volte di dover accedere a partizioni Windows (<span style="font-weight: bold;">NTFS</span>) da Linux ma non tutte le distribuzioni supportano nativamente la lettura/scrittura di queste partizioni. <span style="font-weight: bold;">CentOS </span>in particolare non ha il supporto a queste partizioni ne dentro il kernel ne dentro il repository ufficiale.<br /><br />E' comunque possibile accedere alle partizioni di Windows mediante il pacchetto <span style="font-weight: bold;">fuse </span>disponibile sul repository di <span style="font-style: italic;">rpmforge</span>. Per maggiori informazioni su come aggiungere ed abilitare un repository aggiuntivo per CentOS, potete consultare questo link:<br /><br /><a href="http://www.morzello.com/dblog/articolo.asp?articolo=68">http://www.morzello.com/dblog/articolo.asp?articolo=68</a><br /><br />Nell'esempio che segue, vedremo come montare una partizione ntfs in una cartella di linux come ad esempio <span style="font-style: italic;">/mnt/usb</span>.<br /><br />Per prima cosa, verifichiamo la <span style="font-weight: bold;">tavola delle partizioni</span> del disco. Nel nostro caso si tratta di un disco usb esterno:<br /><br />
<pre class="sourcecode">
fdisk -l /dev/sdb

Disk /dev/sdb: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       15298   122881153+   6  FAT16
/dev/sdb2           15299       22947    61440592+   7  HPFS/NTFS
</pre>
<br />Nel caso volessimo montare la seconda partizione senza supporto, riceveremmo un messaggio simile a questo:<br /><br />
<pre class="sourcecode">
mount /dev/sdb2 /mnt/usb
mount: unknown filesystem type 'ntfs'
</pre>
<br />Per risolvere il problema procediamo dunque all'installazione dei pacchetti necessari dal repository di rpmforge:<br /><br />
<pre class="sourcecode">
yum install fuse fuse-ntfs-3g
Loaded plugins: fastestmirror, priorities
Determining fastest mirrors
 * addons: ftp.uni-bayreuth.de
 * base: ftp.uni-bayreuth.de
 * extras: ftp.uni-bayreuth.de
 * rpmforge: apt.sw.be
 * updates: ftp.hosteurope.de
addons                                                   |  951 B     00:00
base                                                     | 2.1 kB     00:00
extras                                                   | 2.1 kB     00:00
rpmforge                                                 | 1.1 kB     00:00
updates                                                  | 1.9 kB     00:00
updates/primary_db                                       | 554 kB     00:00
478 packages excluded due to repository priority protections
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package fuse.i386 0:2.7.4-8.el5 set to be updated
---> Package fuse-ntfs-3g.i386 0:2009.11.14-1.el5.rf set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package            Arch       Version                     Repository      Size
================================================================================
Installing:
 fuse               i386       2.7.4-8.el5                 base            83 k
 fuse-ntfs-3g       i386       2009.11.14-1.el5.rf         rpmforge       552 k

Transaction Summary
================================================================================
Install      2 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 635 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): fuse-2.7.4-8.el5.i386.rpm                              |  83 kB     00:00
(2/2): fuse-ntfs-3g-2009.11.14-1.el5.rf.i386.rpm              | 552 kB     00:00
--------------------------------------------------------------------------------
Total                                                352 kB/s | 635 kB     00:01
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : fuse                                                      1/2
  Installing     : fuse-ntfs-3g                                              2/2

Installed:
  fuse.i386 0:2.7.4-8.el5
  fuse-ntfs-3g.i386 0:2009.11.14-1.el5.rf

Complete!
</pre>
<br />Ora è possibile ripetere il comando <span style="font-style: italic;">mount </span>come mostrato in precedenza.<br /><br />Alla prossima.]]></description>
	<link><![CDATA[http://www.morzello.com/dblog/articolo.asp?articolo=71]]></link>
	<guid isPermaLink="true">http://www.morzello.com/dblog/articolo.asp?articolo=71</guid>
	<dc:date>2010-03-11T16:53:48+01:00</dc:date>
	<dc:creator>vittorio</dc:creator>
</item>
<item>
	<title><![CDATA[Usare Ping In Script Batch]]></title>
	<description><![CDATA[Tempo fa avevo presentato un articolo che mostra come utilizzare il comando <span style="font-weight: bold;">ping </span>all'interno di un <span style="font-weight: bold;">batch script</span>: <br /><br /> <a href="http://www.morzello.com/dblog/articolo.asp?articolo=41"> http://www.morzello.com/dblog/articolo.asp?articolo=41</a> <br /><br /> Come spiegato, il comando restituisce sempre lo stesso <span style="font-weight: bold;">errorlevel</span>, rendendo vano un eventuale tentativo di capire se il ping è andato a buon fine o meno all'interno di uno script. <br /><br /> Oggi presento una variante che consente di ottenere lo stesso risultato <span style="font-weight: bold;">senza </span>dover scrivere <span style="font-weight: bold;">codice vbscript</span>. <br /> <br />Di seguito trovate un piccolo file .BAT (o .CMD) che potete utilizzare per testare l'esito di un ping: <br />
<pre class="sourceclass">
ping nomeserver | findstr "TTL="
echo %errorlevel%
</pre>
Mentre il comando ping restituisce sempre lo stesso errorlevel, <span style="font-weight: bold;">findstr </span>discrimina l'uscita a seconda che nell'output esista o meno una corrispondenza utile. A questo punto possiamo testare l'uscita del comando findstr invece che di ping. <br /><br /> Alla prossima.]]></description>
	<link><![CDATA[http://www.morzello.com/dblog/articolo.asp?articolo=70]]></link>
	<guid isPermaLink="true">http://www.morzello.com/dblog/articolo.asp?articolo=70</guid>
	<dc:date>2010-03-09T09:14:52+01:00</dc:date>
	<dc:creator>vittorio</dc:creator>
</item>
<item>
	<title><![CDATA[Resize di partizioni LVM]]></title>
	<description><![CDATA[Mi &egrave; capitato di recente, di dover migrare un piccolo server Linux su un server ESXi 4. La memoria ram della versione virtualizzata &egrave; stata espansa di 512 MB rendendo necessario una espansione della partizione di swap. Come accade per diverse distribuzioni che utilizzano <span style="font-weight: bold;">LVM </span>per gestire il file system (CentOS, Fedora,...) per variare le dimensioni di una partizione (<span style="font-weight: bold;">resizing</span>) bisogna tenere in considerazione alcuni fattori critici come ad esempio il rischio di perdere dati importanti presenti sul disco.<br /><br />L'esempio che segue mostra come ridurre la partizione LVM destinata al sistema operativo al fine di estenderne quella di swap. I comandi elencati per&ograve; possono essere utilizzati ovunque sia necessario fare il resize di partizioni LVM.<br /><br /><span style="font-weight: bold;">Individuare e gestire le partizioni LVM</span><br />Nel caso in cui il sistema operativo sia stato installato come consigliato dalla distribuzione, allora i volumi logici presenti sul disco conterranno l'intera distribuzione ad esclusione della partizione di boot. Questo vuol dire che per accedere al disco per fare le opportune modifiche &egrave; necessario accedervi dall'esterno. Per fare questo &egrave; sufficiente fare il boot da chiavetta usb o da distribuzione live.<br /><br />A me piace tanto Fedora, di conseguenza, per questo esempio, prender&ograve; in considerazione il cd live di Fedora, disponibile sul sito:<br /><br /><a target="_blank" href="http://fedoraproject.org/get-fedora">http://fedoraproject.org/get-fedora</a><br /><br />Una volta fatto il boot da cdrom avremo la possibilit&agrave; di verificare l'esistenza di partizioni LVM sul disco fisso. Basta aprire una finestra terminale ed impartire i seguenti comandi con credenziali di root:<br /><br />
<pre class="sourcecode">
[root@localhost liveuser]# su
[root@localhost liveuser]# pvscan
  PV /dev/sda2   VG VolGroup01   lvm2 [79.88 GB / 0    free]
  Total: 1 [79.88 GB] / in use: 1 [79.88 GB] / in no VG: 0 [0   ]

[root@localhost liveuser]# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "VolGroup01" using metadata type lvm2

[root@localhost liveuser]# lvscan
  ACTIVE            '/dev/VolGroup01/LogVol00' [78.88 GB] inherit
  ACTIVE            '/dev/VolGroup01/LogVol01' [1.00 GB] inherit
</pre>
<br />Si tratta di un disco da 80 GB&nbsp; (<span style="font-style: italic;">sda</span>) con due partizioni fisiche: <span style="font-style: italic;">sda1</span> per il boot ed <span style="font-style: italic;">sda2 </span>per LVM.<br />Dai comandi impartiti si evince che il dispositivo <span style="font-style: italic;">/dev/sda2</span> contiene un gruppo logico (<span style="font-style: italic;">VolGroup01</span>) con due partizioni (<span style="font-style: italic;">LogVol00 </span>per il sistema operativo e <span style="font-style: italic;">LogVol01 </span>per lo swap).<br /><br />Prima di procedere con il resize delle partizioni logiche bisogna essere certi che non vi siano dati nella parte finale del primo volume (<span style="font-style: italic;">LogVol00</span>) altrimenti questi saranno irrimediabilmente persi. Questa considerazione va fatta dal momento che per aggiungere un numero variabile di byte alla partizione di swap, bisogna prima sottrarli a quella del sistema operativo. Ovvio che se la partizione del SO &egrave; piena, il resize non sar&agrave; possibile.<br /><br /><span style="font-weight: bold;">Il resize delle partizioni logiche</span><br />Poich&egrave; LogVol00 &egrave; di tipo ext3, possiamo deframmentare l'unit&agrave; in modo da lasciare libero lo spazio in coda (<span style="font-weight: bold;">shrinking</span>):<br /><br />
<pre class="sourcecode">
[root@localhost liveuser]# e2fsck -f /dev/VolGroup01/LogVol00
e2fsck 1.41.9 (22-Aug-2009)
Adding dirhash hint to filesystem.

Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

/dev/VolGroup01/LogVol00: ***** FILE SYSTEM WAS MODIFIED *****
/dev/VolGroup01/LogVol00: 107628/20676608 files (1.3% non-contiguous), 1409699/20676608 blocks
</pre>
<br />Fatto questo procediamo con il resize della partizione ext3<br /><br />
<pre class="sourcecode">
[root@localhost liveuser]# resize2fs /dev/VolGroup01/LogVol00 77880M
resize2fs 1.41.9 (22-Aug-2009)
Resizing the filesystem on /dev/VolGroup01/LogVol00 to 19937280 (4k) blocks.
The filesystem on /dev/VolGroup01/LogVol00 is now 19937280 blocks long.
</pre>
<br />Con il comando precedente abbiamo tolto alla partizione <span style="font-style: italic;">1 G</span> definendo le nuove dimensioni (<span style="font-style: italic;">77880M</span>)<br /><br />Adesso finalmente possiamo contrarre la partizione logica del primo volume ed estendere la seconda:<br /><br />
<pre class="sourcecode">
[root@localhost liveuser]# lvresize /dev/VolGroup01/LogVol00 --size -1G
  WARNING: Reducing active logical volume to 77.88 GB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce LogVol00? [y/n]: y
  Reducing logical volume LogVol00 to 77.88 GB
  Logical volume LogVol00 successfully resized

[root@localhost liveuser]# lvresize /dev/VolGroup01/LogVol01 --size +1G
  Extending logical volume LogVol01 to 2.00 GB
  Logical volume LogVol01 successfully resized
</pre>
<br />In questo caso abbiamo utilizzato valori relativi (<span style="font-style: italic;">-/+1 G</span>)<br /><br />Per finire, possiamo procedere con la formattazione della nuova partizione di swap<br /><br />
<pre class="sourcecode">
[root@localhost ~]# mkswap /dev/VolGroup01/LogVol01
Setting up swapspace version 1, size = 2147479 kB
</pre>
<br />Dopo un reboot tutto &egrave; pronto.<br />Alla prossima.

]]></description>
	<link><![CDATA[http://www.morzello.com/dblog/articolo.asp?articolo=69]]></link>
	<guid isPermaLink="true">http://www.morzello.com/dblog/articolo.asp?articolo=69</guid>
	<dc:date>2010-03-05T18:07:19+01:00</dc:date>
	<dc:creator>vittorio</dc:creator>
</item>
<item>
	<title><![CDATA[Repository aggiuntivi in CentOS e Fedora]]></title>
	<description><![CDATA[<p>Come tutte le grandi distribuzioni open source, sia <span style="font-weight: bold;">CentOS </span>che <span style="font-weight: bold;">Fedora </span>godono  di un ampio repository ed offrono supporto ad una vasta gamma di programmi.</p>

<p>Non tutte le applicazioni però sono disponibili all'interno della distribuzione e di conseguenza nel repository ufficiale.</p>

<p>Repository non ufficiali possono essere utilizzati come valida alternativa alla compilazione dei sorgenti.</p>

<p>Bisogna però fare attenzione perché utilizzare repository sconosciuti potrebbe compromettere il sistema operativo, sia dal punto di vista della sicurezza che da quello della stabilità.</p>

<p>In questo articolo spiegheremo brevemente come accedere a repository non ufficiali tramite <span style="font-weight: bold;">yum</span>.</p>

<p><span style="font-weight: bold;">La priorità dei repository</span><br />Quando si ha a che fare con più repository esiste un <span style="font-weight: bold;">concetto di priorità </span>che bisogna tenere in considerazione altrimenti si rischia di fare l'aggiornamento dei pacchetti di base su un repository non ufficiale come ad esempio quello di test.</p>

<p>Yum consente di priorizzare i repository in base alle proprie esigenze mediante un apposito plugin che può essere installato con il seguente comando:</p>

<pre class="sourcecode">
yum install yum-priorities
</pre>

<p>Per consentire l'uso dei plugin in yum è necessario modificare il file<span style="font-style: italic;"> /etc/yum.conf</span>:</p>

<pre class="sourcecode">
[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
distroverpkg=redhat-release
tolerant=1
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1

# Note: yum-RHN-plugin doesn't honor this.
metadata_expire=1h

installonly_limit = 5

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
</pre>

<p>aggiungendo eventualmente la riga <span style="font-weight: bold;">"plugins=1"</span></p>

<p>Un seconda abilitazione deve essere fatta per ogni singolo plugin installato. Nel nostro caso quindi bisogna modificare il file<span style="font-style: italic;"> /etc/yum/pluginconf.d/priorities.conf </span>impostando il parametro <span style="font-weight: bold;">enabled</span>:</p>

<pre class="sourcecode">
[main]
enabled = 1
</pre>

<p>Una volta abilitato il plugin è possibile gestire la priorita di ogni repository aggiungendo il parametro <span style="font-weight: bold;">priority=N</span> in nel relativo file di configurazione. N è un numero che va da 1 a 99 ed esprime una gerarchia. A valori di N più elevati corrispondono repository con priorità più bassa.</p>

<p>Nella cartella <span style="font-style: italic;">/etc/yum.repos.d</span> sono presenti i files relativi ai singoli repository. L'esempio seguente si riferisce al file <span style="font-style: italic;">/etc/yum.repos.d/CentOS-Base.repo</span>:</p>

<pre class="sourcecode">
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1

#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
#baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=2

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=2
</pre>

<p>Da notare come i repository di base abbiano tutti priorità 1.</p>

<p><span style="font-weight: bold;">Importare il repository di rpmforge</span><br />Prima di importare un nuovo repository è bene<span style="font-weight: bold;"> verificarne l'autenticità</span>. Ogni repository inoltre dovrebbe essere dotato di una <span style="font-weight: bold;">chiave GPG</span> che consenta a yum di verificare la provenienza dei pacchetti.</p>

<p>Nell'esempio che segue, aggiungeremo una chiave valida per <span style="font-style: italic;">rpmforge</span>:</p>

<pre class="sourcecode">
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
</pre>

<p>Anche se può sembrare strano, è necessario importare la chiave prima del repository stesso altrimenti yum non sarà in grado di certificarne l’installazione.</p>

<p>Prima di installare il repository bisogna<span style="font-weight: bold;"> identificare l’architettura hardware</span> che si intende utilizzare (ad esempio i386 oppure x86_64). Fare uqesta sceltà è necessaria perché ogni architettura ha un percorso diverso. Per capire con ragionevole certezza quale sia l’architettura corretta è sufficiente impartire il seguente comando:</p>

<pre class="sourcecode">
uname -i
</pre>

<p>A questo punto possiamo scegliere tra:</p>
<ul>
    <li><a href="http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm" target=_blank>http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm</a> (i386)</li>
    <li><a href="http://apt.sw.be/redhat/el5/en/x86_64/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm" target=_blank>http://apt.sw.be/redhat/el5/en/x86_64/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm</a> (x86_64)</li>
</ul>

<p>dopo aver scaricato il pacchetto procediamo con la verifica: </p>

<pre class="sourcecode">
wget http://apt.sw.be/redhat/el5/en/x86_64/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.$(uname -i).rpm
rpm -K rpmforge-release-0.3.6-1.el5.rf.*.rpm
rpmforge-release-0.3.6-1.el5.rf.i386.rpm: (sha1) dsa sha1 md5 gpg OK
</pre>

<p>Ora possiamo <span style="font-weight: bold;">procedere con l’installazione</span>:</p>

<pre class="sourcecode">
rpm -i rpmforge-release-0.3.6-1.el5.rf.*.rpm
</pre>

<p>Infine <span style="font-weight: bold;">aggiungiamo una priorità</span> più alta per questo repository:</p>

<pre class="sourcecode">
echo "priority = 5" >> /etc/yum.repos.d/rpmforge.repo
</pre>

<p><span style="font-weight: bold;">Installare repository di test</span><br />Possiamo fare lo stesso discorso con i <span style="font-weight: bold;">repository di test</span>. L’esempio che segue si applica a CentOS 5:</p>

<pre class="sourcecode">
cd /etc/yum.repos.d
wget http://dev.centos.org/centos/5/CentOS-Testing.repo
</pre>

<p>Dando un’occhiata al file noterete che il repository è disabilitato. Questo è molto importante perché in genere i repository di test sono molto instabili ed il loro uso potrebbe essere causa di instabilità in ambienti di produzione.</p>

<p>Quando si intende usare un repository disabilitato è possibile eseguire yum con il parametro <span style="font-weight: bold;">--enablerepo=REPO</span> dove REPO è il nome del repository. Ad esempio:</p>

<pre class="sourcecode">
yum --enablerepo=c5-testing install pacchetto
</pre>

<p><span style="font-weight: bold;">Altro sui repository</span><br />A fronte di più repository, quando si esegue yum per un aggiornamento del sistema si noterà certamente l’esclusione di alcuni pacchetti:</p>

<pre class="sourcecode">
yum update</p>
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * addons: centos.bio.lmu.de
 * base: ftp.halifax.rwth-aachen.de
 * extras: centos.bio.lmu.de
 * rpmforge: fr2.rpmfind.net
 * updates: mirror.avalonsys.eu
478 packages excluded due to repository priority protections
Setting up Update Process
No Packages marked for Update
</pre>

<p>Alcuni pacchetti marcati come da aggiornare non saranno scartati se sono marcati come da non aggiornare in un repository con priorità più bassa. Per verificare quali pacchetti sono stati esclusi è possibile usare il parametro <span style="font-weight: bold;">–d3</span>:</p>

<pre class="sourcecode">
yum -d3 update
Loaded plugins: fastestmirror, priorities
Config time: 0.136
Yum Version: 3.2.22
Setting up Package Sacks
Loading mirror speeds from cached hostfile
 * addons: mirror.silyus.net
 * base: ftp.halifax.rwth-aachen.de
 * extras: mirror.silyus.net
 * rpmforge: fr2.rpmfind.net
 * updates: mirror.avalonsys.eu
 --> subversion-perl-1.6.3-0.1.el5.rf.i386 from rpmforge excluded (priority)
 --> php-pecl-memcache-2.1.2-1.el5.rf.i386 from rpmforge excluded (priority)
 --> perl-DBD-Pg-2.10.7-1.el5.rf.i386 from rpmforge excluded (priority)
 --> qemu-0.9.0-2.el5.rf.i386 from rpmforge excluded (priority)
 --> subversion-perl-1.3.2-0.2.el5.rf.i386 from rpmforge excluded (priority)
 --> fuse-2.7.4-1.el5.rf.i386 from rpmforge excluded (priority)
 --> lftp-3.5.11-1.el5.rf.i386 from rpmforge excluded (priority)
...
</pre>

<p>Alla prossima.</p>]]></description>
	<link><![CDATA[http://www.morzello.com/dblog/articolo.asp?articolo=68]]></link>
	<guid isPermaLink="true">http://www.morzello.com/dblog/articolo.asp?articolo=68</guid>
	<dc:date>2010-03-02T03:54:59+01:00</dc:date>
	<dc:creator>vittorio</dc:creator>
</item>
<item>
	<title><![CDATA[Configurare il layout di default durante il logon (Windows)]]></title>
	<description><![CDATA[<p>Avete installato una versione inglese di windows e durante il logon non riuscite ad inserire la password correttamente perchè i caratteri speciali non corrispondono a quelli indicati sulla tastiera?</p>
<p>Secondo Microsoft è sufficiente indicare le impostazioni internazionali di default tramite l'icona "regional Settings" (Impostazioni Internazionali) presente nel pannello di controllo:</p>
<p> </p>
<center><a href="http://www.morzello.com/public/67-01.png"><img src="http://www.morzello.com/public/67-01.png" width="400" alt="" /></a></center>
<p> </p>
<p>Per quanto riguarda il logon questo non basta.</p>
<p>La soluzione che vi propongo consiste nel mettere mano al file di registro.</p>
<p> </p>
<pre class="sourcecode">Windows Registry Editor Version 5.00
[HKEY_USERS\.DEFAULT\Keyboard Layout\Preload]
"1"="00000410"
"2"="00000409"
</pre>
<p> </p>
<p>Basta copiare ed incollare le righe seguenti in un file di testo con estensione ".reg" e successivamente importarlo nel file di registro cliccando due volte sul file:</p>
<p>In questo modo la tastiera italiana (cod 410) verrà caricata al posto di quella inglese (cod 409).</p>
<p>Un elenco completo delle lingue supportate è disponibile sempre nel file di registro ma ad un indirizzo diverso:</p>
<p> </p>
<pre class="sourcecode">HKLM\SYSTEM\CurrentControlSet\Control\KeyboardLayout\DosKeybCodes
</pre>
<p> </p>
<p>Per comodità riporto i codici nella tabella seguente.</p>
<p>
<center>
<table border="0" width="49%">
    <tbody>
        <tr>
            <td width="21%">00000402</td>
            <td width="79%">Bulgarian</td>
        </tr>
        <tr>
            <td width="21%">0000041a</td>
            <td width="79%">Croatian</td>
        </tr>
        <tr>
            <td width="21%">00000405</td>
            <td width="79%">Czech</td>
        </tr>
        <tr>
            <td width="21%">00000406</td>
            <td width="79%">Danish</td>
        </tr>
        <tr>
            <td width="21%">00000413</td>
            <td width="79%">Dutch (Standard)</td>
        </tr>
        <tr>
            <td width="21%">00000813</td>
            <td width="79%">Dutch (Belgian)</td>
        </tr>
        <tr>
            <td width="21%">00000c09</td>
            <td width="79%">English (Australian)</td>
        </tr>
        <tr>
            <td width="21%">00001009</td>
            <td width="79%">English (Canadian)</td>
        </tr>
        <tr>
            <td width="21%">00001809</td>
            <td width="79%">English (Irish)</td>
        </tr>
        <tr>
            <td width="21%">00000409</td>
            <td width="79%">English (United States)</td>
        </tr>
        <tr>
            <td width="21%">00000809</td>
            <td width="79%">English (United Kingdom)</td>
        </tr>
        <tr>
            <td width="21%">00001409</td>
            <td width="79%">English (New Zealand)</td>
        </tr>
        <tr>
            <td width="21%">0000040b</td>
            <td width="79%">Finnish</td>
        </tr>
        <tr>
            <td width="21%">0000040c </td>
            <td width="79%">French (Standard)</td>
        </tr>
        <tr>
            <td width="21%">0000080c</td>
            <td width="79%">French (Belgian)</td>
        </tr>
        <tr>
            <td width="21%">0000100c</td>
            <td width="79%">French (Swiss)</td>
        </tr>
        <tr>
            <td width="21%">00000c0c</td>
            <td width="79%">French (Canadian)</td>
        </tr>
        <tr>
            <td width="21%">00000407</td>
            <td width="79%">German (Standard)</td>
        </tr>
        <tr>
            <td width="21%">00000807</td>
            <td width="79%">German (Swiss)</td>
        </tr>
        <tr>
            <td width="21%">00000c07</td>
            <td width="79%">German (Austrian)</td>
        </tr>
        <tr>
            <td width="21%">00000408</td>
            <td width="79%">Greek</td>
        </tr>
        <tr>
            <td width="21%">0000040e</td>
            <td width="79%">Hungarian</td>
        </tr>
        <tr>
            <td width="21%">0000040f</td>
            <td width="79%">Icelandic</td>
        </tr>
        <tr>
            <td width="21%">00000410</td>
            <td width="79%">Italian (Standard)</td>
        </tr>
        <tr>
            <td width="21%">00000810</td>
            <td width="79%">Italian (Swiss)</td>
        </tr>
        <tr>
            <td width="21%">00000414</td>
            <td width="79%">Norwegian (Bokmal)</td>
        </tr>
        <tr>
            <td width="21%">00000814 </td>
            <td width="79%">Norwegian (Nynorsk)</td>
        </tr>
        <tr>
            <td width="21%">00000415 </td>
            <td width="79%">Polish</td>
        </tr>
        <tr>
            <td width="21%">00000816</td>
            <td width="79%">Portuguese (Standard)</td>
        </tr>
        <tr>
            <td width="21%">00000416</td>
            <td width="79%">Portuguese (Brazilian)</td>
        </tr>
        <tr>
            <td width="21%">00000418</td>
            <td width="79%">Romanian</td>
        </tr>
        <tr>
            <td width="21%">00000419</td>
            <td width="79%">Russian</td>
        </tr>
        <tr>
            <td width="21%">0000041b</td>
            <td width="79%">Slovak</td>
        </tr>
        <tr>
            <td width="21%">00000424</td>
            <td width="79%">Slovenian</td>
        </tr>
        <tr>
            <td width="21%">0000080a</td>
            <td width="79%">Spanish (Mexican)</td>
        </tr>
        <tr>
            <td width="21%">0000040a</td>
            <td width="79%">Spanish (Traditional Sort)</td>
        </tr>
        <tr>
            <td width="21%">00000c0a</td>
            <td width="79%">Spanish (Modern Sort)</td>
        </tr>
        <tr>
            <td width="21%">0000041d</td>
            <td width="79%">Swedish</td>
        </tr>
        <tr>
            <td width="21%">0000041f</td>
            <td width="79%">Turkish</td>
        </tr>
    </tbody>
</table>
</center>
</p>
Alla prossima]]></description>
	<link><![CDATA[http://www.morzello.com/dblog/articolo.asp?articolo=67]]></link>
	<guid isPermaLink="true">http://www.morzello.com/dblog/articolo.asp?articolo=67</guid>
	<dc:date>2010-02-14T11:56:03+01:00</dc:date>
	<dc:creator>vittorio</dc:creator>
</item>
<item>
	<title><![CDATA[Ternimal Server e l'errore: "il dominio specificato non esiste..."]]></title>
	<description><![CDATA[<span style="font-weight: bold;">"The specified domain either does not exist or could not be contacted"</span> è un errore che è possibile riscontrare quando si tenta un logon con utenza di dominio in terminal server (remote desktop). Capita quando ad esempio la macchina a cui si tenta di fare l'accesso è momentaneamente scollegata dal dominio ovvero quando il dominio non è raggiungibile.<br /><br />Di solito questo problema viene risolto ripristinando la connessione con il domain controller. Ci sono dei casi in cui la connessione manca per motivi non legati alla funzionalità del server. Poniamo ad esempio il caso in cui volessimo accedere ad un portatile aziendale situato temporaneamente fuori dalla rete aziendale.<br /><br />Per utilizzare le credenziali presenti sulla macchina evitando l'interruzione della connessione in caso di mancanza del domain controller è possibile mettere mano al file di registro con credenziali amministrative.<br /><br />E' sufficiente creare un file di testo con estensione <span style="font-style: italic;">".reg" </span>e inserire il seguente contenuto:<br /><br />
<pre class="sourcecode">
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
"IgnoreRegUserConfigErrors"=dword:00000001
</pre><br/>
Basta poi cliccare due volte sul file per inserire i dati nel registro di sistema.<br /><br />Alla prossima.<br />]]></description>
	<link><![CDATA[http://www.morzello.com/dblog/articolo.asp?articolo=66]]></link>
	<guid isPermaLink="true">http://www.morzello.com/dblog/articolo.asp?articolo=66</guid>
	<dc:date>2010-02-10T09:59:29+01:00</dc:date>
	<dc:creator>vittorio</dc:creator>
</item>
<item>
	<title><![CDATA[Gestire le cartelle della tombola in Excel]]></title>
	<description><![CDATA[Certo che per inserire questo articolo nella sezione dell'Office Automation ci vuole coraggio ma in fin dei conti si tratta sempre di Excel.<br />In queste vacanze ho giocato a tombola con la mia famiglia; ovviamente non ho vinto nulla ma mi sono divertito ugualmente. Un geek malato di informatica come me non poteva escludere il computer in una occasione come questa.<br />Ovviamente al posto di usare le lenticchie, le bucce d'arancia o altri segnaposto per tenere traccia dei numeri estratti ho decisao di usare un foglio di calcolo.<br />Per dirla tutta ho usato OpenOffice ma la sostanza non cambia dal momento che ho fatto uso delle formule standard.<br /><br />In pratica sono bastati un paio di cerca.vert per tenere traccia dei numeri estratti e delle eventuali vincite.<br /><br /><center><a href="http://www.morzello.com/public/65-1.png">
<img src="http://www.morzello.com/public/65-1.png" width=400></a></center><br /><br />
Per chi fosse interessato, alla fine di questo articolo è possibile scaricare sia la versione <span style="font-weight: bold;">xls</span> che <span style="font-weight: bold;">ods</span>.<br /><br />Il file si compone di tre fogli:<br />
<ul>
    <li><span style="font-weight: bold;">Estrazioni</span> - E' una sorta di deshboard in cui visualizzare lo stato delle cartelle ed i numeri che di volta in volta vengono estratti. Man mano che si procede con l'estrazione è possibile vedere cosa succede su ogni cartella: dall'ambo alla tombola;</li>
    <li><span style="font-weight: bold;">Cartelle</span> - Contiene i dati relativi a tutte le cartelle possedute. In particolare contiene i numeri così come sono riportate sulla cartella originale. E' qui che l'utente deve inserire i numeri appartenenti alle cartelle in tre righe da cinque collonne ciascuna;</li>
    <li><span style="font-weight: bold;">Vincita</span> - Contiene un pannello che consente di calcolare facilmente le quote da assegnare alla tombola, alla cinquina e così via fino all'ambo. Il calcolo tiene conto del costo di ogni singola cartella e del numero di cartelle assegnate (comprensive delle sei cartelle che costituiscono il tabellone);</li>
</ul>
Si tratta di certo di un prodotto migliorabile ma sinceramente io non sono andato oltre dal momento che si tratta di un lavoro svolto in mezz'ora durante le vacanze di natale.<br /><br />per scaricare il file cliccate <a href="http://www.morzello.com/repository/office/tombola.zip">qui.</a><br /><br />alla prossima.]]></description>
	<link><![CDATA[http://www.morzello.com/dblog/articolo.asp?articolo=65]]></link>
	<guid isPermaLink="true">http://www.morzello.com/dblog/articolo.asp?articolo=65</guid>
	<dc:date>2009-12-29T15:33:58+01:00</dc:date>
	<dc:creator>vittorio</dc:creator>
</item>
<item>
	<title><![CDATA[Sono io oppure il sito è proprio giù?]]></title>
	<description><![CDATA[<p>Ieri mi è capitato di impazzire nel tentativo di capire se il sito di Google fosse giù o se più semplicemente era la mia connessione ad avere problemi.</p>
<p>Poi ho trovato un modo semplice e veloce di fare una verifica.</p>
<p>In pratica ho demandato ad un sito posto dall'altro capo del mondo di fare una richiesta al server da parte mia. Si tratta di un metodo alternativo all'uso di <strong>ping</strong> e <strong>traceroute</strong> vari dal momento che non fa uso di traffico <strong>icmp</strong>.</p>
<p>Per chi volesse fare un giro sul sito in questione, di seguito troverà il link:</p>
<p><a target="_blank" href="http://downforeveryoneorjustme.com/">http://downforeveryoneorjustme.com/</a></p>
<p>Per chi volesse testare direttamente la destinazione dall'url può digiare il link nel formato:</p>
<p><strong>http://downforeveryoneorjustme.com/nomesito</strong> dove per <i>nomesito</i> si intende il nome dell'host.</p>
<p>Per Google ad esempio potreste scrivere:</p>
<p><a target="_blank" href="http://downforeveryoneorjustme.com/www.google.com">http://downforeveryoneorjustme.com/www.google.com</a></p>
Alla prossima.]]></description>
	<link><![CDATA[http://www.morzello.com/dblog/articolo.asp?articolo=63]]></link>
	<guid isPermaLink="true">http://www.morzello.com/dblog/articolo.asp?articolo=63</guid>
	<dc:date>2009-11-17T22:09:11+01:00</dc:date>
	<dc:creator>vittorio</dc:creator>
</item>
<item>
	<title><![CDATA[Windows - Visualizzare la linguetta protezione per i files]]></title>
	<description><![CDATA[Quando si acquista una licenza di Windows nella versione Home, la linguetta riguardante la protezione dei files accessibile per mezzo del menù proprietà risulta essere disabilitato.<br /><br />In realtà, la protezione dei files viene gestita in autonomia dal sistema operativo a meno di non usare un file system di tipo FAT32.<br /><br />A volte però questa scelta può essere un limite.<br /><br />Per abilitare la linguetta per singolo utente è sufficiente modificare il file di registro:<br /><br />
<pre class="sourcecode">
Hive: HKEY_CURRENT_USER
Key: Software\Microsoft\windows\CurrentVersion\Policies\Explorer
Name: Nosecuritytab
Type: REG_DWORD
Value: 0
</pre>
<br />E' possibile trovare manualmente la chiave ed impostare il valore a 0 oppure eliminarla.<br /><br />Ricordate che la linguetta si applica solo a file sytem di tipo NTFS.]]></description>
	<link><![CDATA[http://www.morzello.com/dblog/articolo.asp?articolo=62]]></link>
	<guid isPermaLink="true">http://www.morzello.com/dblog/articolo.asp?articolo=62</guid>
	<dc:date>2009-11-02T01:28:52+01:00</dc:date>
	<dc:creator>vittorio</dc:creator>
</item>
<item>
	<title><![CDATA[Excel - una funzione per i colori delle celle]]></title>
	<description><![CDATA[Vi &egrave; mai capitato di dover <span style="font-weight: bold;">ordinare </span>o <span style="font-weight: bold;">filtrare </span>una lista in excel in base al <span style="font-weight: bold;">colore </span>delle celle?<br /><br />Qualche giorno fa ho fornito ad un cliente una lista chiedendo di indicare le voci superflue.<br /><br />Quando ho ricevuto la lista rielaborata, mi sono accorto che il cliente aveva usato due colori per discriminare gli elementi: il <span style="font-style: italic;">giallo </span>ed il <span style="font-style: italic;">rosso</span>.<br /><br />Ma come fare a filtrare gli elementi in base al colore?<br /><br />Visto che le formule non mi sono state di grande aiuto, ho deciso di scriverne una io.<br /><br />Di seguito presento una <span style="font-style: italic;">funzione </span>in grado di <span style="font-weight: bold;">restituire il colore di una cella</span> (o range di celle). Il colore pu&ograve; essere riferito allo <span style="font-weight: bold;">sfondo </span>(motivo) oppure al <span style="font-weight: bold;">tratto </span>(foreground).<br /><br />La funzione dovrebbe restituire (dico dovrebbe perch&eacute; non ne sono sicuro) un valore a 24 bit rappresentante la codifica del colore (8x8x8)<br /><br />L'importante per&ograve; &egrave; avere un valori diversi per colori diversi.<br /><br />
<pre class="sourcecode">Public Function Colore(r As Range, Tipo As String) As Long<br />    Select Case UCase(Tipo)<br />        Case &quot;MOTIVO&quot;<br />            Colore = r.Interior.Color<br />            <br />        Case &quot;TRATTO&quot;<br />            Colore = r.Font.Color<br />            <br />        Case Else<br />        <br />            Colore = -1<br />    End Select<br />End Function<br /></pre>
<br /><br />Per ottenere il valore relativo al tratto possiamo usare ad esempio la formula:<br /><br />
<pre class="sourcecode">=colore(A1;&quot;tratto&quot;)<br /></pre>
<br /><br />Mentre per lo sfondo possiamo usare ad esempio la formula:<br /><br />
<pre class="sourcecode">=colore(A1;&quot;motivo&quot;)</pre>
<br /> <center><a href="http://www.morzello.com/public/61-01.png"><img src="http://www.morzello.com/public/61-01.png" alt="" /></a></center> <br /><br /> <center><a href="http://www.morzello.com/public/61-02.png"><img src="http://www.morzello.com/public/61-02.png" alt="" /></a></center> <br />Per comodit&agrave; al fondo di questo articolo ho inserito una add-in excel (formato xla) contenente la funzione.<br /><br /><a href="http://www.morzello.com/repository/office/xls-colore.zip">Scarica l'add-in</a><br /><br />Alla prossima.]]></description>
	<link><![CDATA[http://www.morzello.com/dblog/articolo.asp?articolo=61]]></link>
	<guid isPermaLink="true">http://www.morzello.com/dblog/articolo.asp?articolo=61</guid>
	<dc:date>2009-10-12T01:44:25+01:00</dc:date>
	<dc:creator>vittorio</dc:creator>
</item>
<item>
	<title><![CDATA[IPCop - Come aprire la rete Green alla rete Blue]]></title>
	<description><![CDATA[<p>La <strong>Blue Net</strong> di <strong>IPCop</strong> serve ad interfacciare una connettività <em>wifi</em> che si ntende mantenere separata dalla rete locale <em>LAN</em> (<strong>Green Net</strong>). Questo per consentire una maggiore sicurezza, dal momento che gli <em>endpoint</em> che si collegano ad IPCop tramite wifi non vedranno la rete locale a meno di aprire le porte desiderate per i protocolli <em>TCP</em> ed <em>UDP</em>.</p>
<p>IPCop però non supporta nativamente il <em>bridging</em> delle schede di rete e non risulta agevole simulare il comportamento tipico dei <em>router adsl</em> comunemente in commercio nei negozi al giorno d'oggi. Non c'è modo infatti, tramite interfaccia grafica, di consentire il pieno accesso alla Green Net da parte dei computer che si collegano per mezzo della wifi (vedi ad esempio il trafico <em>ICMP</em>).</p>
<p>Mi è capitato di recente di installare una versione di IPCop con supporto wifi per mezzo dell'addon <em>WLAN-AP</em> e di dover simulare proprio il tipico comportamento dell'<em>Access Point</em>, dove la rete cablata è condivisa con quella senza fili.</p>
<p>Per abilitare tutto il traffico ho inserito alcune righe nel file <em>/etc/rc.d/rc.firewall.local</em> che è il file contenente i comandi da impartire al sistema operativo durante il boot per personalizzare le regole di firewalling senza interferire con la distribuzione:</p>
<pre class="sourcecode">/sbin/iptables -A CUSTOMFORWARD -i ath0 -o eth0 -p icmp -j ACCEPT
/sbin/iptables -A CUSTOMFORWARD -i ath0 -o eth0 -p tcp -j ACCEPT
/sbin/iptables -A CUSTOMFORWARD -i ath0 -o eth0 -p udp -j ACCEPT
</pre>
<p>Queste righe sono state inserite nella sezione <strong>start</strong> (ovviamente). In linea di principio, per abiitare un protocollo è sufficiente impartire il comando secondo a forma:</p>
<pre class="sourcecode">/sbin/iptables -A CUSTOMFORWARD -i 'blue device' -o 'green device' -p 'protocollo' -j ACCEPT
</pre>
<p>Per comodità, di seguito è riportato un esempio di rc.firewall.local che svolge questa attività:</p>
<pre class="sourcecode">#!/bin/sh
# Used for private firewall rules
# See how we were called.
case "$1" in
start)
## add your 'start' rules here
#morzello blue vs green
/sbin/iptables -A CUSTOMFORWARD -i ath0 -o eth0 -p icmp -j ACCEPT
/sbin/iptables -A CUSTOMFORWARD -i ath0 -o eth0 -p tcp -j ACCEPT
/sbin/iptables -A CUSTOMFORWARD -i ath0 -o eth0 -p udp -j ACCEPT
;;
stop)
## add your 'stop' rules here
;;
reload)
$0 stop
$0 start
## add your 'reload' rules here
;;
*)
echo "Usage: $0 {start|stop|reload}"
;;
esac
</pre>
<p>Spero che questo articolo possa essere utile a chi deve ottenere questo risultato.</p>
]]></description>
	<link><![CDATA[http://www.morzello.com/dblog/articolo.asp?articolo=60]]></link>
	<guid isPermaLink="true">http://www.morzello.com/dblog/articolo.asp?articolo=60</guid>
	<dc:date>2009-10-01T19:36:24+01:00</dc:date>
	<dc:creator>vittorio</dc:creator>
</item>
<item>
	<title><![CDATA[Un Domain Controller in CentOS/Fedora per la piccola e media impresa]]></title>
	<description><![CDATA[In questo articolo viene proposto un modo facile e veloce di creare un <span style="font-weight: bold;">DC</span> (Domain Controller) per ambienti Windows utilizzando <span style="font-weight: bold;">Samba</span>.<br />Va detto che la soluzione &egrave; dimensionata per la <span style="font-weight: bold;">piccola e media impresa</span>, dove il numero di utenti generalmente non supera le cento unit&agrave;.<br />Facile e veloce perch&eacute; impiega un solo server e non prevede ridondanza.<br />Per l'articolo ho scelto di utilizzare <span style="font-weight: bold;">CentOS </span>ma dovrebbe funzionare anche con <span style="font-weight: bold;">Fedora</span>.<br /><br /><span style="font-weight: bold;">Prerequisiti</span><br />La soluzione prevede il deployment all'interno di una rete locale (LAN); si presuppone dunque che i servizi di DNS (per la risoluzione dei nomi) e DHCP (per l'assegnazione automatica degli indirizzi IP) funzionino a dovere.<br />La lista della spesa  Per far girare &quot;il tutto&quot; &egrave; necessario installare sulla macchina alcuni pacchetti fondamentali di samba. Per verificare i pacchetti gi&agrave; installati &egrave; sufficiente usare <span style="font-style: italic;">yum</span>:  <br /><br />
<pre class="sourcecode">[root@myserver ~]# yum list *samba*<br /> Loaded plugins: fastestmirror<br /> Loading mirror speeds from cached hostfile<br />  * base: centos.fastbull.org<br />  * updates: centos.fastbull.org<br />  * addons: centos.fastbull.org<br />  * extras: centos.kiewel-online.ch<br /> base				| 1.1 kB 00:00<br /> updates			|  951 B 00:00<br /> addons				|  951 B 00:00<br /> extras				| 1.1 kB 00:00<br /> Installed Packages samba.i386	3.0.33-3.7.el5_3.1	installed<br /> samba-client.i386		3.0.33-3.7.el5_3.1	installed<br /> samba-common.i386		3.0.33-3.7.el5_3.1	installed<br /> system-config-samba.noarch	1.2.41-3.el5		installed<br /> Available Packages<br /> samba-swat.i386		3.0.33-3.7.el5_3.1	updates<br /> sblim-cmpi-samba.i386		0.5.2-31.el5_2.1	base<br /> sblim-cmpi-samba-devel.i386	1-31.el5_2.1		base<br /> sblim-cmpi-samba-test.i386	1-31.el5_2.1		base<br /></pre>
<br />  Nel nostro caso samba &egrave; gi&agrave; installato. Nel caso in cui fosse necessario installare il software possiamo sempre utilizzare <span style="font-style: italic;">yum</span>:  <br /><br />
<pre class="sourcecode">yum install samba </pre>
<br />  I pacchetti fondamentali sono:  <br /><br />
<pre class="sourcecode">samba.i386 <br />samba-common.i386<br />system-config-samba.noarch </pre>
<br />  Degli altri possiamo anche farne a meno.   <br /><br /><span style="font-weight: bold;">Personalizzare il servizio</span><br />Nel nostro caso, Samba dovr&agrave; funzionare come DC, per questo motivo &egrave; necessario editare il file <span style="font-style: italic;">/etc/samba/smb.conf</span> indicando le corrette impostazioni. Di seguito un esempio di configurazione possibile:  <br /><br />
<pre class="sourcecode">[global]<br /> workgroup = MORZELLO<br /> server string = Samba Server Version %v<br /> passdb backend = tdbsam<br /> add user script = /usr/sbin/useradd &quot;%u&quot; -n -g users<br /> delete user script = /usr/sbin/userdel &quot;%u&quot;<br /> add group script = /usr/sbin/groupadd &quot;%g&quot;<br /> delete group script = /usr/sbin/groupdel &quot;%g&quot;<br /> delete user from group script = /usr/sbin/userdel &quot;%u&quot; &quot;%g&quot;<br /> add machine script = <br />     /usr/sbin/useradd -n -c &quot;Workstation (%u)&quot; -M -d /nohome<br />     -s /bin/false &quot;%u&quot;<br /> logon script = %u.bat<br /> logon path =<br /> domain logons = Yes<br /> domain master = Yes<br /> wins support = Yes<br /> username map = /etc/samba/smbusers<br />[homes]<br /> comment = Home Directories<br /> read only = No<br /> browseable = No </pre>
<br />  Il file di configurazione contiene solo ed esclusivamente i dati strettamente necessari per far funzionare il servizio come <span style="font-weight: bold;">PDC </span>(Primary Domain Controller).<br />Probabilmente il lettore vorr&agrave; successivamente attivare altre voci come ad esempio le stampanti di rete e le cartelle di rete.<br />Queste informazioni non sono strettamente necessarie e per questo motivo non sono trattate in questa sede.<br />Per dare un senso al nostro operato cerchiamo di capire il significato delle voci principali che compongono il nostro file di configurazione:<br />
<ul>
    <li><span style="font-weight: bold;">workgroup</span>: indica il nome del nostro dominio;</li>
    <li><span style="font-weight: bold;">passdb backend</span>: indica come samba gestir&agrave; le utenze windows. specificando tdbsam samba autenticher&agrave; gli utenti e le macchine appartenenti al dominio mediante il proprio database, senza utilizzare servizi esterni come ad esempio LDAP oppure un altro DC;</li>
    <li><span style="font-weight: bold;">*script</span>: sono le voci che indicano quali script eseguire per gestire gli utenti ed i gruppi;</li>
    <li><span style="font-weight: bold;">logon path</span>: &egrave; il percorso della cartella che contiene informazioni di netlogon di Windows. Nell&rsquo;esempio si &egrave; deciso di non fornire questo servizio;</li>
    <li><span style="font-weight: bold;">domain logons</span>: indica se il server agir&agrave; come DC oppure no;</li>
    <li><span style="font-weight: bold;">domain master</span>: indica se il server agir&agrave; come PDC oppure no.</li>
</ul>
Per capire se la nostra configurazione &egrave; valida o meno possiamo usare il comando <span style="font-style: italic;">testparm</span>:  <br /><br />
<pre class="sourcecode">[root@myserver ~]# testparm -s <br />Load smb config files from /etc/samba/smb.conf<br />Processing section &quot;[homes]&quot;<br />Loaded services file OK.<br />Server role: ROLE_DOMAIN_PDC<br />[global]<br /> workgroup = MORZELLO<br /> server string = Samba Server Version %v<br /> passdb backend = tdbsam<br /> username map = /etc/samba/smbusers<br /> add user script = /usr/sbin/useradd &quot;%u&quot; -n -g users<br /> delete user script = /usr/sbin/userdel &quot;%u&quot;<br /> add group script = /usr/sbin/groupadd &quot;%g&quot;<br /> delete group script = /usr/sbin/groupdel &quot;%g&quot;<br /> delete user from group script = /usr/sbin/userdel &quot;%u&quot; &quot;%g&quot;<br /> add machine script =<br />     /usr/sbin/useradd -n -c &quot;Workstation (%u)&quot; -M -d /nohome<br />     -s /bin/false &quot;%u&quot;<br /> logon script = %u.bat<br /> logon path =<br /> domain logons = Yes<br /> domain master = Yes<br /> wins support = Yes<br />[homes]<br /> comment = Home Directories<br /> read only = No<br /> browseable = No </pre>
<br />  &Egrave; fondamentale che la voce server role sia quella corretta.<br /><br /><span style="font-weight: bold;">L&rsquo;utenza amministrativa</span><br />Per poter gestire il dominio &egrave; necessario aggiungere nel database di samba l&rsquo;utente amministratore:  <br /><br />
<pre class="sourcecode">[root@myserver samba]# smbpasswd -a root<br />New SMB password:<br />Retype new SMB password:<br />tdbsam_open: Converting version 0 database to version 3.<br />...<br />Added user root. </pre>
<br />  <span style="font-weight: bold;">Gli utenti di dominio</span><br />Gli utenti samba sono in realt&agrave; utenti linux e bisogna dare una regola per convertire correttamente gli utenti tra linux e windows. Per fare questo personalizziamo il file <span style="font-style: italic;">/etc/samba/smbusers</span>:  <br /><br />
<pre class="sourcecode"># Unix_name = SMB_name1 SMB_name2 ...<br />root = administrator admin<br />nobody = guest pcguest smbguest </pre>
<br />  Nel nostro caso ci limitiamo a dire che l&rsquo;utente <span style="font-style: italic;">administrator </span>equivale a <span style="font-style: italic;">root </span>e che l&rsquo;utente <span style="font-style: italic;">guest </span>equivale a <span style="font-style: italic;">nobody</span>.  Aggiungiamo anche i gruppi di utenti windows che non esistono ancora in linux:  <br /><br />
<pre class="sourcecode"># Map Windows Domain Groups to UNIX groups<br />net groupmap add rid=514 ntgroup=&quot;Domain Guests&quot; unixgroup=&quot;nobody&quot; type=d<br />net groupmap add rid=513 ntgroup=&quot;Domain Users&quot; unixgroup=&quot;users&quot; type=d<br />net groupmap add rid=512 ntgroup=&quot;Domain Admins&quot; unixgroup=&quot;root&quot; type=d </pre>
<br />  Si possono aggiungere anche altri gruppi di utenti, quelli specificati in alto sono quelli &ldquo;canonici&rdquo;. Per verificare che i gruppi siano stati creati possiamo usare il comando <span style="font-style: italic;">wbinfo</span>:  <br /><br />
<pre class="sourcecode">[root@myserver samba]# wbinfo -g<br />domain users<br />domain admins<br />domain guests </pre>
<br />  Aggiungendo gli utenti di dominio ricordiamo sempre che questi sono anche utenti Linux. &Egrave; probabile per&ograve; che non tutti gli utenti dovranno avere accesso al server come utenti locali. Per inibire l'accesso alla console del server specificheremo una shell non valida.  Su CentOS possiamo creare un utente con queste caratteristiche usando il comando <span style="font-style: italic;">adduser</span>:  <br /><br />
<pre class="sourcecode">[root@myserver samba]# adduser -m -s /sbin/nologin testuser<br />[root@myserver samba]# passwd testuser<br />[root@myserver samba]# smbpasswd -a testuser </pre>
<br />  Con precedenti comandi abbiamo creato un utente, assegnato una password per linux ed una per samba.<br />Un metodo alternativo per creare gli utenti &egrave; quello di accodare direttamente gli utenti nel file <span style="font-style: italic;">/etc/passwd</span> senza assegnare la password all&rsquo;utente.<br />A pensarci bene non &egrave; necessario assegnare una password ad un utente che non pu&ograve; fare il logon. Se invece l&rsquo;utente deve comunque avere l&rsquo;accesso al server &egrave; sufficiente omettere il parametro <span style="font-style: italic;">&ldquo;&ndash;s&rdquo;</span>.<br />Comunque sia per abilitare l&rsquo;utente al dominio &egrave; necessario inserirlo nel database di samba con il comando <span style="font-style: italic;">smbpasswd</span>.<br />Da notare che la password per linux pu&ograve; essere diversa da quella specificata in samba.   Eseguire il servizio all&rsquo;avvio  In CentOS i servizi possono essere gestiti facilmente mediante il comando <span style="font-style: italic;">chkconfig</span>.<br />Le righe seguenti assicurano l&rsquo;avvio del servizio all&rsquo;accensione del nostro server:  <br /><br />
<pre class="sourcecode">chkconfig smb on </pre>
<br />  <span style="font-weight: bold;">Ultimi ritocchi: iptables e selinux</span>  <br />Samba necessita di alcune porte tcp ed udp per poter funzionare correttamente. Queste porte sono chiude per default da iptables. Di seguito le righe da inserire nel file <span style="font-style: italic;">/etc/sysconfig/iptables</span>:  <br /><br />
<pre class="sourcecode">-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT<br />-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT<br />-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT<br />-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT </pre>
<br />  Le righe devono essere inserite nel file prima delle ultime due stringhe:  <br /><br />
<pre class="sourcecode">-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited<br />COMMIT </pre>
<br />  Per quanto concerne selinux invece bisogna consentire a samba l&rsquo;uso dei comandi necessari per svolgere alcuni task:  <br /><br />
<pre class="sourcecode"># Se si intende usare useradd/groupadd &egrave; necessario eseguire:<br />setsebool -P samba_domain_controller on<br />#<br /># Se si vuole condividere la home degli utenti eseguire:<br />setsebool -P samba_enable_home_dirs on </pre>
<br />  Per condividere una cartella di rete bisogna assegnare alla stessa l&rsquo;etichetta <span style="font-style: italic;">&quot;samba-share_t&quot;</span>. Evitate le cartelle di sistema perch&eacute; queste probabilmente hanno una etichetta diversa gi&agrave; applicata.  Per verificare i dettagli di una cartella relativa a selinux &egrave; possibile usare il comando ls specificando il paramentr <span style="font-style: italic;">&ldquo;&ndash;Z&rdquo;</span>:  <br /><br />
<pre class="sourcecode">ls -ldZ /percorso_completo </pre>
<br />  <span style="font-weight: bold;">Aggiungere una workstation al dominio</span><br />La procedura di Join &egrave; totalmente trasparente in windows.<br />Per aggiungere una macchina al dominio possiamo cliccare con il tasto destro del mouse su <span style="font-style: italic;">&ldquo;Gestione Risorse&rdquo;</span> quindi selezionare il percorso :<span style="font-style: italic;">&ldquo;Propriet&agrave;-&gt;Nome Computer-&gt;Cambia&rdquo;</span>. Specificare <span style="font-style: italic;">MORZELLO </span>nella casella &ldquo;<span style="font-style: italic;">dominio</span>&rdquo; e procedere al logon di root con la password indicata in samba (mediante il comando <span style="font-style: italic;">smbpasswd</span>).<br /><br /> <center><a href="http://www.morzello.com/public/59-01.png"> <img width="550" src="http://www.morzello.com/public/59-01.png" alt="" /> </a></center><br /><br /> Alla prossima.]]></description>
	<link><![CDATA[http://www.morzello.com/dblog/articolo.asp?articolo=59]]></link>
	<guid isPermaLink="true">http://www.morzello.com/dblog/articolo.asp?articolo=59</guid>
	<dc:date>2009-09-25T01:54:33+01:00</dc:date>
	<dc:creator>vittorio</dc:creator>
</item>
<item>
	<title><![CDATA[Una versione avanzata di Run As]]></title>
	<description><![CDATA[<p>Gli utenti di Linux sanno bene che non si dovrebbe mai utilizzare l'utenza amministrativa (root) per uso quotidiano. L'uso dovrebbe essere limitato alla manutenzione ordinaria (aggiornamenti) e straordinaria (installazione di programmi e nuovi componenti hardwere) del computer.</p>
<p> </p>
<p>Questa regola &egrave; ancor pi&ugrave; valida per gli utenti Windows dove, a parer mio, <span style="font-weight: bold;">l'abuso dell'utenza amministrativa</span> &egrave; pi&ugrave; marcata.</p>
<p> </p>
<p>In Linux, per accedere all'utenza di root dopo aver fatto il logon &egrave; possibile usare il comando &quot;<span style="font-weight: bold;">su</span>&quot; mentre in Windows si pu&ograve; utilizzare il comando &quot;<span style="font-weight: bold;">runas</span>&quot;. Nonostante i due comandi siano essenzialmente simili, il loro utilizzo nella pratica non &egrave; il medesimo.</p>
<p> </p>
<p>Mi sono reso conto negli anni che in Windows non &egrave; sempre agevole sostituirsi all'Amministratore per eseguire singoli comandi.</p>
<p> </p>
<p>Per eseguire un comando come altro utente &egrave; sufficiente <span style="font-weight: bold;">cliccare sull'icona con il tasto destro</span>. Se tutto &egrave; eseguito correttamente nell'elenco comparir&agrave; l'opzione &quot;<span style="font-weight: bold;">Esegui come...</span>&quot; oppure &quot;<span style="font-weight: bold;">Run as...</span>&quot;. Nelle versioni precedenti del sistema operativo potrebbe essere necessario premere contemporaneamente il tasto <span style="font-weight: bold;">[SHITF]</span>.</p>
<p> </p>
<p>Quando per&ograve; &egrave; necessario eseguire diversi comandi le cose si complicano.</p>
<p>Su Windows 2000 &egrave; possibile eseguire una shell visuale &quot;Esplora Risorse&quot; come altro utente mentre in Windows XP no. Nella migliore delle ipotesi, l'utente resta invariato e nelle peggiori si rischia di dover reinstallare il sistema operativo.</p>
<p> </p>
<p>A questo punto ho pensato ad un piccolo <span style="font-weight: bold;">vbscript</span> che possa risolvere il problema agevolmente.</p>
<p> </p>
<p>Supponiamo di voler installare una stampante oppure editare un file di testo presente in <span style="font-style: italic;">c:\windows\system32.</span></p>
<p> </p>
<p>Cliccando con il tasto destro sull'icona non compare l'opzione &quot;Esegui come...&quot; perch&eacute; non si tratta di un programma.</p>
<p> </p>
<p>L'idea &egrave; quella di <span style="font-weight: bold;">creare una voce nel menu contestuale</span> con la quale eseguire gli applicativi in base all'estensione dei file.</p>
<p> </p>
<p>Per prima cosa &egrave; necessario creare un file <span style="font-weight: bold;">vbs</span> in windows. Nel nostro esempio il file sar&agrave; creato con il nome <span style="font-style: italic;">c:\windows\morzello_runas.vbs</span></p>
<p> </p>
<div class="sourcecode"> option explicit<br /><br />dim WshShell<br />dim strLogin<br />dim strParams<br />dim objArgs<br />dim I<br />Const TITLE=&quot;Morzello RunAs 1.1&quot;<br />Set objArgs = WScript.Arguments<br /><br />For I = 0 to objArgs.Count - 1<br />strparams= strParams &amp; &quot; &quot; &amp; objArgs(I)<br />Next<br /><br />'eliminiamo il primo carattere perch&egrave; non fa parte del parametro.<br />If Len(strParams)&gt;1 Then strparams=Right(strparams,Len(strparams)-1)<br /><br />strLogin=InputBox (&quot;Inserire il 'Login' dell'utente con cui si vuole eseguire il comando:&quot;,TITLE, &quot;Administrator&quot;)<br /><br />If strLogin=&quot;&quot; Then wscript.quit (1)<br /><br />Set WshShell = WScript.CreateObject( &quot;WScript.Shell&quot; )<br />wscript.echo &quot;%comspec% /C runas /env /utente:&quot; &amp; strLogin &amp; &quot; &quot;&quot;start &quot; &amp; strParams &amp; &quot;&quot;&quot;&quot;<br />WshShell.Run &quot;%comspec% /C runas /env /utente:&quot; &amp; strLogin &amp; &quot; &quot;&quot;start &quot; &amp; strParams &amp; &quot;&quot;&quot;&quot; ,1,false<br /> </div>
<p> </p>
<p>Lo script si limita a chiedere login e password dell'utente desiderato, quindi carica il file cone le credenziali desiderate.</p>
<p> </p>
<p>Per rendere utile questo script &egrave; possibile inserire una opzione aggiuntiva alla shell simile a quella gi&agrave; presente. Questa opzione la chiameremo per comodit&agrave; &quot;<span style="font-style: italic;">Morzello Run As&quot;.</span></p>
<p> </p>
<p>Di seguito riporto il contenuto del file &quot;<span style="font-style: italic;">morzello_runas.reg&quot; da aggiungere al file di registro:</span></p>
<p> </p>
<div class="sourcecode"> Windows Registry Editor Version 5.00<br /> <br /> [HKEY_CLASSES_ROOT\*\shell]<br /> <br /> [HKEY_CLASSES_ROOT\*\shell\Morzello Run As]<br /> <br /> [HKEY_CLASSES_ROOT\*\shell\Morzello Run As\command]<br /> @=&quot;cscript c:\\windows\\morzello_runas.vbs %1&quot;<br /> </div>
<p>Per aggiungere il comando al registro di sistema &egrave; sufficiente fare <span style="font-weight: bold;">doppio click sul file</span> con credenziali amministrative.</p>
<p> </p>
<p>A questo punto &egrave; possibile ad esempio cliccare con il tasto destro su un file txt ed eseguirlo come altro utente. Utile ad esempio per editare il file di host.</p>
<p> </p>
<p>I sorgenti di questo articolo sono disponibili <a href="http://www.morzello.com/repository/utility/runas11.zip">qui</a></p>
<p>Alla prossima.</p>]]></description>
	<link><![CDATA[http://www.morzello.com/dblog/articolo.asp?articolo=58]]></link>
	<guid isPermaLink="true">http://www.morzello.com/dblog/articolo.asp?articolo=58</guid>
	<dc:date>2009-09-15T03:46:04+01:00</dc:date>
	<dc:creator>vittorio</dc:creator>
</item>
<item>
	<title><![CDATA[VNC server su Fedora e CentOS]]></title>
	<description><![CDATA[Sono lontani i tempi in cui VNC era considerato un trojan. Oggi quasi tutte le distribuzioni hanno una versione di questo demone per amministrare da remoto un computer in ambiente visuale.<br /><br />Nonostante l'installazione sia alquanto banale, la messa a punto dello strumento può risultare problematica, specie la prima volta.<br /><br />Di seguito riporto una breve guida che veste bene per le distribuzioni derivate da Red Hat come ad esempio <span style="font-weight: bold;">CentOS </span>e <span style="font-weight: bold;">Fedora</span>.<br /><br />Diamo per scontato che il gestore delle finestre <span style="font-style: italic;">X Window</span> sia correttamente installato e funzionante; non è necessario che sia attualmente in uso. È possibile trovare server che non hanno testiera e monitor ma che comunque offrono una interfaccia visuale con VNC.<br /><br />Procediamo verificando in primo luogo l'esistenza del demone<br /><br />
<div class="sourcecode">yum list vnc-server</div>
<br />In caso procediamo con l'installazione<br /><br />
<div class="sourcecode">yum install vnc-server</div>
<br />Consiglio vivamente di eseguire il demone con un utente non amministrativo, anzi, per dirla tutta, la cosa migliore è creare un utente ad-hoc che non appartenga al gruppo utenti "users". Questo ci consentirà di definire policy specifiche per questo servizio<br /><br />
<div class="sourcecode">groupadd vnc<br />useradd -g vnc vnc<br />passwd vnc<br /></div>
<br />Con il comando precedente abbiamo definito un nuovo gruppo, un nuovo utente ed una password per l'utente stesso.<br /><br />Ora passiamo alla personalizzazione del servizio. Su Red Hat è sufficiente editare personalizzare il file "<span style="font-weight: bold;">/etc/sysconfig/vncservers</span>". Di seguito un esempio funzionante per la nostra dimostrazione<br /><br />
<div class="sourcecode"># The VNCSERVERS variable is a list of display:user pairs.<br />#<br /># Uncomment the lines below to start a VNC server on display :2<br /># as my 'myusername' (adjust this to your own).  You will also<br /># need to set a VNC password; run 'man vncpasswd' to see how<br /># to do that.<br />#<br /># DO NOT RUN THIS SERVICE if your local area network is<br /># untrusted!  For a secure way of using VNC, see<br /># <url:http: sshvnc.html="" vnc="" archive="" www.uk.research.att.com="">.<br /><br /># Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.<br /><br /># Use "-nohttpd" to prevent web-based VNC clients connecting.<br /><br /># Use "-localhost" to prevent remote VNC clients connecting except when<br /># doing so through a secure tunnel.  See the "-via" option in the<br /># `man vncviewer' manual page.<br /><br /># VNCSERVERS="2:myusername"<br /># VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd -localhost"<br /><br /> <span style="font-weight: bold;">VNCSERVERS="2:vnc"</span><br style="font-weight: bold;" /><span style="font-weight: bold;"> VNCSERVERARGS[2]="-geometry 1024x768"</span><br /></url:http:></div>
<br />Le righe che interessano sono le ultime due dove vengono definite le variabili necessarie al demone per "girare".<br /><br /><span style="font-style: italic;">VNCSERVERS </span>definisce la porta e l'utente di ogni singola sessione. È possibile infatti eseguire diverse sessioni utente ovviamente ognuna su porte differenti.<br /><br />vncserver si mette in ascolto a partire dalla porta <span style="font-weight: bold;">TCP 5900</span>. Impostando il primo parametro a "2" chiediamo al demone di aprire una sessione sulla porta 5902.<br /><br />Più sessioni possono essere specificate nella stessa variabile. Ad esempio <br /><br />
<div class="sourcecode">VNCSERVERS="1:utente1 2:utente2 3:utente3"</div>
<br /><span style="font-style: italic;">VNCSERVERARGS[X]</span> (dove "X" indica il numero di porta) definisce i parametri da passare al demone per ogni sessione. Nel caso di più sessioni sarà necessario specificare più parametri:<br /><br />
<div class="sourcecode">VNCSERVERARGS[1]="-geometry 1024x768"<br />VNCSERVERARGS[2]="-geometry 800x600 -depth 16"<br />VNCSERVERARGS[3]="-geometry 1024x768 -localhost"<br /></div>
<br />Per un dettaglio maggiore sui parametri supportati consultare la documentazione ufficiale (man Xvnc).<br /><br />Poiché il servizio partirà con l'utenza vnc è necessario personalizzare l'ambiente di questo utente. In particolare è necessario impostare una password che vncserver chiederà al momento del log-on<br /><br />
<div class="sourcecode">su vnc<br />vncpasswd<br /></div>
<br />Dopo aver impostato la password, che può essere diversa da quella specificata per l'utente, facciamo partire il servizio (sempre come utente vnc)<br /><br />
<div class="sourcecode">vncserver<br /></div>
<br />Se tutto è andato a buon fine dovremmo avere una sessione attiva sulla porta 5902<br /><br />
<div class="sourcecode">vncviewer remotehost:5902:2<br /></div>
<br />Dove <span style="font-style: italic;">remotehost </span>è il nome della macchina e <span style="font-style: italic;">5902 </span>la porta tcp.<br /><br />All'avvio del servizio verrà creato un file, una sorta di autoexec.bat contenente i comandi da eseguire per gestire l'ambiente visuale.<br />Nel nostro esempio questo file sarà <span style="font-weight: bold;">"/home/vnc/.vnc/xstartup"</span> ed avrà un aspetto del tutto simile a questo<br /><br />
<div class="sourcecode">xsetroot -solid grey<br />vncconfig -iconic &<br />xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &<br />twm &<br /></div>
<br />Questo script si occupa tra le altre cose di definire quale gestore grafico utilizzare nella sessione. Nell'esempio riportato in alto, è stato specificato twm, un gestore molto leggero ed essenziale<br /><br /> <center><a href="http://www.morzello.com/public/56-01.png"> <img width="400" src="http://www.morzello.com/public/56-01.png" alt="" /></a></center> <br /><br />Chi volesse cambiare gestore può tranquillamente editare il file sostituendo l'ultima riga. Di seguito un esempio che mostra impiego di KDE<br /><br />
<div class="sourcecode">startkde &<br /></div>
<br />Ed ecco una immagine dell'ambiente grafico in esecuzione<br /><br /><center><a href="http://www.morzello.com/public/56-02.png"> <img width="400" src="http://www.morzello.com/public/56-02.png" alt="" /></a></center> <br /><br />Per far partire il servizio all'avvio del sistema operativo possiamo utilizzare <span style="font-weight: bold;">chkconfig </span>(con credenziali amministrative)<br /><br />
<div class="sourcecode">chkconfig vncserver on<br /></div>
<br />Concludiamo la procedura assicurandoci che il traffico di rete sia abilitato sulla macchina istruendo correttamente <span style="font-weight: bold;">iptables</span>. Di seguito le righe da aggiungere al file "<span style="font-weight: bold;">/etc/sysconfig/iptables</span>"<br /><br />
<div class="sourcecode">-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5902 -j ACCEPT<br /></div>
<br />Bisogna fare attenzione ad inserire la riga precedente nella esatta posizione, prima cioè delle seguenti righe<br /><br />
<div class="sourcecode">-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited<br />COMMIT<br /></div>
<br />Altrimenti le regole di iptables non avranno l'effetto desiderato.<br /><br /><br style="font-weight: bold;" /><span style="font-weight: bold;">VNC e sessioni sicure</span><br />VNC non fa uso di crittografia a meno di non andare su prodotti commerciali la cui licenza è a pagamento. Questo significa che con un semplice sniffer è possibile rubare la password di accesso.<br /><br />Una soluzione percorribile "out of the box" prevede l'uso di <span style="font-weight: bold;">ssh </span>(il comando utilizzato in Linux per ottenere una shell sicura).<br /><br />L'idea è quella di far transitare il traffico in un tunnel ssh aperto su entrambi gli host (client e server) secondo il seguente schema:<br /><br />
<div class="sourcecode">client --> SSH --| network |-- SSH <-- server<br /></div>
<br />Nel nostro esempio le terminazioni del tunnel verranno create direttamente sui due host in modo da rendere sicura la comunicazione su tutta la rete.<br /><br />Chiediamo ad ssh di collegarsi al server VNC sulla porta 5902. Chiediamo inoltre ad ssh di mettersi in ascolto su un'altra porta, la 55902 e di fare in modo che il traffico criptato su quest'ultima finisca in chiaro sulla 5902 (forwarding)<br /><br />
<div class="sourcecode">ssh -f -L 55902:localhost:5902 remotehost<br /></div>
<br />Il parametro <span style="font-style: italic;">-f</span> istruisce il comando a liberare il prompt agendo come un comune demone.<br />Il paramtro <span style="font-style: italic;">-L</span> si occupa invece del forwarding trasferendo i byte dalla porta 55902 del client sulla porta 5902 del server.<br /><br />Per accedere al servizio possiamo eseguire vncviewer localmente<br /><br />
<div class="sourcecode">vncviewer localhost:55902:2<br /></div>
<br />Per rendere le cose un tantino più semplici è possibile avvalersi del paramtro <span style="font-weight: bold;">sleep</span> con il quale specificare un tempo massimo di attesa (ad esempio 60 secondi) entro il quale creare una connessione. Questo garantisce che non restino appese sessioni inutili.<br /><br />
<div class="sourcecode">ssh -f -L 55902:localhost:5902 remotehost sleep 60; vncviewer localhost:55902:2<br /></div>
<br />Nel caso ci fossero problemi è necessario verificare i parametri di ssh ed eventualmente di <span style="font-weight: bold;">OpenSSL</span>. Per maggiori informazioni prendere visione della miniguida riportata alla fine dell'articolo.<br /><br /><br /><span style="font-weight: bold;">Sessioni sicure con Windows</span><br />Quanto detto in precedenza vale anche per i client Windows dato che ssh esiste anche per cygwin.<br /><br />Volendo è possibile utilizzare <strong>PuTTY</strong> creando una sessione e specificando i parametri <span style="font-weight: bold;">Source port</span> (55902) e <span style="font-weight: bold;">Destination </span>(remotehost:5902) sotto <span style="font-weight: bold;">Category -> SSH -> Tunnels </span>e cliccando su "<span style="font-weight: bold;">Add</span>".<br /> <br />Di seguito un esempio che replica quanto fatto in precedenza<br /><br /> <center><a href="http://www.morzello.com/public/56-03.png"> <img src="http://www.morzello.com/public/56-03.png" alt="" /></a></center>  <br /><br />Per il momento è tutto. Spero come al solito di non avervi annoiato.<br />Alla prossima.<br /><br /><strong>Per saperne di più</strong><br /><a target="_blank" href="http://clbianco.altervista.org/vnc/vncfaq_2.html">VNC Mini-FAQ</a>]]></description>
	<link><![CDATA[http://www.morzello.com/dblog/articolo.asp?articolo=56]]></link>
	<guid isPermaLink="true">http://www.morzello.com/dblog/articolo.asp?articolo=56</guid>
	<dc:date>2009-07-08T10:50:04+01:00</dc:date>
	<dc:creator>vittorio</dc:creator>
</item>
<item>
	<title><![CDATA[Regular Expressions. Un aiuto per neofiti]]></title>
	<description><![CDATA[Le espressioni regolari (regular expressions) per chi non è esperto, possono essere veramente frustranti da gestire.<br /><br />Devo ammettere che anche io ho qualche problema a volte, specie se si tratta di implementare RE con linguaggi che non uso molto frequentemente.<br /><br />Esiste però un modo per "testare" le RE online. Di seguito propongo alcuni siti da me utilizzati, suddivisi per linguaggio di programmazione:<br /><br />Java (ed altri linguaggi come ad esempio Javascript e Apex):<br /><a href="http://www.fileformat.info/tool/regex.htm" target=_blank> http://www.fileformat.info/tool/regex.htm</a> (mediante <a target=_blank href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/package-summary.html">java.util.regex</a>)<br /><br />Python:<br /><a target=_blank href="http://re-try.appspot.com/">http://re-try.appspot.com/</a><br /><br />Bash (sed e grep):<br /><a href="http://www.linuxjournal.com/content/bash-regular-expressions" target=_blank>http://www.linuxjournal.com/content/bash-regular-expressions</a> (codice sorgente)<br /><br />PHP e Perl:<br /><a href="http://regex.larsolavtorvik.com/" target=_blank>http://regex.larsolavtorvik.com/</a><br /><br />Spero che questo elenco sia utile anche se non di certo esaustivo.<br /><br />Se avete altre segnalazioni da fare siete i benvenuti.<br /><br />Alla prossima.<br />]]></description>
	<link><![CDATA[http://www.morzello.com/dblog/articolo.asp?articolo=55]]></link>
	<guid isPermaLink="true">http://www.morzello.com/dblog/articolo.asp?articolo=55</guid>
	<dc:date>2009-05-07T01:18:07+01:00</dc:date>
	<dc:creator>vittorio</dc:creator>
</item>
	</channel></rss>