1 <?xml version="1.0" encoding="utf-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
6 <meta name="generator" content=
7 "HTML Tidy for Linux/x86 (vers 7 December 2008), see www.w3.org">
8 <meta http-equiv="Content-Type" content=
9 "text/html; charset=iso-8859-1">
10 <meta name="generator" content=
11 "Docutils 0.5: http://docutils.sourceforge.net/">
13 <title>Servizi di rete passo a passo</title>
14 <style type="text/css">
17 :Author: David Goodger (goodger@python.org)
18 :Id: $Id: html4css1.css 5196 2007-06-03 20:25:28Z wiemann $
19 :Copyright: This stylesheet has been placed in the public domain.
21 Default cascading style sheet for the HTML output of Docutils.
23 See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
24 customize this style sheet.
27 /* used to remove borders from tables and images */
28 .borderless, table.borderless td, table.borderless th {
31 table.borderless td, table.borderless th {
32 /* Override padding for "table.docutils td" with "! important".
33 The right padding separates the table cells. */
34 padding: 0 0.5em 0 0 ! important }
37 /* Override more specific margin styles with "! important". */
38 margin-top: 0 ! important }
40 .last, .with-subtitle {
41 margin-bottom: 0 ! important }
47 text-decoration: none ;
54 margin-bottom: 0.5em }
56 /* Uncomment (and remove this text!) to get bold-faced definition list terms
64 div.abstract p.topic-title {
68 div.admonition, div.attention, div.caution, div.danger, div.error,
69 div.hint, div.important, div.note, div.tip, div.warning {
71 border: medium outset ;
74 div.admonition p.admonition-title, div.hint p.admonition-title,
75 div.important p.admonition-title, div.note p.admonition-title,
76 div.tip p.admonition-title {
78 font-family: sans-serif }
80 div.attention p.admonition-title, div.caution p.admonition-title,
81 div.danger p.admonition-title, div.error p.admonition-title,
82 div.warning p.admonition-title {
85 font-family: sans-serif }
87 /* Uncomment (and remove this text!) to get reduced vertical space in
89 div.compound .compound-first, div.compound .compound-middle {
90 margin-bottom: 0.5em }
92 div.compound .compound-last, div.compound .compound-middle {
101 div.dedication p.topic-title {
109 div.footer, div.header {
118 div.line-block div.line-block {
124 margin: 0 0 0.5em 1em ;
125 border: medium outset ;
127 background-color: #ffffee ;
132 div.sidebar p.rubric {
133 font-family: sans-serif ;
136 div.system-messages {
139 div.system-messages h1 {
143 border: medium outset ;
146 div.system-message p.system-message-title {
153 h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
154 h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
172 ol.simple, ul.simple {
176 list-style: decimal }
179 list-style: lower-alpha }
182 list-style: upper-alpha }
185 list-style: lower-roman }
188 list-style: upper-roman }
202 white-space: nowrap }
211 font-family: sans-serif ;
216 font-family: sans-serif ;
228 pre.literal-block, pre.doctest-block {
233 font-family: sans-serif ;
234 font-style: oblique }
236 span.classifier-delimiter {
237 font-family: sans-serif ;
241 font-family: sans-serif }
244 white-space: nowrap }
252 span.section-subtitle {
253 /* font-size relative to parent (h1..h6 element) */
257 border-left: solid 1px gray;
265 margin-bottom: 0.5em }
268 border-left: solid 1px black;
271 table.docutils td, table.docutils th,
272 table.docinfo td, table.docinfo th {
273 padding-left: 0.5em ;
274 padding-right: 0.5em ;
275 vertical-align: top }
277 table.docutils th.field-name, table.docinfo th.docinfo-name {
280 white-space: nowrap ;
283 h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
284 h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
288 list-style-type: none }
294 <div class="document" id="servizi-di-rete-passo-a-passo">
295 <h1 class="title">Servizi di rete passo a passo</h1>
297 <h2 class="subtitle" id=
298 "appunti-sulla-installazione-e-configurazione-dei-servizi">
299 Appunti sulla installazione e configurazione dei servizi</h2>
302 <table class="docutils field-list" frame="void" rules="none">
303 <col class="field-name">
304 <col class="field-body">
308 <th class="field-name">Author:</th>
310 <td class="field-body">Andrea Manni</td>
314 <th class="field-name">Copyright:</th>
316 <td class="field-body">GFDL</td>
320 <th class="field-name">Version:</th>
322 <td class="field-body">0.4</td>
328 <p>Questa guida e' dedicata agli studenti delle lezioni di
329 informatica tenute da Andrea nel lab208. Nella parte iniziale
330 sono presenti alcuni richiami alle impostazioni di rete e di
331 installazione del laboratorio 208 (lab208) dove generalmente si
332 tengono le lezioni. Questi parametri non sono interessanti per
333 chiunque si trovasse al di fuori della rete piffa.net .</p>
335 <div class="contents topic" id="indice-degli-argomenti">
336 <p class="topic-title first">Indice degli argomenti</p>
338 <ul class="auto-toc simple">
340 <a class="reference internal" href=
341 "#configurazione-sistema" id="id6" name=
342 "id6">1 Configurazione sistema</a>
344 <ul class="auto-toc">
345 <li><a class="reference internal" href=
346 "#solo-per-uso-interno" id="id7" name=
347 "id7">1.1 Solo per uso
350 <li><a class="reference internal" href="#rete" id="id8"
351 name="id8">1.2 Rete</a></li>
353 <li><a class="reference internal" href=
354 "#bash-completion" id="id9" name=
355 "id9">1.3 Bash completion</a></li>
357 <li><a class="reference internal" href="#vim" id="id10"
358 name="id10">1.4 Vim</a></li>
360 <li><a class="reference internal" href="#vnc" id="id11"
361 name="id11">1.5 VNC</a></li>
363 <li><a class="reference internal" href=
364 "#lista-dei-pacchetti-di-base" id="id12" name=
365 "id12">1.6 Lista dei pacchetti di
369 <a class="reference internal" href=
370 "#apt-configurazione" id="id13" name=
371 "id13">1.7 Apt configurazione</a>
373 <ul class="auto-toc">
374 <li><a class="reference internal" href=
375 "#sources-list" id="id14" name=
376 "id14">1.7.1 sources.list</a></li>
378 <li><a class="reference internal" href=
379 "#etc-apt-apt-conf" id="id15" name=
380 "id15">1.7.2 /etc/apt/apt.conf</a></li>
386 <li><a class="reference internal" href="#squid" id="id16"
387 name="id16">2 Squid</a></li>
390 <a class="reference internal" href="#apache" id="id17"
391 name="id17">3 Apache</a>
393 <ul class="auto-toc">
394 <li><a class="reference internal" href=
395 "#pacchetti-da-installare" id="id18" name=
396 "id18">3.1 Pacchetti da
397 installare::</a></li>
399 <li><a class="reference internal" href=
400 "#configurazione-di-apache" id="id19" name=
401 "id19">3.2 Configurazione di
404 <li><a class="reference internal" href="#apache-conf"
406 "id20">3.3 apache.conf</a></li>
409 <a class="reference internal" href=
410 "#installazione-di-php" id="id21" name=
411 "id21">3.4 Installazione di PHP</a>
413 <ul class="auto-toc">
414 <li><a class="reference internal" href=
415 "#test-del-modulo-php" id="id22" name=
416 "id22">3.4.1 Test del modulo
419 <li><a class="reference internal" href=
420 "#installazione-del-supporto-per-mysql" id="id23"
421 name="id23">3.4.2 Installazione
422 del supporto per Mysql</a></li>
424 <li><a class="reference internal" href=
425 "#phpmyadmin" id="id24" name=
426 "id24">3.4.3 phpmyadmin</a></li>
428 <li><a class="reference internal" href=
429 "#installazione-del-supporto-per-postgresql" id=
431 "id25">3.4.4 Installazione del
432 supporto per Postgresql</a></li>
434 <li><a class="reference internal" href=
435 "#phppgadmin" id="id26" name=
436 "id26">3.4.5 phppgadmin</a></li>
441 <a class="reference internal" href="#virtual-hosts"
442 id="id27" name="id27">3.5 Virtual
445 <ul class="auto-toc">
446 <li><a class="reference internal" href=
447 "#gestione-dns" id="id28" name=
448 "id28">3.5.1 Gestione DNS</a></li>
450 <li><a class="reference internal" href=
451 "#virtual-host" id="id29" name=
452 "id29">3.5.2 Virtual host</a></li>
457 <a class="reference internal" href=
458 "#negoziazione-accessi" id="id30" name=
459 "id30">3.6 Negoziazione accessi</a>
461 <ul class="auto-toc">
462 <li><a class="reference internal" href=
463 "#limiti-su-base-ip" id="id31" name=
464 "id31">3.6.1 Limiti su base
470 <a class="reference internal" href=
471 "#user-authentication" id="id32" name=
472 "id32">3.7 User Authentication</a>
474 <ul class="auto-toc">
475 <li><a class="reference internal" href=
476 "#definire-la-cartella" id="id33" name=
477 "id33">3.7.1 Definire la
480 <li><a class="reference internal" href=
481 "#creazione-del-database-delle-passwords" id="id34"
482 name="id34">3.7.2 Creazione del
483 database delle passwords</a></li>
485 <li><a class="reference internal" href="#id3" id=
487 "id35">3.7.3 Configurazione di
492 <li><a class="reference internal" href="#cavets" id=
493 "id36" name="id36">3.8 Cavets</a></li>
498 <a class="reference internal" href="#domain-name-system"
499 id="id37" name="id37">4 Domain Name
502 <ul class="auto-toc">
503 <li><a class="reference internal" href=
504 "#nomi-di-dominio" id="id38" name=
505 "id38">4.1 Nomi di dominio</a></li>
507 <li><a class="reference internal" href=
508 "#tipologie-di-record" id="id39" name=
509 "id39">4.2 Tipologie di
512 <li><a class="reference internal" href="#utilizzo" id=
514 "id40">4.3 Utilizzo</a></li>
516 <li><a class="reference internal" href=
517 "#risoluzione-dei-nomi-di-dominio" id="id41" name=
518 "id41">4.4 Risoluzione dei nomi di
521 <li><a class="reference internal" href="#dig" id="id42"
522 name="id42">4.5 Dig</a></li>
526 <li><a class="reference internal" href="#dnsmasq" id="id43"
527 name="id43">5 DNSmasq</a></li>
530 <a class="reference internal" href="#samba" id="id44"
531 name="id44">6 Samba</a>
533 <ul class="auto-toc">
534 <li><a class="reference internal" href="#pacchetti" id=
536 "id45">6.1 Pacchetti</a></li>
538 <li><a class="reference internal" href=
539 "#passwords-e-autenticazione" id="id46" name=
540 "id46">6.2 Passwords e
541 autenticazione</a></li>
543 <li><a class="reference internal" href=
544 "#creazione-utenti" id="id47" name=
545 "id47">6.3 Creazione Utenti</a></li>
548 <a class="reference internal" href=
549 "#creare-la-condivisione" id="id48" name=
550 "id48">6.4 Creare la
553 <ul class="auto-toc">
554 <li><a class="reference internal" href=
555 "#sicurezza-permessi-di-esecuzione-sul-server" id=
557 "id49">6.4.1 Sicurezza: permessi
558 di esecuzione sul server</a></li>
562 <li><a class="reference internal" href=
563 "#configurazione-dell-applicativo-samba-vero-e-proprio"
565 "id50">6.5 Configurazione
566 dell'applicativo Samba vero e proprio.</a></li>
568 <li><a class="reference internal" href=
569 "#testare-il-servizio" id="id51" name=
570 "id51">6.6 Testare il
575 <li><a class="reference internal" href="#note" id="id52"
576 name="id52">7 NOTE</a></li>
580 <p>Generato con: <a class="reference external" href=
581 "http://docutils.sourceforge.net/rst.html">http://docutils.sourceforge.net/rst.html</a></p>
583 <div class="section" id="configurazione-sistema">
584 <h1><a class="toc-backref" href=
585 "#id6">1 Configurazione sistema</a></h1>
587 <div class="section" id="solo-per-uso-interno">
588 <h2><a class="toc-backref" href=
589 "#id7">1.1 Solo per uso interno</a></h2>
591 <p>Impostazioni di base per la configurazione del sistema
592 operativo e della rete nel laboratorio 208 facente parte
593 della rete piffa.net .</p>
595 <p>Qui riportati per comodita' degli studenti (e del
596 docente che non sara' <strong>mai piu'</strong> costretto a
600 <div class="section" id="rete">
601 <h2><a class="toc-backref" href=
602 "#id8">1.2 Rete</a></h2>
604 <p>Parametri della rete attualmente in uso:</p>
606 <table border="1" class="docutils">
614 <td colspan="2">Parametri della rete</td>
620 <td>10.10.208.0/24</td>
626 <td>255.255.255.0</td>
632 <td>10.10.208.255</td>
638 <td>10.10.208.254</td>
644 <td>10.10.208.250 persistente</td>
650 <td>10.10.208.254</td>
656 <td>10.10.208.250 persistente</td>
661 <p>Sul portatile di Andrea, corrispondente all'ip 254, gira
662 un DHCP, proxy http e mirror di Debian ( <a class=
663 "reference external" href=
664 "http://debian.piffa.net">http://debian.piffa.net</a>). Se
665 Andrea non e' in aula (o ancora peggio non c'e' il suo
666 portatile Net) gli studenti dovranno darsi un indirizzo ip
667 manualmente e disabilitare il proxy (che pero' e
668 trasparente, quindi fate pure come se non ci fosse ;) .</p>
671 <div class="section" id="bash-completion">
672 <h2><a class="toc-backref" href=
673 "#id9">1.3 Bash completion</a></h2>
675 <p>Il completamento automatico della shell (che si attiva
676 premendo il tasto tab una o due volte mentre si sta
677 scrivendo un termine) permette di comporre automaticamente
678 i nomi dei comandi e i percorsi dei file, sopratutto la
679 composizione automatica dei percorsi dei file e' di grande
682 <p>Bash_completion permette di integrare il completamento
683 automatico con i nomi dei pacchetti e oggetti dei comandi:
684 ad es. volendo digitare <tt class=
685 "docutils literal"><span class="pre">apt-get</span>
686 <span class="pre">inst[TAB]</span> <span class=
687 "pre">xtigh[TAB]</span></tt> ora verra' completatato
688 automaticamente sia la parola <tt class=
689 "docutils literal"><span class="pre">install</span></tt>
690 che il nome del pacchetto <tt class=
691 "docutils literal"><span class=
692 "pre">xtightvncviewer</span></tt>.</p>
694 <p>Abilitare /etc/bash_completion nel file <tt class=
695 "docutils literal"><span class=
696 "pre">/etc/bash.bashrc</span></tt> oppure includerlo nel
697 proprio <tt class="docutils literal"><span class=
698 "pre">~/.bashrc</span></tt> (che sarebbe il file
699 <em>nascosto</em>, quindi con un punto all'inizio del nome
700 del file, di configurazione della shell bash per ogni
701 utente, presente nella propria <em>home
703 <pre class="literal-block">
704 echo ". /etc/bash_completion" >> ~/.bashrc
707 <p>Esempio di ~/.bahsrc</p>
708 <pre class="literal-block">
709 # ~/.bashrc: executed by bash(1) for non-login shells.
711 export PS1='\h:\w\$ '
714 # Decommentare le seguenti righr per abilitare la colorazione dei
716 export LS_OPTIONS='--color=auto'
718 alias ls='ls $LS_OPTIONS'
719 alias ll='ls $LS_OPTIONS -l'
720 alias l='ls $LS_OPTIONS -lA'
722 # Some more alias to avoid making mistakes:
727 # questo abilita bash completion
728 . /etc/bash_completion
731 <p>Il file <tt class="docutils literal"><span class=
732 "pre">/etc/bash_completion</span></tt> deve essere presente
733 nel sistema, in caso contrario installare il pacchetto:
734 <tt class="docutils literal"><span class=
735 "pre">bash-completion</span></tt>. Generalmente l'utente
736 <tt class="docutils literal"><span class=
737 "pre">root</span></tt> ha un file <tt class=
738 "docutils literal"><span class="pre">.bashrc</span></tt>
739 preimpostato analogo a quello citato sopra, a differenza
740 dei normali utenti di sistema.</p>
745 <li><a class="reference external" href=
746 "http://www.debian-administration.org/articles/316">An
747 introduction to bash completion</a></li>
749 <li><a class="reference external" href=
750 "http://www.caliban.org/bash/">Working more productively
751 with bash 2.x/3.x</a></li>
755 <div class="section" id="vim">
756 <h2><a class="toc-backref" href=
757 "#id10">1.4 Vim</a></h2>
759 <p>Vim e' l'editor di testo preferito dai sistemisti,
760 quindi sara' conveniente impostare fin da subito alcune
761 impostazioni per renderlo piu' comodo.</p>
763 <p>Assicurarsi che sia installata nel sistema la versione
764 completa dell'editor <tt class=
765 "docutils literal"><span class="pre">vim</span></tt>
766 nstallando il pacchetto vimi:</p>
767 <pre class="literal-block">
768 # apt-get install vim
770 e modificare il file di configurazione generale ``/etc/vim/vimrc`` ::
772 " All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
773 " /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
774 " you can find below. If you wish to change any of those settings, you should
775 " do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
776 " everytime an upgrade of the vim packages is performed. It is recommended to
777 " make changes after sourcing debian.vim since it alters the value of the
778 " 'compatible' option.
780 " This line should not be removed as it ensures that various options are
781 " properly set to work with the Vim-related packages available in Debian.
784 " Uncomment the next line to make Vim more Vi-compatible
785 " NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous
786 " options, so any other options should be set AFTER setting 'compatible'.
789 " Vim5 and later versions support syntax highlighting. Uncommenting the next
790 " line enables syntax highlighting by default.
793 " If using a dark background within the editing area and syntax highlighting
794 " turn on this option as well
797 " Uncomment the following to have Vim jump to the last position when
801 au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
802 \| exe "normal! g'\"" | endif
805 " Uncomment the following to have Vim load indentation rules and plugins
806 " according to the detected filetype.
808 filetype plugin indent on
811 " The following are commented out as they cause vim to behave a lot
812 " differently from regular Vi. They are highly recommended though.
813 set showcmd " Show (partial) command in status line.
814 "set showmatch " Show matching brackets.
815 set ignorecase " Do case insensitive matching
816 "set smartcase " Do smart case matching
817 "set incsearch " Incremental search
818 set autowrite " Automatically save before commands like :next and :make
819 "set hidden " Hide buffers when they are abandoned
820 "set mouse=a " Enable mouse usage (all modes) in terminals
822 " Source a global configuration file if available
823 " XXX Deprecated, please move your changes here in /etc/vim/vimrc
824 if filereadable("/etc/vim/vimrc.local")
825 source /etc/vim/vimrc.local
830 <div class="section" id="vnc">
831 <h2><a class="toc-backref" href=
832 "#id11">1.5 VNC</a></h2>
834 <p>I Virtual Network Computing (o VNC) sono software di
835 controllo remoto e servono per amministrare il proprio
836 computer a distanza o visuallizare la sessione di lavoro di
837 un altro computer sul proprio a scopo didattico.
838 Installando un server VNC sulla propria macchina ed
839 impostando una opportuna password si consente ai client VNC
840 di ricevere una immagine dello schermo ed eventualmente di
841 inviare input di tastiera e mouse al computer server
842 (durante le lezioni questo non e' possibile per gli
843 studenti, solo Andrea esegue i comandi). In pratica si può
844 gestire il computer server da un'altra postazione, come se
845 fosse il proprio computer fisico.</p>
847 <p>Scaricare il pacchetto <tt class=
848 "docutils literal"><span class=
849 "pre">xtightvncviewer</span></tt> e lo script <tt class=
850 "docutils literal"><span class="pre">guarda.sh</span></tt>
851 in una posizione (collocazione nel <em>path</em> degli
852 utenti, es <tt class="docutils literal"><span class=
853 "pre">echo</span> <span class="pre">$PATH</span></tt> per
854 visualizzare l'attuale path ) comoda per gli utenti ( in
855 genere <tt class="docutils literal"><span class=
856 "pre">/bin</span></tt> ), rndere eseguibile lo script.</p>
859 <pre class="literal-block">
862 wget http://debian.piffa.net/guarda.sh
867 <p>Si noti che non e' possibile lanciare un applicativo sul
868 server grafico di un utente da una shell in cui si sta
869 lavorando come altro utente, anche se root. E' quindi
870 necessario essere l'utente di sistema che si e' loggato
871 inizialmente nella sessione grafica per poter lanciare lo
872 script guarda.sh da una shell.</p>
874 <p>Controllare con <tt class=
875 "docutils literal"><span class="pre">whoami</span></tt> di
876 essere l'utente normale (es <tt class=
877 "docutils literal"><span class="pre">utente</span>
878 <span class="pre">|</span> <span class=
879 "pre">studente</span> <span class="pre">|</span>
880 <span class="pre">proprio</span> <span class=
881 "pre">nome</span></tt> ), in caso si sia assunta una altra
882 <tt class="docutils literal"><span class=
883 "pre">id</span></tt> si apra un altra shell o si esca da
884 quella attuale con <tt class=
885 "docutils literal"><span class="pre">exit</span></tt> .</p>
888 <div class="section" id="lista-dei-pacchetti-di-base">
889 <h2><a class="toc-backref" href=
890 "#id12">1.6 Lista dei pacchetti di
893 <p>I pacchetti installati generalmente <a class=
894 "footnote-reference" href="#id2" id="id1" name=
895 "id1">[1]</a> per poter seguire le lezioni sono:</p>
896 <pre class="literal-block">
897 kde-core kdm kde-i18n-it xorg vim less xtightvncviewer
900 <table class="docutils footnote" frame="void" id="id2"
909 <td class="label"><a class="fn-backref" href=
912 <td><tt class="docutils literal"><span class=
913 "pre">kde-core</span></tt> e' piu' leggero del
914 pacchetto <tt class="docutils literal"><span class=
915 "pre">kde</span></tt>, esiste anche un equivalente
916 <tt class="docutils literal"><span class=
917 "pre">gnome-core</span> <span class=
918 "pre">gnome</span></tt> e il log-in manager
919 <tt class="docutils literal"><span class=
920 "pre">gdm</span></tt> per il l'ambiente grafico
927 <div class="section" id="apt-configurazione">
928 <h2><a class="toc-backref" href=
929 "#id13">1.7 Apt configurazione</a></h2>
931 <p>Vediamo i due file principali di apt:</p>
934 <li><tt class="docutils literal"><span class=
935 "pre">/etc/apt/sources.list</span></tt></li>
937 <li><tt class="docutils literal"><span class=
938 "pre">/etc/apt/apt.conf</span></tt></li>
941 <div class="section" id="sources-list">
942 <h3><a class="toc-backref" href=
943 "#id14">1.7.1 sources.list</a></h3>
945 <p>Questo file contiene i sorgenti da cui <em>apt</em>
946 preleva i pacchetti da installare tramite <em>dpkg</em>,
947 vengono quindi precisati i metodi (ad es. http / ftp /
948 cdrom / file), la release che si vuole tracciare (es
949 <tt class="docutils literal"><span class=
950 "pre">stable,</span> <span class="pre">testing,</span>
951 <span class="pre">unstable</span></tt> oppure i
952 corrispondenti release name es: <tt class=
953 "docutils literal"><span class="pre">Lenny,</span>
954 <span class="pre">Squeeze,</span> <span class=
955 "pre">Sid</span></tt>), i rami di interesse (es:
956 <tt class="docutils literal"><span class=
957 "pre">main</span></tt> che e' l'archivio principale,
958 <tt class="docutils literal"><span class=
959 "pre">non-free</span></tt> per il software non libero,
960 <tt class="docutils literal"><span class=
961 "pre">contrib</span></tt> per i pacchetti non realizzati
962 dai manutentori ufficiali).</p>
964 <p>Gli archivi sono generalmente:</p>
967 <li><tt class="docutils literal"><span class=
968 "pre">deb</span></tt> per pacchetti Debian binari</li>
970 <li><tt class="docutils literal"><span class=
971 "pre">deb-src</span></tt> per i pacchetti sorgenti
972 (quindi da compilare, come il kernel) degli stessi
973 pacchetti binari. In genere se non compilate spesso
974 potete evitare di tracciare i sorgenti per risparmiare
978 <p><tt class="docutils literal"><span class=
979 "pre">/etc/apt/sources.list</span></tt></p>
980 <pre class="literal-block">
981 # esempio di accesso a un CDROM:
982 # cdrom:[Debian GNU/Linux 5.0.1 _Lenny_ - Official i386 kde-CD Binary-1 20090$
984 # Archivio principale debian via http su piffa.net,
985 # non funziona al difuori dell'aula dei corsi
986 deb http://debian.piffa.net/debian/ Lenny main
987 # deb http://debian.piffa.net/debian/ Lenny non-free contrib
989 # Mirror da kernel.org da usare a casa:
990 deb http://mirrors.eu.kernel.org/debian/ Lenny main
992 # Security dal sito principale
993 deb http://security.debian.org/ Lenny/updates main
994 deb-src http://security.debian.org/ Lenny/updates main
996 # Debian volatile per le cose soggette a cambiamenti non legati
997 # a dinamiche di sicurezza
998 deb http://volatile.debian.org/debian-volatile Lenny/volatile main
999 deb-src http://volatile.debian.org/debian-volatile Lenny/volatile main
1001 # Esempio di accesso a un filesystem locale contenente i pacchetti:
1002 # deb file:/mnt/mirror Sid main non-free contrib
1006 <div class="section" id="etc-apt-apt-conf">
1007 <h3><a class="toc-backref" href=
1008 "#id15">1.7.2 /etc/apt/apt.conf</a></h3>
1010 <p>Questo file contiene le opzioni di apt, come ad
1011 esempio il proxy:</p>
1012 <pre class="literal-block">
1013 Acquire::http::Proxy "http://10.10.208.254:3128"
1016 <p>Si tenga conto che se si imposta un proxy per apt sul
1017 proprio portatile e tornati a casa propria si vuole
1018 scaricare nuovi pacchetti si dovra' disabilitare il
1024 <div class="section" id="squid">
1025 <h1><a class="toc-backref" href=
1026 "#id16">2 Squid</a></h1>
1029 <div class="section" id="apache">
1030 <h1><a class="toc-backref" href=
1031 "#id17">3 Apache</a></h1>
1033 <p>Apache HTTP Server, o più comunemente Apache, e' il nome
1034 dato alla piattaforma server Web modulare più diffusa (ma
1035 anche al gruppo di lavoro open source che ha creato,
1036 sviluppato e aggiornato il software server), in grado di
1037 operare da sistemi operativi UNIX-Linux e Microsoft.</p>
1039 <p>Un server web e' un processo, e per estensione il computer
1040 su cui è in esecuzione, che si occupa di fornire, su
1041 richiesta del browser, una pagina web (spesso scritta in
1042 HTML). Le informazioni inviate dal server web viaggiano in
1043 rete trasportate dal protocollo HTTP. L'insieme di server web
1044 dà vita al World Wide Web, uno dei servizi più
1045 utilizzati di Internet.</p>
1047 <div class="section" id="pacchetti-da-installare">
1048 <h2><a class="toc-backref" href=
1049 "#id18">3.1 Pacchetti da
1050 installare::</a></h2>
1056 <p>Con la release 2.0 di Apache viene automaticamente resa
1057 disponibile anche la versione SSL (Secure Socket Layer,
1058 cpnnessioni criptate ) del web server.</p>
1061 <div class="section" id="configurazione-di-apache">
1062 <h2><a class="toc-backref" href=
1063 "#id19">3.2 Configurazione di
1066 <p>I file di configurazione di apache si trovano nella
1067 cartella: <tt class="docutils literal"><span class=
1068 "pre">/etc/apache2</span></tt> e sono strutturati come
1069 descritto nel file <tt class=
1070 "docutils literal"><span class="pre">/usr/share/doc/apache2/README.Debian.gz</span></tt>
1071 . Sostanzialmente lo schema e' il seguente:</p>
1073 <dl class="docutils">
1074 <dt>apache2.conf</dt>
1077 <p class="first">File di configurazione principale del
1080 <p class="last">httpd.conf e' il vecchio file di
1081 configurazione di Apache1, presente per motivi di
1082 retrocompatibilita' e' generalemente vuoto.</p>
1087 <dd>In questo file vengono specificate le porte sulle
1088 quali resta in ascolto il server web. Si noti che
1089 utilizzando dei virtual hosts generalmente viene
1090 specificata per questi la porta su cui ascoltare nel file
1091 di configurazione del virtual host, ad es: <tt class=
1092 "docutils literal"><span class=
1093 "pre"><VirtualHost</span> <span class=
1094 "pre">*:80></span></tt></dd>
1096 <dt>sites-available</dt>
1098 <dd>In questa cartella vengono raccolti i file di
1099 configurazione dei virtual host disponibili.</dd>
1101 <dt>sites-enabled</dt>
1103 <dd>In questa cartella sono contenuti dei link simbolici
1104 ai files in ../sites-available : se il link e' presente
1105 in questa cartella il virtual host e' abilitato.</dd>
1107 <dt>mods-available</dt>
1109 <dd>Stesso metodo per i moduli: in questa cartella ci
1110 sono i moduli veri e propri che verranno poi abilitati
1111 grazie all'esistenza di link simbolici nella cartella
1114 <dt>mods-enabled</dt>
1116 <dd>Moduli abilitati, effettivamente caricati.</dd>
1120 <div class="section" id="apache-conf">
1121 <h2><a class="toc-backref" href=
1122 "#id20">3.3 apache.conf</a></h2>
1124 <p>File di configurazione del servizio Apache, contiene le
1125 impostazioni generiche (ad esempio utilizzo della RAM e
1126 risorse di sistema) dell'intero servizio. Nella
1127 configurazione di default per Debian non viene definito un
1128 vero e proprio sito di default ma solo dei virtual
1131 <p>Guardiamo alcune direttive interessanti:</p>
1133 <dl class="docutils">
1136 <dd>Numero di secondi da aspettare prima di chiudere la
1137 connessione con il client. Questo parametro serve a
1138 liberare le risorse di sistema nel caso che un client,
1139 magar a causa di una connessione particolarmente lenta o
1140 instabili, tenga attivo indefinitivamente un processo di
1145 <dd>L'estensione keep-alive (http 1.0) congiuntamente
1146 alle connessioni persistenti (http 1.1) permettono al
1147 server di rispondere a piu' richieste dei client mediante
1148 la stessa connessione. Il protocoll http per sua natura
1149 e' senza stato (<em>statelessi</em> ), quindi ogni
1150 risorsa richiesta (per pagine web si pensi ad esempio
1151 alle immagini) dal client necessita di una connessione
1152 autonoma. Keep-alive permette di ottimizzare la
1153 connessione anche fino al 50% a seconda delle situazioni
1156 <dt>Server-Pool Size Regulation</dt>
1158 <dd>Questi parametri (StartServers, MinSpareServers, ecc.
1159 Tutti spiegati nel manuale di apache) servono per
1160 attribuire le risorse di sistema disponibili al server
1161 Apache. Tenere questi parametri bassi serve a limitare il
1162 rischio di Denial of Service per il server, nel caso
1163 offra altri servizi. I settagi di default sono come
1164 sempre abbastanza conservativi, se si conta di usare il
1165 proprio Apache per servire un sito web con molti
1166 visitatori sara' necessario aumentare sensibilmente le
1167 impostazioni di base.</dd>
1169 <dt>AccessFileName</dt>
1171 <dd>Il nome del file che viene onorato per modificare le
1172 impostazioni per una singola directory, legato alla
1173 direttiva AllowOverride .</dd>
1177 <div class="section" id="installazione-di-php">
1178 <h2><a class="toc-backref" href=
1179 "#id21">3.4 Installazione di PHP</a></h2>
1181 <p>Pacchetti da installare: <tt class=
1182 "docutils literal"><span class="pre">php5</span>
1183 <span class="pre">php-pear</span></tt></p>
1185 <div class="section" id="test-del-modulo-php">
1186 <h3><a class="toc-backref" href=
1187 "#id22">3.4.1 Test del modulo
1190 <p>Creare nella cartella <tt class=
1191 "docutils literal"><span class="pre">/var/www</span></tt>
1192 (o altra cartella visibile) un file con estensione *.php
1193 (es <tt class="docutils literal"><span class=
1194 "pre">/var/ww/info.php</span></tt> contenete codice php
1195 eseguibile dall'interprete, ad es:</p>
1196 <pre class="literal-block">
1197 <?php phpinfo() ; ?>
1200 <p>Questa funzione di php generera' la tipica pagina con
1201 le impostazioni attuali per PHP. Richiamando la pagina
1202 (es: <tt class="docutils literal"><span class=
1203 "pre">http://localhost/info.php</span></tt> ) verra
1204 generata dall'interprete PHP la pagina HTML e resa
1205 disponibile tramite Apache ai utclient HTTP, a prova del
1206 correto funzionamento del modulo di PHP e della sua
1207 integrazione con il serv web Apache. In caso contrario se
1208 il client http proporra di scaricare la pagina invece che
1209 visualizzarla nel browser: non funziona l'interprete di
1210 php o sono mal configurati i MIME-type. prima di tutto
1211 assicurarsi di aver fatoo ripartire Apache.</p>
1214 <div class="section" id=
1215 "installazione-del-supporto-per-mysql">
1216 <h3><a class="toc-backref" href=
1217 "#id23">3.4.2 Installazione del supporto
1220 <p>Installare i pacchetti:</p>
1221 <pre class="literal-block">
1222 php5-mysql phpmyadmin
1225 <p>Controllare tramite la pagina php.info che sia
1226 abilitato il supporto per Mysql (ripartito Apache,
1227 ricaricare la pagina e cercare con CTRL+f <tt class=
1228 "docutils literal"><span class=
1229 "pre">mysql</span></tt>).</p>
1232 <div class="section" id="phpmyadmin">
1233 <h3><a class="toc-backref" href=
1234 "#id24">3.4.3 phpmyadmin</a></h3>
1236 <p>L'interfaccia web Phpmyadmin non richede
1237 necessariamente la presenza di un database Mysql locale,
1238 puo' infatti essere utilizzata per gestire databases
1239 remoti (il suo file di configurazione: <tt class=
1240 "docutils literal"><span class=
1241 "pre">/etc/phpmyadmin/config.inc.php</span></tt> ). Nel
1242 caso si voglia installare localmente Mysql si utilizzi il
1243 pacchetto <tt class="docutils literal"><span class=
1244 "pre">mysql-server</span></tt> .</p>
1246 <p>Phpmyadmin dovrebbe essere disponibile all'URL:
1247 <tt class="docutils literal"><span class=
1248 "pre">http://localhost/phpmyadmin/</span></tt>, se cosi
1249 non fosse controllare che sia incluso il file <tt class=
1250 "docutils literal"><span class=
1251 "pre">/etc/phpmyadmin/apache.conf</span></tt> in
1252 <tt class="docutils literal"><span class=
1253 "pre">/etc/apache2/conf.d/</span></tt> .</p>
1256 <div class="section" id=
1257 "installazione-del-supporto-per-postgresql">
1258 <h3><a class="toc-backref" href=
1259 "#id25">3.4.4 Installazione del supporto
1260 per Postgresql</a></h3>
1262 <p>Installare i pacchetti:</p>
1263 <pre class="literal-block">
1264 php5-pgsql phppgadmin
1267 <p>Controllare tramite la pagina php.info che sia
1268 abilitato il supporto per PostgreSQL (ripartito Apache,
1269 ricaricare la pagina e cercare con CTRL+f <tt class=
1270 "docutils literal"><span class=
1271 "pre">pgsql</span></tt>).</p>
1274 <div class="section" id="phppgadmin">
1275 <h3><a class="toc-backref" href=
1276 "#id26">3.4.5 phppgadmin</a></h3>
1278 <p>L'interfaccia web Phppgadmin per il database server
1279 PostgreSQL non richede necessariamente la presenza di un
1280 database locale, puo' infatti essere utilizzata per
1281 gestire databases remoti (il suo file di configurazione:
1282 <tt class="docutils literal"><span class=
1283 "pre">/etc/phppgadmin/config.inc.php</span></tt> ). Nel
1284 caso si voglia installare localmente Mysql si utilizzi il
1285 pacchetto <tt class="docutils literal"><span class=
1286 "pre">postgresql</span></tt> .</p>
1288 <p>Phpmyadmin dovrebbe essere disponibile all'URL:
1289 <tt class="docutils literal"><span class=
1290 "pre">http://localhost/phppgadmin/</span></tt>, se cosi
1291 non fosse controllare che sia incluso il file <tt class=
1292 "docutils literal"><span class=
1293 "pre">/etc/phppgadmin/apache.conf</span></tt> in
1294 <tt class="docutils literal"><span class=
1295 "pre">/etc/apache2/conf.d/</span></tt> .</p>
1299 <div class="section" id="virtual-hosts">
1300 <h2><a class="toc-backref" href=
1301 "#id27">3.5 Virtual hosts</a></h2>
1305 <li><a class="reference external" href=
1306 "http://www.apacheweek.com/features/vhost">http://www.apacheweek.com/features/vhost</a></li>
1308 <li><a class="reference external" href=
1309 "http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html">
1310 http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html</a></li>
1314 <p>I virtual host permettono di avere piu' siti internet
1315 disponibili tramite lo stesso server web, eventualmente
1316 mappati su un solo indirizzo ip. Sono generalemente di due
1321 <li>Basati su <em>indirizzi ip</em>. Se si ha la
1322 possibilita' di avere piu' indirizzi ip dedicati per i
1323 diversi siti che si vuole servire. ES: <tt class=
1324 "docutils literal"><span class=
1325 "pre"><VirtualHost</span> <span class=
1326 "pre">192.168.0.2:80></span></tt> . Soluzione
1327 dispendiosa, si tende ad usarla solo se servono
1328 certificati di sicurezza (SSL ) dedicati per ogni
1331 <li>Basati su <em>nomi di dominio</em> che puntano allo
1332 stesso ip. Soluzione piu' economica e diffusa che si
1333 basa sulle funzionalita' di http 1.1 .</li>
1337 <p>Prenderemo in esame la gestione di virtual hosts basati
1338 su nomi di dominio.</p>
1340 <div class="section" id="gestione-dns">
1341 <h3><a class="toc-backref" href=
1342 "#id28">3.5.1 Gestione DNS</a></h3>
1344 <p>Prima di tutto per poter impostare i virtual hosts
1345 dovete avere un server DNS che risolva i vostri nomi di
1346 dominio sull'indirizzo ip del server. Questo si puo'
1347 ottenere in vari modi, ad es:</p>
1350 <dl class="docutils">
1351 <dt><em>Bind</em> (DNS server)</dt>
1353 <dd>Impostare i campi A nelle proprie zone gestite
1354 dal server dns Bind. Ad es: <tt class=
1355 "docutils literal"><span class=
1356 "pre">papo</span>
1358 "pre">A</span>
1359 <span class="pre">212.22.136.248</span></tt></dd>
1361 <dt><em>Servizio DNS dinamico on line</em>.</dt>
1363 <dd>Utilizzare un servizio come ad es: <a class=
1364 "reference external" href=
1365 "https://www.dyndns.com/">https://www.dyndns.com/</a>
1366 per mappare nomi di dominio sul proprio indirizzo ip,
1367 comodo ad esempio se si dispone di un indirzzo ip
1368 pubblico (anche se dinamico) per la propria
1369 connessione ad internet.</dd>
1371 <dt><em>Dnsmasq</em> (DNS server)</dt>
1373 <dd>Utilizzabile a livello locale per fare dei test,
1374 utilizzando direttive come: <tt class=
1375 "docutils literal"><span class=
1376 "pre">address=/davide.piffa.net/10.10.208.178</span></tt></dd>
1378 <dt><tt class="docutils literal"><span class=
1379 "pre">/etc/hosts</span></tt></dt>
1381 <dd>Per prove <em>strettamente a livello locale</em>
1382 potete impostare i nomi dei vostri virtual server nel
1383 file /etc/hosts .</dd>
1386 <pre class="literal-block">
1389 ; <<>> DiG 9.5.1-P1 <<>> 177.piffa.net
1390 ;; global options: printcmd
1392 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38036
1393 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
1395 ;; QUESTION SECTION:
1396 ;177.piffa.net. IN A
1399 177.piffa.net. 0 IN A 10.10.208.177
1401 ;; Query time: 12 msec
1402 ;; SERVER: 10.10.208.254#53(10.10.208.254)
1403 ;; WHEN: Wed May 6 12:27:08 2009
1404 ;; MSG SIZE rcvd: 47
1407 <p>La parte interessante e' <tt class=
1408 "docutils literal"><span class=
1409 "pre">177.piffa.net.</span>
1411 "pre">0</span>
1412 <span class="pre">IN</span>
1414 "pre">A</span>
1415 <span class="pre">10.10.208.177</span></tt> . Il nome di
1416 dominio 177.piffa.net viene risolto sull'ip 10.10.208.177
1417 , nel nostro Apache (che risponde all'ip 10.10.208.177 )
1418 dovra' essere disponibile un virtual host che corrisponde
1419 al nome <tt class="docutils literal"><span class=
1420 "pre">177.piffa.net</span></tt> .</p>
1423 <div class="section" id="virtual-host">
1424 <h3><a class="toc-backref" href=
1425 "#id29">3.5.2 Virtual host</a></h3>
1427 <p>Esempio di Virtual host:</p>
1428 <pre class="literal-block">
1429 <VirtualHost *:80 >
1430 ServerName 177.piffa.net
1431 DocumentRoot /var/www/177.piffa.net/
1432 ServerAdmin webmaster@177.piffa.net
1433 </VirtualHost>
1436 <ol class="arabic simple">
1437 <li><tt class="docutils literal"><span class=
1438 "pre"><VirtualHost</span> <span class=
1439 "pre">\*:80</span> <span class="pre">></span></tt>
1440 La prima riga indica l'inizio della stanza relativa al
1441 nostro virtual host, che ascolotera' su qualunque
1442 indirizzo ip (nel caso il server abbia piu' indirizzi
1443 dai quali e' raggiungibile) sulla porta <tt class=
1444 "docutils literal"><span class=
1445 "pre">80</span></tt>.</li>
1447 <li><tt class="docutils literal"><span class=
1448 "pre">Server/name</span></tt> precisa quale sara' il
1449 nome di dominio a cui verra' associato questo sito
1450 rispetto ad altri eventualmenti presenti sullo stesso
1453 <li><tt class="docutils literal"><span class=
1454 "pre">DocumentRoot</span></tt> : il path della
1455 directory che contiene le pagine del sito.</li>
1457 <li><tt class="docutils literal"><span class=
1458 "pre">ServerAdmin</span></tt>: l'indirizzo del
1459 webmaster, in modo da poterlo contattare in caso di
1460 problemi col sito.</li>
1462 <li><tt class="docutils literal"><span class=
1463 "pre"></VirtualHost></span></tt>: <em>tag</em> di
1464 chiusura della stanza di definizione del virtual
1468 <p>Quelle che abbiamo appena visto sono le direttive
1469 essenziali per definire un sito virtuale, potrebbe essere
1470 utile aggiungene altre:</p>
1474 <dl class="first docutils">
1475 <dt><tt class="docutils literal"><span class=
1476 "pre">ErrorLog</span> <span class=
1477 "pre">/var/log/apache2/177.piffa.net/error.log</span></tt></dt>
1480 <p class="first last">Log degli errori separato
1481 dai restanti siti web ospitati dal server.</p>
1487 <dl class="first docutils">
1488 <dt><tt class="docutils literal"><span class=
1489 "pre">LogLevel</span> <span class=
1490 "pre">warn</span></tt></dt>
1493 <p class="first last">Livello di importanza degli
1494 eventi loggati= warning <em>attenzione</em> .</p>
1500 <dl class="first docutils">
1501 <dt><tt class="docutils literal"><span class=
1502 "pre">CustomLog</span> <span class=
1503 "pre">/var/log/apache2/177.piffa.net/access.log</span>
1504 <span class="pre">combined</span></tt></dt>
1507 <p class="first last">Log di accesso separati
1508 dagli altri siti, utile anche qua per statistiche
1509 di accesso per il solo sito virtuale.</p>
1515 <p>Potrebbe essere utile modificare le impostazioni di
1516 una intera directory, ad esempio per abilitare
1517 l'<tt class="docutils literal"><span class=
1518 "pre">AuthConfig</span></tt>:</p>
1519 <pre class="literal-block">
1520 <Directory "/var/www/miosito.net/privata">
1521 AllowOverride AuthConfig
1522 Options ExecCGI Indexes MultiViews FollowSymLinks
1528 <p><tt class="docutils literal"><span class=
1529 "pre">AllowOverride</span> <span class=
1530 "pre">AuthConfig</span></tt> ora vale per l'intera
1531 directory, come le altre opzioni.</p>
1535 <div class="section" id="negoziazione-accessi">
1536 <h2><a class="toc-backref" href=
1537 "#id30">3.6 Negoziazione accessi</a></h2>
1539 <p>Tipicamente quando si installa un server web il proprio
1540 desiderio e' di dare accesso ai materiali disponibili al
1541 maggior numero di visitatori possibile. Talvolta pero' puo
1542 essere utile o necessario limitare gli accessi, ad esempio
1543 per escludere un <em>bot</em> indesiderato che scansiona
1544 ininterottamente le nostre pagine o per creare una <em>Area
1545 Riservata</em> i cui materiali non devono essere
1546 disponibile a tutti.</p>
1548 <div class="section" id="limiti-su-base-ip">
1549 <h3><a class="toc-backref" href=
1550 "#id31">3.6.1 Limiti su base ip</a></h3>
1552 <p>La forma piu' semplice di restrizine degli accessi e'
1553 su base degli indirizzi IP dei client: tipicamente i siti
1554 web sono settati per dare accesso a chiunque:</p>
1555 <pre class="literal-block">
1556 <VirtualHost *:80 >
1558 <Directory "/var/www/177.piffa.net">
1562 </VirtualHost>
1565 <p>Potremmo negare l'accesso a uno o piu' indirizzi IP in
1567 <pre class="literal-block">
1568 <VirtualHost *:80 >
1569 <Directory "/var/www/177.piffa.net">
1572 Deny from 192.168.0.1
1574 </VirtualHost>
1577 <p>Ora l'IP 192.168.0.1 non potra' piu' accedere ai
1578 materiali dell'intero sito virtuale, oppure potremmo
1579 lavorare su una sola directory:</p>
1580 <pre class="literal-block">
1581 <Directory "/var/www/miosito.net/limitata">
1583 Allow from 192.168.0.0./24
1588 <p>In questo modo solo la classe IP <tt class=
1589 "docutils literal"><span class=
1590 "pre">192.168.0.0/24</span></tt> potra' accedere alla
1591 directory <tt class="docutils literal"><span class=
1592 "pre">/limitata</span></tt> Si tenga pero' conto che e'
1593 relativamente facile per un malintenzionato cambiare il
1594 propio indirizzo ip, oppure collegarsi da un altra zona.
1595 Meno facile e' accedere ad una classe privata trovandosi
1596 all'esterno di questa, ma e' comunque possibile mandare
1597 delle richieste <tt class="docutils literal"><span class=
1598 "pre">GET</span></tt> per cercare di mandare in Denial Of
1599 Service il webserver.</p>
1603 <div class="section" id="user-authentication">
1604 <h2><a class="toc-backref" href=
1605 "#id32">3.7 User Authentication</a></h2>
1607 <p>A volte conviene negoziare gli accessi ad un area di un
1608 sito tramite autenticazione basata sull'accopiata <em>nome
1609 utente / password</em>. Questo puo' venire utile per creare
1610 una area download <em>intranet</em>, alla quale possano
1611 accedere solo gli utenti previsti a prescindere dagli
1612 indirizzi IP dei loro client. Per quanto esistano soluzioni
1613 piu' granulari e sofisticate per ottenere questo,
1614 <em>mod-auth</em> puo'essere sufficente. E mod auth non
1615 richiede l'installazione di software aggiuntivi.</p>
1617 <p>link: <a class="reference external" href=
1618 "http://www.apacheweek.com/features/userauth">http://www.apacheweek.com/features/userauth</a></p>
1620 <div class="section" id="definire-la-cartella">
1621 <h3><a class="toc-backref" href=
1622 "#id33">3.7.1 Definire la
1625 <p>Decidere quale sara' il <em>path</em> della cartella
1626 da sottoporre ad autentizazione:(e creiamo la
1630 <tt class="docutils literal"><span class=
1631 "pre">mkdir</span> <span class=
1632 "pre">/var/www/177.piffa.net/privata</span></tt>
1636 <div class="section" id=
1637 "creazione-del-database-delle-passwords">
1638 <h3><a class="toc-backref" href=
1639 "#id34">3.7.2 Creazione del database
1640 delle passwords</a></h3>
1642 <p>Un modo semplice per gestire una database di
1643 <em>user-id / passwords</em> e' utilizzare l'utility
1644 <tt class="docutils literal"><span class=
1645 "pre">htpasswd</span></tt> di Apache. Questa crea un file
1646 in cui un <em>crypt</em> delle password viene associato
1649 <p>Si dovra' decidere dove tenere questo file, la cosa
1650 importante e' che non sia visibile nel sito web: non deve
1651 essere scaricabile dai visitatori. Deve essere cioe'
1652 all'esterno della <em>DocumentRoot</em>: un buon posto
1653 potrebbe essere la /home dell'utente.</p>
1655 <p>Creiamo (con il <em>flag</em> <tt class=
1656 "docutils literal"><span class="pre">-c</span></tt>) il
1657 file <tt class="docutils literal"><span class=
1658 "pre">/home/utente/passwords</span></tt> con l'utente
1659 <tt class="docutils literal"><span class=
1660 "pre">luca</span></tt>:</p>
1661 <pre class="literal-block">
1662 htpasswd -c /home/utente/passwords luca
1665 <p><tt class="docutils literal"><span class=
1666 "pre">htpasswd</span></tt> ci chedera' la password da
1667 associare all'utente <tt class=
1668 "docutils literal"><span class="pre">luca</span></tt>.
1669 Per sucessive modifiche della password o aggiunta di
1670 nuovi utenti non sara' necessario usare il flag
1671 <tt class="docutils literal"><span class=
1672 "pre">-c</span></tt>.</p>
1675 <div class="section" id="id3">
1676 <h3><a class="toc-backref" href=
1677 "#id35">3.7.3 Configurazione di
1680 <p>Ora possiamo passare alla configurazione vera e
1681 propria di Apache, ma con una novita': andremo a inserire
1682 la voce in un <tt class="docutils literal"><span class=
1683 "pre">.htaccess</span></tt> invece che modificare il file
1684 di impostazione del virtual-host.</p>
1686 <p>Questo per motivi pratici: solo l'utente <em>root</em>
1687 puo' modificare l'impostazione del virtual host nel file
1688 <tt class="docutils literal"><span class=
1689 "pre">/etc/apache2/sites-enabled/177.piffa.net</span></tt>,
1690 ma spesso il motivo per cui creiamo i virtual hosts e'
1691 ospitare i siti di altri utenti, che possono solo
1692 pubblicare (generalmente tramite <em>FTP</em>) i loro
1693 documenti nella loro <em>DocumentRoot</em>, senza poter
1694 quindi modificare in alcun modo la configurazione del
1697 <p>Dando agli utenti la possibilita' di modificare
1698 (<em>AllowOverride</em>) autonomamente alcuni parametri
1699 (in questo caso solo l'<em>AuthConfig</em>) relativi al
1700 funzionamenteo del loro spazio web ci togliera'
1701 l'incombenza di dover intervenire suii vari virtual
1704 <p>Abilitiamo l'AllowOverride nel file di configurazione
1705 del virtual host per la sola directory <tt class=
1706 "docutils literal"><span class=
1707 "pre">privata</span></tt>:</p>
1708 <pre class="literal-block">
1709 <VirtualHost *:80 >
1710 ServerName 177.piffa.net
1711 DocumentRoot /var/www/177.piffa.net/
1712 ServerAdmin webmaster@177.piffa.net
1713 <Directory "/var/www/177.piffa.net/privata">
1714 AllowOverride AuthConfig
1716 </VirtualHost>
1719 <p>Per rendere il cambiamento effettivo sara' necessario
1720 fare un restart / reload di Apache.</p>
1722 <p>Ora sara' possibile, anche per l'utente di sistema,
1723 creare un fie <tt class="docutils literal"><span class=
1724 "pre">.htaccess</span></tt> che sara' onorato da
1727 <p>/var/www/177.piffa.net/privata/.htaccess</p>
1728 <pre class="literal-block">
1729 # Questo file viene incluso
1730 # nella configurazione del sito web
1731 # Messaggio visualizzato al prompt per l'autenticazione
1732 AuthName "Area privata soggetta ad autentizazione"
1733 # tipo di autenticazione da usarsi
1735 # File generato precedentemente con htpasswd
1736 AuthUserFile /home/utente/passwords
1738 # Negoziazione degli accessi
1739 # valid users permette l'accesso agli utenti specificati
1740 # nel file generato da htpasswd
1744 <p>Si noti che non e' necessario fare ripartire Apache
1745 per onorare i cambiamenti (un utente non avrebbe la
1746 possibilita' di farlo!).</p>
1750 <div class="section" id="cavets">
1751 <h2><a class="toc-backref" href=
1752 "#id36">3.8 Cavets</a></h2>
1754 <p>Problemi di cache:</p>
1758 <li>Proxy: nei settaggi del browser specificare di non
1759 utilizzare un server proxy http per il sito web locale
1760 (o per gli altri che si stanno monitorando). Se si ha
1761 il controllo del proxy server: stopparlo, ricaricare la
1762 pagina (operazione che fallira'), far ripartire il
1763 proxy, ricaricare la pagina.</li>
1765 <li>Provare con un altro browser, o cercare di svuotare
1766 la cache chiudere/riaprire l'applicativo. Provare a
1767 fermare Apache, ricaricare la pagina (operazione che
1768 fallira'), far ripartire Apache, ricaricare la
1775 <div class="section" id="domain-name-system">
1776 <h1><a class="toc-backref" href=
1777 "#id37">4 Domain Name System</a></h1>
1779 <p>Domain Name System (spesso indicato con DNS) è un
1780 servizio utilizzato per la risoluzione di nomi di host in
1781 indirizzi IP e viceversa. Il servizio è realizzato tramite
1782 un database distribuito, costituito dai server DNS.</p>
1784 <p>Il nome DNS denota anche il protocollo che regola il
1785 funzionamento del servizio, i programmi che lo implementano,
1786 i server su cui questi girano, l'insieme di questi server che
1787 cooperano per fornire il servizio.</p>
1789 <p>I nomi DNS, o "nomi di dominio", sono una delle
1790 caratteristiche più visibili di Internet.</p>
1792 <p>C'è confusione in merito alla definizione dell'acronimo:
1793 la S spesso viene interpretata come service, ma la
1794 definizione corretta è system.</p>
1796 <p>L'operazione di convertire un nome in un indirizzo è
1797 detta risoluzione DNS, convertire un indirizzo IP in nome è
1798 detto risoluzione inversa.</p>
1800 <div class="section" id="nomi-di-dominio">
1801 <h2><a class="toc-backref" href=
1802 "#id38">4.1 Nomi di dominio</a></h2>
1804 <p>Un nome a dominio è costituito da una serie di stringhe
1805 separate da punti, ad esempio it.wikipedia.org. A
1806 differenza degli indirizzi IP, dove la parte più
1807 importante del numero è la prima partendo da sinistra, in
1808 un nome DNS la parte più importante è la prima partendo
1809 da destra. Questa è detta dominio di primo livello (o TLD,
1810 Top Level Domain), per esempio .org o .it.</p>
1812 <p>Un dominio di secondo livello consiste in due parti, per
1813 esempio wikipedia.org, e così via. Ogni ulteriore elemento
1814 specifica un'ulteriore suddivisione. Quando un dominio di
1815 secondo livello viene registrato all'assegnatario, questo
1816 è autorizzato a usare i nomi di dominio relativi ai
1817 successivi livelli come it.wikipedia.org (dominio di terzo
1818 livello) e altri come some.other.stuff.wikipedia.org
1819 (dominio di quinto livello) e così via.</p>
1822 <div class="section" id="tipologie-di-record">
1823 <h2><a class="toc-backref" href=
1824 "#id39">4.2 Tipologie di record</a></h2>
1826 <p>Ad un nome DNS possono corrispondere diversi tipi di
1827 informazioni. Per questo motivo, esistono diversi tipi di
1828 record DNS. Ogni voce del database DNS deve essere
1829 caratterizzata da un tipo. I principali tipi sono:</p>
1832 <li>Record A - Indica la corrispondenza tra un nome ed
1833 uno (o più) indirizzi IP (per la precisione indirizzi
1834 IPv4, ovvero la versione attualmente in uso).</li>
1836 <li>Record MX - (Mail eXchange) indica a quali server
1837 debba essere inviata la posta elettronica per un certo
1840 <li>Record CNAME - Sono usati per creare un alias, ovvero
1841 per fare in modo che lo stesso calcolatore sia noto con
1842 più nomi. Uno degli utilizzi di questo tipo di record
1843 consiste nell'attribuire ad un host che offre più
1844 servizi un nome per ciascun servizio. In questo modo, i
1845 servizi possono poi essere spostati su altri host senza
1846 dover riconfigurare i client, ma modificando solo il
1849 <li>Record PTR - Il DNS viene utilizzato anche per
1850 realizzare la risoluzione inversa, ovvero per far
1851 corrispondere ad un indirizzo IP il corrispondente nome a
1852 dominio. Per questo si usano i record di tipo "PTR" (e
1853 una apposita zona dello spazio dei nomi
1856 <li>Record AAAA - Restituisce un indirizzo IPv6.</li>
1858 <li>Record SRV - Identificano il server per un
1859 determinato servizio all'interno di un dominio. Possono
1860 essere considerati una generalizzazione dei record
1863 <li>Record TXT - Associano campi di testo arbitrari ad un
1864 dominio. Questi campi possono contenere una descrizione
1865 informativa oppure essere utilizzati per realizzare
1869 <p>Vi sono anche tipi di record "di servizio", necessari al
1870 funzionamento del database distribuito: * Record NS -
1871 Utilizzato per indicare quali siano i server DNS
1872 autoritativi per un certo dominio, ovvero per delegarne la
1873 gestione. * Record SOA - (Start of Authority) usato per la
1874 gestione delle zone DNS.</p>
1877 <div class="section" id="utilizzo">
1878 <h2><a class="toc-backref" href=
1879 "#id40">4.3 Utilizzo</a></h2>
1881 <p>I computer vengono identificati in rete grazie agli
1882 indirizzi <em>IP</em>, questi pero' non sono comodi per gli
1883 utenti come riferimento per i vari server. Ad esempio
1884 sarebbe scomodoriferirsi al motore di ricerca Goggle con
1885 uno dei suoi IP: <tt class="docutils literal"><span class=
1886 "pre">74.125.43.104</span></tt>, e' preferibile usare il
1887 nome di dominio <em>www.google.com</em>:</p>
1888 <pre class="literal-block">
1889 ping -c 1 www.google.com
1890 PING www.l.google.com (74.125.43.104) 56(84) bytes of data.
1894 <div class="section" id="risoluzione-dei-nomi-di-dominio">
1895 <h2><a class="toc-backref" href=
1896 "#id41">4.4 Risoluzione dei nomi di
1899 <p>Ci sono vari strumenti per interrogare i server DNS e
1900 ottenere l'indirizzo IP associato al nome di dominio che ci
1902 <pre class="literal-block">
1903 $ host www.piffa.net
1904 www.piffa.net is an alias for piffa.net.
1905 piffa.net has address 65.98.21.97
1906 piffa.net mail is handled by 10 65.98.21.97
1909 $ nslookup www.piffa.net
1910 Server: 192.168.0.10
1911 Address: 192.168.0.10#53
1913 Non-authoritative answer:
1914 www.piffa.net canonical name = piffa.net.
1916 Address: 65.98.21.97
1921 ; <<>> DiG 9.6.0-P1 <<>> www.piffa.net
1922 ;; global options: +cmd
1924 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47751
1925 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 4
1927 ;; QUESTION SECTION:
1928 ;www.piffa.net. IN A
1931 www.piffa.net. 3489 IN CNAME piffa.net.
1932 piffa.net. 3489 IN A 65.98.21.97
1934 ;; AUTHORITY SECTION:
1935 piffa.net. 86289 IN NS ns2.mydomain.com.
1936 piffa.net. 86289 IN NS ns1.mydomain.com.
1937 piffa.net. 86289 IN NS ns4.mydomain.com.
1938 piffa.net. 86289 IN NS ns3.mydomain.com.
1940 ;; ADDITIONAL SECTION:
1941 ns1.mydomain.com. 96208 IN A 64.94.117.193
1942 ns2.mydomain.com. 96208 IN A 64.94.31.67
1943 ns3.mydomain.com. 96208 IN A 66.150.161.137
1944 ns4.mydomain.com. 96208 IN A 63.251.83.74
1946 ;; Query time: 1 msec
1947 ;; SERVER: 192.168.0.10#53(192.168.0.10)
1948 ;; WHEN: Sun May 10 21:23:11 2009
1949 ;; MSG SIZE rcvd: 209
1952 <p>Lo strumento piu' esaustivo e' <tt class=
1953 "docutils literal"><span class="pre">dig</span></tt>,
1954 installabile con il pacchetto <tt class=
1955 "docutils literal"><span class="pre">dnsutils</span></tt>
1959 <div class="section" id="dig">
1960 <h2><a class="toc-backref" href=
1961 "#id42">4.5 Dig</a></h2>
1963 <p>Vediamo alcune opzioni utili nell'utilizzo di <tt class=
1964 "docutils literal"><span class="pre">dig</span></tt> per
1965 l'inerrogazione dei DNS Server:</p>
1966 <pre class="literal-block">
1969 ; <<>> DiG 9.6.0-P1 <<>> www.google.it
1970 ;; global options: +cmd
1972 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18816
1973 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 7, ADDITIONAL: 0
1975 ;; QUESTION SECTION:
1976 ;www.google.it. IN A
1979 www.google.it. 250683 IN CNAME www.google.com.
1980 www.google.com. 334819 IN CNAME www.l.google.com.
1981 www.l.google.com. 186 IN A 74.125.43.103
1982 www.l.google.com. 186 IN A 74.125.43.104
1983 www.l.google.com. 186 IN A 74.125.43.147
1984 www.l.google.com. 186 IN A 74.125.43.99
1986 ;; AUTHORITY SECTION:
1987 l.google.com. 80856 IN NS f.l.google.com.
1988 l.google.com. 80856 IN NS d.l.google.com.
1989 l.google.com. 80856 IN NS b.l.google.com.
1990 l.google.com. 80856 IN NS c.l.google.com.
1991 l.google.com. 80856 IN NS a.l.google.com.
1992 l.google.com. 80856 IN NS e.l.google.com.
1993 l.google.com. 80856 IN NS g.l.google.com.
1995 ;; Query time: 1 msec
1996 ;; SERVER: 192.168.0.10#53(192.168.0.10)
1997 ;; WHEN: Sun May 10 21:34:47 2009
1998 ;; MSG SIZE rcvd: 255
2001 <dl class="docutils">
2004 <dd>(semza opzioni o oggetti) Fornisce l'elenco dei
2005 <em>root servers</em> utilizzati. I root server sono i
2006 server che mantengono le informazioni sui domini di primo
2007 livello (TLD) e sono quindi il punto di partenza per
2008 scorrere nella directory dei DNS per recuperare le
2009 informazioni (tipicamente un campo <tt class=
2010 "docutils literal"><span class="pre">A</span></tt> per un
2011 indirizzo IP) che ci servono per raggiungere un certo
2020 <p>;; ANSWER SECTION: . 192032 IN NS C.ROOT-SERVERS.NET.
2021 . 192032 IN NS E.ROOT-SERVERS.NET. . 192032 IN NS
2022 B.ROOT-SERVERS.NET. . 192032 IN NS L.ROOT-SERVERS.NET. .
2023 192032 IN NS A.ROOT-SERVERS.NET. . 192032 IN NS
2024 F.ROOT-SERVERS.NET. . 192032 IN NS H.ROOT-SERVERS.NET. .
2025 192032 IN NS G.ROOT-SERVERS.NET. . 192032 IN NS
2026 K.ROOT-SERVERS.NET. . 192032 IN NS M.ROOT-SERVERS.NET. .
2027 192032 IN NS I.ROOT-SERVERS.NET. . 192032 IN NS
2028 J.ROOT-SERVERS.NET. . 192032 IN NS
2029 D.ROOT-SERVERS.NET.</p>
2036 <div class="section" id="dnsmasq">
2037 <h1><a class="toc-backref" href=
2038 "#id43">5 DNSmasq</a></h1>
2040 <p>Dnsmasq puo' svolgere le funzioni di un DNS cache /
2041 forwarder e un server DHCP caratterizzato dalla facilita' di
2042 configurazione, dalla leggerezza e dalla possibilita' di
2043 modificare rapidamente i record DNS serviti alla rete. Puo'
2044 essere anche utilizzato come <cite>server per il boot da rete
2045 <http://www.debian-administration.org/articles/478>_</cite>
2048 <p>Dnsmasq e' un interessante alternativa all'uso del server
2049 DNS Bind in modalita' cache-only (non autoritativo)
2050 accompagnato dal server DHCPD. I vantaggi sono:</p>
2053 <li>Leggerezza: puo' essere fatto girare su una macchina
2054 relativamente debole in caso di bisogno.</li>
2056 <li>Rapidita' di configurazione (in particolare per servire
2057 dei record A / MX alla rete, modificando al volo i valori
2058 originali ospitati sul server DNS Publico).</li>
2060 <li>Ben integrato con connssioni PPP (utile se dovete
2061 rendere disponibile rapidamente una connessione a internet
2062 a una rete in difficolta').</li>
2065 <p>Tutto cio' rende Dnsmasq una soluzione valida in
2066 particolare quando si deve intervenire in una rete
2067 pre-esistente in cui il server principale e' in crisi: si
2068 potra' utilizzare Dnsmasq anche su una macchina piu' debole e
2069 <em>mascherare</em> i servizi al momento non disponibili.
2070 Molto utile per scopi didattici, sopratutto per testare
2071 server SMTP impostando al volo i campi MX per nomi di dominio
2075 <div class="section" id="samba">
2076 <h1><a class="toc-backref" href=
2077 "#id44">6 Samba</a></h1>
2079 <p>Samba e' un progetto libero che fornisce servizi di
2080 condivisione di file e stampanti a client SMB/CIFS.</p>
2082 <p>Samba e' liberamente disponibile, al contrario di altre
2083 implementazioni SMB/CIFS, e permette di ottenere
2084 interoperabilita' tra Linux, Unix, Mac OS X e Windows.</p>
2086 <p>Samba e' un software che puo girare su piattaforme che non
2087 siano Microsoft Windows, per esempio, UNIX, Linux, IBM System
2088 390, OpenVMS e altri sistemi operativi. Samba utilizza il
2089 protocollo TCP/IP utilizzando i servizi offerti sul server
2090 ospite. Quando correttamente configurato, permette di
2091 interagire con client o server Microsoft Windows come se
2092 fosse un file e print server Microsoft agendo da Primary
2093 Domain Controller (PDC) o come Backup Domain Controller, puo'
2094 inoltre prendere parte ad un dominio Active Directory.</p>
2096 <div class="section" id="pacchetti">
2097 <h2><a class="toc-backref" href=
2098 "#id45">6.1 Pacchetti</a></h2>
2100 <p>Pacchetti da installare per utilizzare Samba in
2101 modalita' client <a class="footnote-reference" href="#id5"
2102 id="id4" name="id4">[2]</a></p>
2103 <pre class="literal-block">
2107 <p>Pacchetti da installare per utilizzare Samba in
2108 modalita' server:</p>
2109 <pre class="literal-block">
2110 samba smbfs smbclient
2113 <table class="docutils footnote" frame="void" id="id5"
2120 <tbody valign="top">
2122 <td class="label"><a class="fn-backref" href=
2125 <td>Anche se nato per i sistemi Windows, Samba puo'
2126 essere usato anche per montare cartelle sotto
2127 GNU/Linux come alternativa a NFS. Per la condivisione
2128 di stampanti sarebbe invece opportuno intervenire
2129 direttamente su <tt class=
2130 "docutils literal"><span class=
2131 "pre">CUPS</span></tt>.</td>
2136 <p>Durante la prima installazione viene chiesto il nome del
2137 gruppo di appartenenza, il default per Windows e'
2138 <tt class="docutils literal"><span class=
2139 "pre">WORKGROUP</span></tt>. In aula usiamo invece
2140 <tt class="docutils literal"><span class=
2141 "pre">208</span></tt> .</p>
2143 <p>Per riconfigurare Samba si usi il comando:</p>
2144 <pre class="literal-block">
2145 dpkg-reconfigure samba-common
2149 <div class="section" id="passwords-e-autenticazione">
2150 <h2><a class="toc-backref" href=
2151 "#id46">6.2 Passwords e
2152 autenticazione</a></h2>
2154 <p>Per poter configurare Samba in modo che usi un sistema
2155 di negoziazione degli accessi alle cartelle condivise
2156 basato su accoppiate <em>nome utente / password</em>
2157 bisogna distinguere tra 3 livelli di password (e
2158 generalmente volete usare <em>sempre la stessa
2159 password</em> per ognuno di questi) e delle differenze tra
2160 le modalita' di <em>autenticazione</em> (e quindi anche di
2161 criptaggio delle passwords) usate da sistemi GNU/Linux e
2164 <dl class="docutils">
2165 <dt>1 Sistema *Unix ( GNU/Linux )</dt>
2167 <dd>E' la password dell'<em>utente di sistema</em> che
2168 viene usata sul sistema operativo su cui gira il software
2169 Samba. E' importante tenere conto anche delle
2170 <em>user-id</em> e <em>group-id</em> degli utenti che
2171 dovranno fisicamente scrivere sui file system. Se un
2172 utente non puo' scrivere in una certa posizione del file
2173 system (ad esempio nella cartella <tt class=
2174 "docutils literal"><span class=
2175 "pre">/mnt/condivisione</span></tt> che sara' stata
2176 necessariamente creata inizialmente dall'utente
2177 <tt class="docutils literal"><span class=
2178 "pre">root</span></tt>) per mancanza dei privilegi di
2179 scrittura allora neanche Samba potra' farlo nel momento
2180 in mette a disposizione la risorsa all'utente. Se si
2181 montano file-system dedicati per le condivisioni
2182 controllare i permessi e propieta' dei <em>punti di
2183 mount*</em>. Queste passwords sono salvate nel solito
2184 file /etc/shadow (richiamato da /etc/passwd).</dd>
2186 <dt>2 Password per l'applicativo Samba</dt>
2188 <dd>Samba deve essere compatibile con Windows e quindi
2189 utilizzare un sistema di criptazione delle password
2190 diverso da /etc/shadow . Le password per Samba possono
2191 essere gestite ad esempio col comando <tt class=
2192 "docutils literal"><span class=
2193 "pre">smbpasswd</span></tt> e vengono generalmente
2194 salvate all'interno di <tt class=
2195 "docutils literal"><span class=
2196 "pre">/var/lib/samba/passdb.tdb</span></tt> .</dd>
2198 <dt>3 Password per Windows.</dt>
2200 <dd>Gli utenti Windows effettuano il log-in alla partenza
2201 della sessione di Windows. Se si avra' l'accortezza di
2202 usare sempre la <em>stessa password</em> data
2203 precedentemente anche a Windows (o viceversa impostare la
2204 password per GNU/Linux / Samba uguale a quella di
2205 Windows) l'utente potra' accedere automaticamente alle
2206 condivisioni a lui disponibili.</dd>
2210 <div class="section" id="creazione-utenti">
2211 <h2><a class="toc-backref" href=
2212 "#id47">6.3 Creazione Utenti</a></h2>
2214 <p>Creiamo per primo l'utente sotto GNU/Linux, facendo
2215 attenzione a <em>non dargli una shell di sistema</em>. Gli
2216 utenti Windows che accedono al server solo per le
2217 condivisioni non hanno bisogno di poter eseguire comandi
2220 <p>Creazione di un utente denominato sambo:</p>
2221 <pre class="literal-block">
2222 adduser --shell /bin/false sambo
2225 <p>Nel file <tt class="docutils literal"><span class=
2226 "pre">/etc/passwd</span></tt> avremo qualcosa come:</p>
2227 <pre class="literal-block">
2228 sambo:x:1001:1001:Sambo utente Samba,,,:/home/sambo:/bin/false
2231 <p>Aggiunta dell'utente al database delle password per
2232 Samba e generazione della sua password:</p>
2233 <pre class="literal-block">
2237 <p>Se successivamente si vorra' modificare la password di
2238 un utente gia' esistente si usi:</p>
2239 <pre class="literal-block">
2243 <p>La password sotto Windows verra' modificata sul sistema
2247 <div class="section" id="creare-la-condivisione">
2248 <h2><a class="toc-backref" href=
2249 "#id48">6.4 Creare la
2250 condivisione</a></h2>
2252 <p>La condivisione altro non e' che una cartella sul server
2253 che viene resa disponibile ai client negoziando l'accesso
2254 in base a una autenticazione basata su <em>user-name /
2255 password</em>. E' per altro possibile permettere l'accesso
2256 a una risorsa a chiunque indiscriminatamente (a tutti i
2257 <tt class="docutils literal"><span class=
2258 "pre">guest</span></tt>) ma la cosa e' sconsigliabile dal
2259 punto di vista della sicurezza. Si decida se la cartella
2260 condivisa debba risiedere nella <em>home</em> di un utente
2261 (nel caso quest'ultimo ne sia l'unico fruitore) o in una
2262 cartella in /mnt/ (nel caso piu' utenti accedano a questa).
2263 Nel secondo caso si potranno gestire gli accessi sotto
2264 GNU/Linux tramite i gruppi.</p>
2266 <p>Creazione della risorsa sambo_share nella home
2267 dell'utente sambo:</p>
2268 <pre class="literal-block">
2269 # mkdir /home/sambo/sambo_share
2270 # chown sambo:sambo /home/sambo/sambo_share/
2273 <div class="section" id=
2274 "sicurezza-permessi-di-esecuzione-sul-server">
2275 <h3><a class="toc-backref" href=
2276 "#id49">6.4.1 Sicurezza: permessi di
2277 esecuzione sul server</a></h3>
2279 <p>Bisognerebbe notare sul server i permessi di
2280 esecuzione del file-system che ospita la cartella da
2281 condividere. Se i file che saranno contenuti nella
2282 condivisione saranno da usarsi sotto Windows non c'e'
2283 motivo che questi siano eseguibili sotto GNU/Linux. Si
2284 potrebbe avere quindi, ipotizzando una condivisione in
2285 <tt class="docutils literal"><span class=
2286 "pre">/mnt/share</span></tt> che risieda su di un file
2287 system dedicato:</p>
2289 <p><tt class="docutils literal"><span class=
2290 "pre">/etc/fstab</span></tt></p>
2293 /dev/hda10 /mnt/share ext3 rw,
2294 <strong>nosuid,noexec</strong> 0 3
2297 <p>Si noti anche l'uso di <em>nosuid</em> per evitare la
2298 possibilita' di eseguire programmi con credenziali
2303 <div class="section" id=
2304 "configurazione-dell-applicativo-samba-vero-e-proprio">
2305 <h2><a class="toc-backref" href=
2306 "#id50">6.5 Configurazione
2307 dell'applicativo Samba vero e proprio.</a></h2>
2309 <p>Avendo preparato gli utenti (ancora una volta: non si
2310 dia una shell completa a un utente che serve solo per Samba
2311 o la posta elettronica) e la cartella sul file system si
2312 puo' procedere a configurare la condivisione su Samba.</p>
2314 <p>/etc/samba/smb.conf riga ~235 , Share Definitions (in
2315 vim si usi 235gg ):</p>
2316 <pre class="literal-block">
2318 # Percorso della cartella condivisa
2319 path = /home/sambo/sambo_share
2320 # Se gli utenti possono scrivere / modificare file
2322 # Negoziazione degli accessi su base utenti / passwords
2325 # #######################################
2326 # Altri parametri opzionali di interesse
2327 # Se posso vedere la condivisione da esplora risorse
2328 # anche se non ho i privilegi per accedervi.
2330 # Commento indicativo della risorsa
2331 comment = Condivisione per Sambo
2334 <p>Dopo aver salvato il file si puo' fare un primo
2335 controllo tramite l'utility <tt class=
2336 "docutils literal"><span class="pre">testparm</span></tt> ,
2337 che controlla la sintassi del file di configurazione di
2338 Samba. Se questo non rileva problemi si puo' procedere a un
2339 <tt class="docutils literal"><span class="pre">#</span>
2340 <span class="pre">/etc/init.d/samba</span> <span class=
2341 "pre">restart</span></tt> .</p>
2344 <div class="section" id="testare-il-servizio">
2345 <h2><a class="toc-backref" href=
2346 "#id51">6.6 Testare il Servizio</a></h2>
2348 <p>Come testare il servizio</p>
2351 <pre class="literal-block">
2352 smbclient -U sambo -L localhost
2355 <p>Questo comando permette di esplorare la risorsa
2356 qualificandosi come utente, in questo modo potete testare
2357 il corretto funzionamento dell'autenticazione. Si provi
2358 inizialmente a sbagliare la password deliberatamente, poi a
2359 inserirla correttamente: dovrebbero essere visibili le
2360 risorse disponibili al solo utente sambo: la suo /home e la
2361 cartella samba_share:</p>
2362 <pre class="literal-block">
2363 Sharename Type Comment
2364 --------- ---- -------
2365 sambo_share Disk Condivisione per Sambo
2366 print$ Disk Printer Drivers
2367 IPC$ IPC IPC Service (base server)
2368 sambo Disk Home Directories
2371 <p>In particolare l'ultima voce relativa alla home
2372 directory dell'utente dovrebbe essere visibile solo agli
2373 utenti autenticati.</p>
2375 <p>In alternativa e' possibile montare realmente la
2376 condivisone anche su GNU/Linux tramite un client per samba
2377 e testarne il corretto funzionamento:</p>
2378 <pre class="literal-block">
2379 mount -t smbfs //localhost/sambo_share /mnt/sambo_mount/ --verbose -o user=sambo
2384 <div class="section" id="note">
2385 <h1><a class="toc-backref" href=
2386 "#id52">7 NOTE</a></h1>
2389 <li>controllare apache</li>
2392 <p>sintassi: in <tt class="docutils literal"><span class=
2393 "pre">monospace</span></tt> :</p>
2396 <li>nomi di files</li>