>
Benvenuto/a su www.classicistranieri.com, la Biblioteca Multimediale Libera
SCEGLI LA SEZIONE CHE PREFERISCI:
[Il blog della biblioteca] [Le nostre pubblicazioni] [Magnatune MP3 Project] [Lirica MP3] [il DVD ROM della biblioteca]
[Letture Creative] [Musica Creativa] [GNUtemberg] [Appunti di informatica libera] [Portalinux]
[The "Punch Illustrated" Mirror] [PG-Historical Fiction Collection] [PG-Audiobook Collection] [Lethal]
[PG-Classicals of English Literature] [PG-Biblioteca Italiana] [PG-Bibliothèque Française]
[PG-Deutsche Bibliothek] [PG-Biblioteca Portuguesa] [PG-Biblioteca Española]
[PG-Illustrated Children Book Collection] [PG-CD ROM]
Se questi contenuti ti sono stati utili, prendi in considerazione la possibilità di effettuare una libera donazione alla biblioteca, in modo che possano continuare a essere gratuiti per tutti.
[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume]
385.1.1) Come si imposta un dominio virtuale?
Per impostare un dominio virtuale, si deve modificare il file httpd.conf che generalmente è presente nella directory /etc/apache/ o in /etc/. Oltre a questa modifica si deve predisporre un servizio di risoluzione dei nomi. Quest'ultimo può essere fatto mediante pacchetti appositi che gestiscono il DNS (BIND) oppure modificando il file /etc/hosts.(1)
Le modifiche da apportare al file httpd.conf sono le seguenti:
|
IP_macchina è l'indirizzo IP della macchina che ospita il server HTTP;
dominiovirtuale è il nome che si intende conferire al dominio virtuale;
amministratore è l'amministratore della macchina macchina;
/usr/local/httpd/dominiovirtuale/htdocs è la directory principale del dominio virtuale.
Se l'indirizzo della macchina è 127.0.0.1 ed il suo nome è localhost, il file /etc/hosts si presenterà circa così:
|
Si dovrà semplicemente aggiungere un'altra riga relativa al dominio virtuale:
|
Potrebbe essere necessario permettere l'accesso alla directory contenente i file del dominio virtuale. In tal caso si dovrà modificare il file access.conf che generalmente è presente nella directory /etc/apache/ o in /etc/. La modifica consisterà nell'aggiunta delle seguenti righe al file:
|
Per rendere effettive tutte le modifiche apportate, sarà necessario rilanciare il demone apache con:
# apache restart[Invio](2)
385.1.2) Come si può controllare il traffico giornaliero del sistema?
Per poter visualizzare il traffico giornaliero dei servizi HTTP, SMTP, POP3, si potrà utilizzare il seguente script: (3) 2.2.x, con le opzioni CONFIG_FIREWALL e CONFIG_IP_FIREWALL abilitate.
|
Dopo averlo lanciato, con i privilegi dell'utente root, per visualizzare il traffico giornaliero si dovrà impartire il comando:
# ipchains -L -n -v[Invio]
Ecco l'output di una condizione neutra:
.
Chain input (policy ACCEPT: 23 packets, 6746 bytes):
pkts bytes target prot opt tosa tosx ifname mark
0 0 SMTP-IN tcp ------ 0xFF 0x00 *
Chain forward (policy ACCEPT: 0 packets, 0 bytes):
Chain output (policy ACCEPT: 23 packets, 6746 bytes):
pkts bytes target prot opt tosa tosx ifname mark
0 0 SMTP-OUT tcp ------ 0xFF 0x00 *
0 0 POP3 tcp ------ 0xFF 0x00 *
0 0 IMAP tcp ------ 0xFF 0x00 *
0 0 HTTP tcp ------ 0xFF 0x00 *
Chain HTTP (1 references):
Chain IMAP (1 references):
Chain POP3 (1 references):
Chain SMTP-OUT (1 references):
Chain SMTP-IN (1 references):
|
385.1.3) Come si abilita il masquerading in una rete locale?
Qualora si voglia mascherare dietro un firewall le macchine di una rete 192.168.1.0, si dovrà innanzitutto ricompilare il kernel con le seguenti opzioni abilitate:(4)
|
Dopo aver caricato la nuova immagine del kernel, si dovrà lanciare questo script (e eventualmente provvedere ad automatizzarne l'esecuzione):
|
La prima riga dello script abilita la possibilità di instradamento dei pacchetti attraverso la macchina router;
la terza indica la politica predefinita che in questo caso è quella di impedire il transito di qualsiasi pacchetto;
l'ultima riga consente la possibilità di transito esclusivamente alle macchine della rete 192.168.1.0/24.
385.1.4) Come si predispone un firewall?
Per impostare un firewall, occorre che la macchina sia dotata di due schede di rete (una che sia collegata con la rete interna e una con la rete esterna. Quest'ultima scheda di rete può anche consistere in un modem). Si deve innanzitutto attivare l'instradamento della rete interna:
# route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0[Invio]
Deve essere ora definito l'instradamento predefinito attraverso il router 192.168.1.254:
# route add default gw 192.168.1.254 dev eth0[Invio](5)
Utilizzando un kernel di versione 2.2.x o superiori dovrà essere abilitato l'instradamento dei pacchetti attraverso il router:
# echo 1 > /proc/sys/net/ipv4/ip_forward[Invio]
Utilizzando il kernel 2.2.x o superiore, l'opzione Always Defrag (un tempo #define attivabile e disattivabile in fase di compilazione), è divenuta una chiamata di sistema. Dato che questa opzione è molto importante, ed è disabilitata in maniera predefinita, è consigliabile eseguire tale comando:
# echo 1 > /proc/sys/net/ipv4/ip_always_defrag[Invio]
Questa opzione si preoccupa di riassemblare i pacchetti IP entranti prima che questi possano essere elaborati dal firewall o reindirizzati altrove.
Per impostare le regole che consentono o impediscono il transito dei pacchetti si dovrà utilizzare il comando ipchains con le opzioni relative. Ammettiamo ora che si debbano costituire le seguenti regole:
bloccare tutti i pacchetti con indirizzo 127.x.x.x che non provengono dalla interfaccia di loopback;(6)
bloccare tutti i pacchetti di controllo (ICMP) entranti(7);
accettare i pacchetti della rete locale 192.168.1.0 diretti verso le porte FTP del server il cui indirizzo IP è 345.125.6.121;
accettare tutti i pacchetti diretti verso la porta WWW del server;
impedire l'accesso a tutti i pacchetti diretti verso altre porte.
Le regole sopra esposte si traducono nei seguenti comandi:
# ipchains -A input --interface ! lo -s 127.0.0.0/8 -j DENY[Invio]
# ipchains -A input -p icmp --icmp-type echo-request -j DENY[Invio]
# ipchains -A input -s 192.168.1.0/24 -d 345.125.6.121 21 -p TCP -j ACCEPT[Invio]
# ipchains -A input -s 192.168.1.0/24 -d 345.125.6.121 20 -p TCP -j ACCEPT[Invio]
# ipchains -A input -d 345.125.6.121 80 -p TCP -j ACCEPT[Invio]
# ipchains -A input -d 345.125.6.121 0:1023 -p TCP -j DENY[Invio]
385.1.5) Perché non riesco ad uscire dalla rete locale attraverso il gateway? Ho configurato tutto con attenzione ma non ci riesco. Perché?
Se si sono seguite attentamente le regole per impostare correttamente il firewall, occorrerà modificare un parametro del file system /proc. Il file in questione è /proc/sys/net/ipv4/ip_forward. Impartendo il comando cat su questo file presumibilmente si otterrà uno zero:
# cat /proc/sys/net/ipv4/ip_forward[Invio]
Per permettere il transito dei pacchetti attraverso il firewall, occorrerà impostare tale valore ad 1:
# echo 1 > /proc/sys/net/ipv4/ip_forward[Invio]
Ovviamente questa operazione va ripetuta ad ogni avvio del sistema. Qualora si utilizzi una distribuzione GNU/Linux Red Hat sarà sufficiente rendere vera l'opzione «FORWARD_IPV4» presente nel file /etc/sysconfig/network.
385.2.1) Come si può fornire agli utenti solamente l'accesso FTP al sistema ma non un accesso Telnet?
Per impedire l'accesso Telnet agli utenti si dovrà impartire il seguente comando dopo avere assunto l'identità dell'utente root:
# usermod -s /bin/false/ nomeutente[Invio]
In questo modo l'utente non potrà più fare il login.
Allo stesso modo, si potrà impostare la shell dell'utente cui si vuole negare l'accesso Telnet mediante la modifica del file /etc/passwd sostituendo la shell con /bin/false.
385.2.2) Come si può impedire l'accesso tramite FTP ad alcuni utenti?
Nel file /etc/ftpusers sono elencati gli utenti che non possono accedere al servizio FTP.
385.2.3) Dopo essersi connessi ad un sistema remoto, come si fa a mantenere attivo un comando FTP una volta disconnessi dal sistema stesso?
Dopo essersi collegati al server FTP, si potrà interrompere l'operazione che si sta effettuando mediante la combinazione di tasti [Ctrl+z]. Questa combinazione provoca l'interruzione del processo. Occorre quindi riattivarlo ma sarà neccessario inviarlo sullo sfondo (background). A questo punto sarà possibile scollegarsi dal server FTP mediante il comando exit.
385.2.4) Come si può realizzare un comando che invii ogni minuto un file via FTP?
Ecco uno script adatto a questo scopo:
|
Occorre definire le variabili nella parte superiore dello script con i valori desiderati. Non si deve dimenticare di fornire i permessi di esecuzione allo script e di inserirlo nelle pianificazioni di lavoro ( crontab) dell'utente desiderato. Ad esempio il comando:
$ crontab -e tizio[Invio]
aprirà per la modifica il file di configurazione della pianificazione dei lavori dell'utente tizio. Ammettendo che lo script di nome invia_file sia stato copiato nella directory /bin/, la riga da inserire sarà
|
385.2.5) Come si concede il permesso di caricare file durante una sessione FTP?
Per permettere ad un utente di poter caricare (upload) un file in una directory del server FTP, si deve creare una directory con il permesso di scrittura abilitato. Occorre inoltre ricordare che il proprietario di tale directory deve essere ftp.
385.2.6) Descrizione di uno script che permette di automatizzare diverse operazioni FTP.
Automatizzare comandi FTP risulta possibile mediante script. Se ad esempio si volessero automatizzare questi comandi:
scaricare nella directory da cui lo script viene lanciato tutti i file contenuti in una directory remota;
copiare questi file in una directory remota di un altro server FTP.
si dovrà utilizzare uno script simile al seguente:
|
L'opzione -n evita il procedimento di auto-login(8) mentre l'opzione -i disattiva la modalità interattiva consentendo la possibilità di trasferire più file(9).
385.3.1) Come si può visualizzare cosa digita un utente collegato in Telnet?
Per vedere cosa digita un utente in una shell Bash, bisogna innanzitutto individuare il PID della shell Bash; a questo punto è possibile impartire questo comando:
$ strace -p PID -etrace=read[Invio](10)
L'output può risultare inizialmente caotico. Se nella shell che si sta analizzando è stato digitato il comando ls, strace restituirà quanto segue:
|
385.3.2) Si può permettere l'accesso Telnet al proprio sistema anche mediante un'altra porta?
Per far sì che il demone telnetd resti in ascolto su un'altra porta mantenendo attiva anche quella predefinita, si devono operare alcune modifiche. Telnet viene predisposto attraverso la combinazione di 2 file: /etc/inetd.conf e /etc/services.
Per il Telnet sulla porta 23, che è la porta predefinita, si riscontreranno queste impostazioni nel file services:
|
e queste altre nel file inetd.conf:
|
Sarà quindi necessario modificare esclusivamente il file services aggiungendo:
|
se si desidera che telnetd accetti le richieste di Telnet sulla porta 8888.
A questo punto occorrerà riavviare il demone inetd per costringerlo a rileggere i file di configurazione.
# killall -HUP inetd[Invio]
Si potrà ora digitare sul client:
$ telnet indirizzo 8888[Invio]
385.3.3) Si può accedere ad una macchina solo da un terminale remoto?
Anche se sarebbe consigliato mantenere almeno una possibilità di accedere localmente al sistema in oggetto, per ottenere un accesso esclusivamente in remoto al sistema si dovrà modificare il file /etc/inittab commentando (apponendo un # all'inizio delle righe) le righe:
|
385.3.4) Ci si può collegare attraverso Telnet a una macchina remota accedendo come utente root?
Se si è ben coscienti di ciò che si sta facendo e dei rischi che si corrono, si deve rimuovere il file /etc/securetty. Se non si ha una reale necessità di questa operazione, conviene creare un utente ed accedere al sistema da quello acquisendo i privilegi dell'utente root con:
$ su -[Invio]
385.3.5) C'è un'alternativa più sicura a Telnet?
In una grande percentuale di casi, non si utilizza più Telnet ma SSH (Secure Shell). Se si deve fornire la possibilità di accesso, andrà installato il demone sshd sulla macchina server. Per accedere invece da remoto ad un server SSH, si dovrà installare il client SSH. Per collegarsi in SSH al server server_remoto si dovrà impartire il seguente comando:
$ ssh -l utente server_remoto[Invio]
Il pacchetto SSH di una distribuzione Debian GNU/Linux si trova nella sezione non-US (nei CD-ROM o presso gli appositi server come ad esempio <ftp://ftp.non-us.debian.org/debian/dists/stable/>).
Si ricorda che esiste anche un client per MS-Windows, chiamato putty reperibile presso <http://www.chiark.greenend.org.uk/~sgtatham/putty/>.
385.3.6) Perché alcuni servizi di rete (Telnet, FTP, ecc.) sono molto lenti?
Qualora all'interno di una rete casalinga, i servizi di rete (Telnet, FTP, ecc.) risultino lenti, si può provare ad inserire nel file /etc/hosts della macchina da cui ci si collega, una riga indicante l'IP ed il nome della macchina cui ci si vuole collegare. Ad esempio:
|
In genere il rallentamento di questi servizi avvengono perché il server cui ci si collega tenta per un po' di autentificare la macchina richiedente.
385.3.7) Si possono automatizzare dei comandi da eseguire su un sistema remoto cui si abbia accesso attraverso Telnet?
Il seguente script apre una sessione Telnet, esegue dei comandi associati allo script stesso e infine e chiude la sessione:
|
Si noti la presenza dell'opzione -h di send: essa, a causa del buffer di lettura di login, fa in modo che l'invio dei caratteri avvenga a velocità umana, secondo quanto impostato nella variabile send_human. A volte si utilizza direttamente l'opzione -s (send slow).
Per maggiori informazioni sulle opzioni di send, si dovrà consultare la relativa pagina di manuale expect(1).
Un altro esempio di script, che in questo caso utilizza un ciclo while è il seguente:
|
385.3.8) Come funziona la registrazione degli accessi avvenuti tramite Telnet alle macchine?
Se si esegue una connessione Telnet ad una macchina, ed è attivo il demone syslog essa viene registrata nel file /var/log/daemon.log con una riga simile alla seguente:
|
La registrazione avviene perché nel file /etc/syslog.conf esiste una riga che determina la registrazione di tutti gli eventi dei demoni del sistema nel file /var/log/daemon.log:
|
385.3.9) Come si impedisce l'accesso al sistema tramite Telnet?
Per evitare gli accessi al sistema occorre modificare i file /etc/hosts.allow e /etc/hosts.deny. Di questi due file viene letto prima il primo e poi il secondo. La politica predefinita consiste nel negare qualsiasi accesso:
|
in /etc/host.deny. I nodi autorizzati sono indicati invece nel file /etc/host.allow:
|
La prima regola concede l'accesso ai nodi del dominio locale e ai membri della rete some_netgroup. La seconda regola permette l'accesso da parte di tutti i nodi del dominio foobar_edu tranne che per il dominio terminalserver_foobar_edu.
385.4.1) Come si copiano i file con SSH?
Per copiare tutti i file della directory corrente in una directory che si trova su una macchina remota accessibile via SSH si deve impartire il comando:
$ scp * utente@server:/ directory/destinazione/[Invio](11)
385.4.2) Come si copiano intere porzioni di file system (directory) con SSH?
Per copiare una directory e le eventuali directory in essa contenute si deve utilizzare il comando scp:
# scp -r directory utente@server:/ directory/destinazione/[Invio](12)
Per copiare ad esempio la directory /home/utente/prova all'interno della directory /tmp/ della macchina fulmine1 si da il comando:
# scp -r /home/utente/prova/ tizio@fulmine1:/tmp/ [Invio]
dove «tizio» è il nome dell'utente della macchina fulmine1.
385.5.1) Perché non riesco a montare i file system delle macchine di una rete locale?
Qualora venga visualizzato un messaggio di errore simile a mount: RPC: Program not registerd e risulti impossibile condividere le directory all'interno della propria rete, occorre assicurarsi che /sbin/rpc.portmap, /usr/sbin/rpc.mountd e /usr/sbin/rpc.nfsd vengano avviati all'avvio del sistema(13).
Qualora i suddetti script non siano stati avviati automaticamente si tenti di avviarli manualmente riprovando le operazioni di condivisione. Si deve ricordare infine che le directory da condividere vanno definite in /etc/exports. exports(5)
385.5.2) Come si fa ad utilizzare un'applicazione grafica (che giri sotto il server X) presente su una macchina della rete cui è collegata la propria macchina?
Se macchinaA è la macchina su cui si sta lavorando e macchinaB è la macchina cui ci si collega e che contiene l'applicazione che vogliamo visualizzare sulla macchinaA si deve precedere nel seguente modo:
innanzitutto su macchinaA si deve concedere l'autorizzazione alle richieste del client di macchinaB:
macchinaA:~$ xhost +macchinaB[Invio]
Fatto ciò, dalla macchinaA occorre collegarsi in telnet alla macchinaB:
macchinaA:~$ telnet macchinaB[Invio]
Dopo avere effettuato il login, occorrerà dare il comando:
macchinaB:~$ export DISPLAY=macchinaA:0[Invio](14)
o:
# setenv DISPLAY macchinaA:0[Invio](15)
che serve ad esportare la variabile DISPLAY verso la macchinaA.
A questo punto lanciando l'applicazione grafica dalla macchinaB, la si vedrà sul monitor della macchinaA.
385.5.3) Come si può utilizzare il display di un utente su quello di un altro?
Se lavorando all'interno di un ambiente grafico (X), si volesse mediante un terminale grafico assumere l'identità di un altro utente e lanciare dal terminale stesso un'applicazione grafica, verrà restituito un errore del tipo:
|
Per potere quindi essere in grado di lanciare applicazioni grafiche in qualità di altro utente, si dovrà dare il comando:
$ xhost +localhost[Invio](16)
In seguito, dopo avere assunto l'identità dell'utente desiderato, si dovrà impartire il comando:
$ export DISPLAY=localhost:0.0[Invio](17)
o:
# setenv DISPLAY localhost:0.0[Invio](18)
allo scopo di reindirizzare il display del'utente di cui si è assunta l'identità verso il server grafico dell'utente originario. Questo procedimento è identico a quello descritto nella LDR 385.5.2 solo che in quel caso si trattava di due macchine collegate e non di due utenti sulla stessa macchina.
385.5.4) Come si copiano i file tra le macchine di una rete locale?
Per copiare i file da una macchina all'altra in rete si possono utilizzare i comandi r. Questi comandi permettono di utilizzare shell e comandi in remoto.
Occorre creare nella directory principale (/) delle due macchine (o nella directory $HOME dell'utente) il file .rhosts, nel quale dovranno essere elencati i sistemi al quale si permette l'accesso e gli utenti abilitati a farlo. Se si volesse consentire l'accesso a tutti basterà impartire il seguente comando:
# echo "+ +" > .rhosts[Invio]
su entrambe le macchine.
A questo sarà possibile impartire il seguente comando:
# rlogin macchina_remota[Invio]
per poter accedere all'altra macchina senza richiesta di login e password. Sarà inoltre possibile copiare file da una macchina all'altra senza FTP mediante il comando rcp:
# rcp macchina_remota:/percorso /* .[Invio]
Questo comando copierà tutti i file presenti nella directory remota indicata in percorso nella directory corrente.
# rcp * macchina_remota:/percorso [Invio]
Questo comando copierà invece tutti i file presenti nella directory corrente nella directory remota indicata in percorso.
385.6.1) Come si possono simulare dei terminali sulla propria macchina?
Si possono simulare fino a 6 console virtuali attraverso la combinazione [Alt+Fn] dove n è un numero che va da 1 a 6. Questi terminali virtuali sono impostati nel file /etc/inittab:
|
Essi possono essere sia rimossi che aggiunti, eliminando o aggiungendo le righe atte a definirli.
385.6.2)
terminal type not supported
Se durante un collegamento Telnet alcuni programmi mostrano un messaggio del tipo: terminal type not supported, occorre modificare il contenuto della variabile TERM:
Sulla console remota si darà quindi il comando:
# export TERM=vt100[Invio](19)
o:
# setenv TERM vt100[Invio ](20)
Oppure:
# export TERM=ansi[Invio](21)
o:
# $ setenv TERM ansi[Invio ](22)
385.7.1) Perché il mio navigatore non interpreta affatto i tag (marcatori) HTML dei file presenti nel mio server?
Qualora i file .html inseriti nell'albero delle directory del proprio server web, non vengano interpretati correttamente e vengano visualizzati come file testuali, si dovrà modificare il file /etc/mime.types. Probabilmente sarà presente una riga in cui è specificato il formato .htm. Basterà aggiungere un'altra riga identica sostituendo .htm con .html.
385.7.2) Come vengono gestite le variabili tra due pagine PHP?
Se in un form viene definita una variabile, ad esempio prova nella pagina PHP che il form richiama, tale variabile sarà identificata apponendo $ davanti la variabile. ($prova)
385.7.3) Come si configura il server Apache per gestire le pagine scritte in PHP?
Per configurare Apache per fare in modo che gestisca pagine PHP, è necessario far caricare ad Apache i moduli relativi a PHP. I file /etc/httpd/conf/httpd.conf(23) e /etc/httpd/conf/srm.conf(24) sono i file di configurazione che vanno modificati. A volte essi contengono le linee necessarie (di solito sono commentate: basta eliminare il carattere # presente all'inizio delle righe che devono essere «attivate».):
In httpd.conf sono due i punti da modificare, entrambi nella sezione Dynamic Shared Object(DSO) Support:
Nella parte relativa al caricamento dei moduli, in «extra modules», vanno aggiunte (o vanno tolti i commenti se già esistono) le righe seguenti:
|
Nella parte di aggiunta dei moduli (dopo la riga «ClearModuleList»), sempre in «extra modules», vanno aggiunte (o vanno tolti i commenti se già esistono) le righe seguenti:
|
All'interno del file srm.conf, vanno aggiunte (o vanno tolti i commenti se già esistono) le righe seguenti, che permettono di associare PHP ai file con estensione .php3:
|
Per rendere effettive le modifiche, si deve riavviare Apache:
# apache restart[Invio]
385.7.4) Come si configura il server Apache per gestire le pagine scritte in ASP?
Per fare in modo che Apache utilizzi l'ASP, si devono installare e configurare le opportune librerie:
libapache-asp-perl(25)
385.7.5) Esiste un modo per convertire le pagine scritte in ASP in PHP?
Per convertire gli script ASP in PHP, si può utilizzare asp2php (<http://home.i1.net/~naken/asp2php/>).
385.7.6) Come si fa a proteggere alcune pagine HTML da una password?
Per permettere l'accesso ad alcune pagine HTML solo a chi ha la password occorre inserire le seguenti direttive nel file /etc/apache/access.conf:(26)
|
385.8.1) Quale password deve essere inserita se si accede attraverso Samba da una macchina MS-Windows a una GNU/Linux?
Qualora, interrogando la rete da Risorse di Rete di MS-Windows, si tenti di accedere ad una macchina GNU/Linux ricevendo la richiesta della password, si dovranno apportare alcune modifiche. Innanzitutto, nella sezione global di smb.conf, dovrà essere inserita la seguente riga:
|
Bisogna comunque tenere presenti alcuni punti importanti. Innanzitutto dalle ultime versioni di MS-Windows 95 in poi le password risultano essere criptate. A questo punto ci sono due soluzioni:
Abilitare la criptazione delle password in Samba. Questo si può fare modificando il file /etc/smb.conf e utilizzando smbpasswd per creare le password per ogni utente che andranno inserite in un file che deve a sua volta essere indicato all'interno di /etc/smb.conf;
modificare i registri di MS-Windows con regedit, in questo modo:
Trovare la chiave /HKEY_LOCAL_MACHINE/System/ CurrentControlSet/Services/VxD/VNETSUP;
selezionare Modifica/Nuovo/Valore DWORD;
rinominare l'etichetta da Nuovo Valore #1 a EnablePlainTextPassword;
premere [Invio] sopra la voce e inserire il numero 1 nella finestra che si apre.
Si può in ogni caso utilizzare anche il file Win98_PlainPassword.reg presente nel pacchetto Samba.
385.8.2)
Qual è un esempio di smb.conf ben configurato?
Il seguente file smb.conf imposta la condivisione delle directory /home/utente/, /tmp/ e /publicfiles/ e della stampante lp.
|
385.8.3) Come si ricevono i messaggi di WinPopUp con LinPopUp?
Per ricevere i messaggi di WinPopUp con LinPopUp, è necessario, dopo aver installato Samba e LinPopUp inserire in /etc/smb.conf nella sezione [global] le seguenti righe:
|
Occorre ricordarsi ovviamente di modificare opportunamente il percorso di LinPopUp.
385.8.4) Perché non si vedono le icone delle macchine GNU/Linux in Risorse di Rete di MS-Windows?
Qualora non si vedano le icone delle macchine GNU/Linux connesse alla macchina MS-Windows in Risorse di Rete, occorre mettere la seguente riga nella sezione [global] del file /etc/smb.conf:
|
Ad es.:
|
385.8.5) Come si copiano i file tra una macchina GNU/Linux e una MS-Windows collegate attraverso Samba?
Per poter copiare file da una macchina MS-Windows ad una GNU/Linux, è possibile accedere a quest'ultima mediante Risorse di Rete o attraverso il protocollo FTP. Per poter invece copiare file da una macchina GNU/Linux a una MS-Windows, si dovrà procedere a montare le directory condivise mediante smbmount:
# smbmount //macchina_MS-Windows/directory /punto_di_montaggio [Invio]
385.8.6) Come si fa a stampare da una macchina GNU/Linux collegata ad una rete MS-Windows tramite Samba?
Per stampare un file da una macchina GNU/Linux collegata ad una macchina MS-Windows mediante Samba, occorrerà dare un comando simile al seguente:
$ cat file | nome_filtro | smbclient "\\\\ SERVER\\STAMPANTE" PASSWORD -U UTENTE -P -c 'print -' [Invio]
385.8.7) Se ci si collega da una macchina MS-Windows ad una GNU/Linux, vorrei che venisse chiesta la password solo per le directory degli utenti e non per la directory indicata in [public]. Come si fa?
Ecco un esempio di smb.conf adatto a questo scopo:
|
385.8.8)
Come si deve configurare il file smb.conf per dare un nome mediante il name server NetBIOS alla macchina Linux collegata ad una rete servita da un server DHCP?
Per ottenere questo risultato, occorre aggiungere alla sezione global di /etc/smb.conf la seguente riga:
|
dove nome è il nome della macchina NetBIOS.
385.9.1) Come si imposta il MTU (Max Transfer Unit ) di una connessione tramite protocollo PLIP?
Occorre definirlo al momento della dichiarazione dell'interfaccia mediante ifconfig:
# ifconfig plip0 mtu 512 10.0.0.1 pointopoint 20.0.0.2 up[Invio]
385.10.1) Esiste un programma che faciliti la connessione al provider in una distribuzione GNU/Linux Debian?
Debian GNU/Linux è una distribuzione generalmente accompagnata da pppconfig(27) che è un programma di utilità interattivo creato appunto con lo scopo di stabilire una connessione al proprio provider.
385.10.2) Come si può verificare se nel sistema è stato installato il protocollo PPP?
Per verificare se il protocollo PPP è stato caricato nel sistema, si procede con i seguenti comandi:
# cat /usr/include/linux/autoconf.h | grep PPP[Invio]
o con:
# lsmod | grep ppp[Invio]
per verificare se è compilato come modulo o se è stato incluso all'interno dell'immagine del kernel.
Qualora i sopra indicati comandi non restituiscano nulla relativo al protocollo PPP, allora si dovrà procedere alla ricompilazione del kernel includendone il supporto o in modalità monolitica o in modalità modulare.
385.10.3) Come si possono visualizzare in tempo reale i processi di connessione al provider?
Impartendo il comando ifconfig dopo avere avviato la connessione ad Internet permetterà di sapere se è stata attivata l'interfaccia di rete ppp.
Qualora infatti la connessione avesse avuto successo, con il comando ifconfig si vedrà visualizzata, oltre alla interfaccia di loopback lo (e eventualmente quella o quelle di rete, eth0 ad esempio) l'interfaccia ppp:
|
Un metodo più comodo è sicuramente quello di vedere in tempo reale gli aggiornamenti del file /var/log/messages. Questo può essere fatto con:
# tail -d /var/log/messages[Invio]
Potrebbe risultare utile inserire tale comando in uno script. Ad es.:
|
385.10.4)
pppd: The remote system is required to authenticate itself but...
Qualora, nel corso di un tentativo di connessione, si riscontri questo tipo di errore: «pppd: The remote system is required to authenticate itself but I couldn't find any secret (password) which would let it use an IP address.» occorrerà mettere la riga noauth nel file /etc/ppp/options, per risolvere il problema.
385.10.5) Si possono ottenere dei dati sulla connessione ad Internet?
Per poter visualizzare alcuni dati concernenti una connessione PPP si utilizza il comando pppstat.
385.10.6) Perché durante l'avvio di kppp ( KDE 2.x) viene visualizzato un errore relativo al timeout?
Occorre verificare i seguenti punti per risolvere il problema:
controllare se è presente il collegamento simbolico del modem a /dev/modem ;
eliminare o commentare la riga lock presente nel file /etc/ppp/options;
impostare il timeout a 50-60 secondi nella scheda Modem del kppp;
tentare di diminuire la velocità di connessione.
385.10.7) Perché kppp (KDE 2.x ) non riesce a creare il file di lock?
Il file di blocco (lock) ha lo scopo di permettere un utilizzo esclusivo di una determinata risorsa. In pratica, in questo caso, serve per impedire agli altri utenti di utilizzare il modem visto che adesso è impegnato da un altro utente.
Se si vuole disabilitare questa opzione, la si deve deselezionare in kppp oppure si deve commentare(28) l'apposita riga (lock) presente nel file /etc/ppp/option .
385.10.8) Perché lanciando da utente kppp (KDE 2.x), viene chiesta la password di root?
In genere questo accade perché il file kppp presente in /usr/bin è un collegamento simbolico al programma consolehelper che impedisce l'esecuzione diretta del programma in questione (kppp in questo caso) se non avviene l'autenticazione (mediante la password) di un determinato utente (quasi sempre root).
Per ovviare a questo problema occorre aprire il programma di modifica del menù e cambiare il nome dell'eseguibile in kppp.kdelnk da «kppp» a «/usr/sbin/kppp». Analogamente si può eliminare kppp in /usr/bin e ricrearlo facendolo puntare a /usr/sbin/kppp. Fatto questo basta impostare il bit del set user ID (in qualità di utente root) a /usr/sbin/kppp e i corretti permessi di esecuzione dello stesso file.
385.10.9) Come può un utente qualsiasi utilizzare kppp (KDE 2.x)?
Dopo aver letto la LDR 385.10.8, e aver provato con le indicazioni in essa presenti, si dovrà modificare il file kppp presente in /etc/security/console.apps/. La riga:
|
andrà modificata in:
|
In seguito occorre impostare il bit del set user ID (in qualità di utente root) del file kppp presente in /usr/bin/:
# chmod u+s kppp[Invio]
385.10.10) Come si visualizza il proprio indirizzo IP?
Per visualizzare l'indirizzo IP della propria macchina si deve utilizzare il comando ifconfig:
# ifconfig[Invio]
L'indirizzo IP è il numero che segue inet addr nell'interfaccia ppp.
385.10.11) Si può estrapolare solamente l'indirizzo IP da ifconfig?
Il comando da utilizzare è il seguente:
# /sbin/ifconfig | head -9 | tail -1 | cut -d\ -f12 | cut -d\: -f2[Invio]
ma occorre accertarsi che, impartendo il comando ifconfig, l'interfaccia ppp sia la seconda in ordine di apparizione. In caso non fosse così si deve adattare questo comando alle proprie esigenze. Se infatti è presente una scheda di rete (che pone l'interfaccia ppp in «terza» posizione) al posto di «head -9» si deve mettere «head -17» e così via aggiungendo 8 per ogni dispositivo di rete che precede l'interfaccia ppp.
385.10.12) Come si ottengono gli indirizzi DNS dei provider?
Per risalire ai DNS dei provider, si deve utilizzare il comando nslookup:
# nslookup[Invio]
> server dns2.nic.it[Invio]
> set query=any[Invio]
> pluto.linux.it[Invio]
Con questi comandi si otterrà una risposta simile alla seguente:
|
Indicando invece geocities.com:
> geocities.com[Invio]
si otterrà:
|
Lo stesso discorso vale per tiscalinet.it:
> tiscalinet.it[Invio]
che restituirà:
|
In ogni caso lo stesso risultato si può ottenere con il comando host e il comando ping:
# host -t ns provider[Invio]
Ad esempio se si volessero sapere i DNS di flashnet.it, si darà il comando:
[bigpaul@linuxfaq.it]:[Fri May 5]:[22:25:41]:[~]: host -t ns flashnet.it[Invio]
Che restituirà il seguente risultato:
|
Ora, con il comando ping, si sarà in grado di ottenere gli indirizzi desiderati:
[bigpaul@linuxfaq.it]:[Fri May 5]:[22:25:41]:[~]: ping dns2.flashnet.it[Invio]
PING dns2.flashnet.it (194.247.160.8): 56 data bytes 64 bytes from 194.247.160.8: icmp_seq=0 ttl=252 time=178.5 ms --- dns2.flashnet.it ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max = 150.0/163.7/178.5 ms |
[bigpaul@linuxfaq.it]:[Fri May 5]:[22:25:41]:[~]: ping dns.flashnet.it[Invio]
PING dns.flashnet.it (194.247.160.1): 56 data bytes 64 bytes from 194.247.160.1: icmp_seq=0 ttl=252 time=165.5 ms --- dns.flashnet.it ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 150.0/157.7/165.5 ms |
385.10.13)
Se ci si connette ad Internet con più di un provider, occorre cambiare ogni volta gli indirizzi DNS nel file /etc/resolv.conf?
Se si volesse accedere ad Internet, con più provider, non sarà necessario cambiare ogni volta il contenuto del file /etc/resolv.conf ma basterà lasciare gli indirizzi DNS di un provider che sembrano più veloci e affidabili. Le richieste generalmente sono permesse a tutte le macchine, non ha importanza quindi il provider con cui si è collegati.
385.10.14) Cosa si deve fare se il provider assegna automaticamente gli indirizzi DNS?
Se le connessioni ad Internet avvengono mediante provider, che assegnano automaticamente i DNS agli utenti, occorrerà utilizzare l'opzione «usepeerdns» di pppd. Utilizzando questo metodo non sarà possibile dichiarare i DNS delle macchine che non hanno il modem e che sfruttano, attraverso una rete, il collegamento della macchina che lo ha. In ogni caso, bisogna ricordare però, che è sempre possibile leggere gli indirizzi DNS di questi provider dal file di log delle connessioni che in genere è /var/log/messages.
385.10.15) Perché pur essendo connessi a Internet il navigatore non riesce a connettersi ai siti?
Occorre ricordare che si devono indicare gli indirizzi DNS del provider cui ci si connette nel file /etc/resolv.conf. Questi indirizzi servono per tradurre gli indirizzi mnemonici in indirizzi IP numerici. Presumibilmente infatti se si inserissero nel navigatore gli indirizzi numerici, si avrebbe esito positivo. Il file /etc/resolv.conf è costituito da una o più righe del tipo:
|
dove indirizzo è l'indirizzo DNS del provider.
Questo messaggio di errore, viene visualizzato qualora si ometta la stringa di inizializzazione per linee italiane: X3. Se infatti si era tentato il collegamento con:
|
si dovrà eseguire invece:
|
385.10.17) Come si possono automatizzare alcune operazioni da effettuare durante la connessione ad Internet?
Si prenda come esempio uno script che possa effettuare rispettivamente:
Lo script sarà simile al seguente:
|
385.10.18) Come ci si connette ad Internet con gli script?
La connessione tramite script è il metodo più classico per connettersi ad un provider Internet. Molti programmi di utilità che facilitano la connessione non fanno altro che andare a scrivere degli script.
In GNU/Linux si utilizzano due programmi essenzialmente: chat che invia i comandi al modem e pppd il demone che instaura il dialogo secondo il protocollo PPP con il server del provider.
I file che vanno modificati sono sostanzialmente 5:
/etc/ppp/pap-secrets
/etc/resolv.conf
/etc/host.conf
/bin/ispup
/bin/ispdown
Innanzitutto si dovrà inserire il nome utente e la password, nel primo di questi file, in questo modo:
|
In seguito si dovrà modificare il secondo file, che indica al sistema gli indirizzi DNS da utilizzare durante la connessione:
|
dove ovviamente dovremo inserire i dati del provider.
Bisogna poi comunicare al sistema in che modo essa debba risolvere i nomi dei computer nella rete Per fare questo bisogna modificare /etc/host.conf.
|
Fatto ciò si dovranno realizzare i veri e propri script di connessione, cioè quelli da invocare per effettuare la connessione.
Lo script per la connessione sarà simile al seguente(29):
|
Il seguente script servirà invece per disconnettersi:
|
Per effettuare la connessione, a questo punto, occorrerà digitare al prompt:
$ ispup &[Invio](30)
Si dovrà digitare invece:
$ ispdown[Invio]
per terminare la connessione.
385.10.19) Esempio degli script per la connessione ad un provider
Ecco uno script da lanciare per effettuare la connessione ad Internet (31):
|
Il file /etc/ppp/resolv.conf conterrà i seguenti dati:
|
Il file /etc/ppp/options conterrà le seguenti righe:
|
Il file /etc/ppp/dialup conterrà invece:
|
Il file etc/ppp/pap-secrets conterrà il nome dell'utente e la password:
|
385.10.20) Perché in Red Hat viene composto due volte il numero telefonico del provider?
La causa di questo problema è un baco (bug). Presso il sito di Red Hat (<http://www.redhat.com>) è disponibile la versione corretta.
385.10.21) Perché utilizzando ppp per il collegamento ad Internet, compare una casella di dialogo che avverte che il demone pppd non è installato con il set user ID? Che vuol dire?
Normalmente l'uso del ppp è riservato all'utente root. Per permetterne l'uso anche agli altri utenti, si fa in modo che quando questo viene eseguito, il sistema pensi che sia root a farlo. Per fare ciò, esiste un bit speciale da attivare (il bit del set user ID). Questo bit si attiva mediante il comando:
# cd /usr/sbin[Invio]
# chmod u+s pppd[Invio]
385.10.22) Perché il collegamento ad Internet con diald fallisce per problemi di autentificazione?
Occorre comunicare al sistema l'utente che si connette. Innanzitutto occorre inserire nel file /etc/ppp/pap-secret il nome dell'utente e la password. Dopo aver fatto questo, si deve ricordare che:
nel file /etc/ppp/options andrà inserita la riga:
|
si potrà specificare il nome dell'utente direttamente all'interno dello script invece che nel file /etc/ppp/options, ma, alla luce del fatto che la connessione dovrà essere invocata da un utente comune, si consiglia di dichiarare tale utente nel file /etc/ppp/options;
in ogni caso il modo migliore consiste nell'inserire in /etc/diald.conf la riga:
|
385.10.23) Una volta essere riusciti ad aver stabilito un collegamento funzionante ad Internet, quali sono i file di configurazione e gli script che conviene conservare?
Si consiglia di copiare al sicuro i file e gli script che vengono utilizzati per la connessione ad Internet. In qualsiasi occasione, sarà sufficiente ricopiare gli script al loro posto e si potrà velocemente ristabilire la configurazione esatta.
Oltre ad i singoli file eseguibili attivanti la connessione (quelli creati dall'utente ad esempio), si dovranno salvare i seguenti file:
/etc/ppp/options
/etc/ppp/pap-secrets
/etc/ppp/chat-script
/etc/resolv.conf
385.10.24) Perché utilizzando il dialup configuration tool della Red Hat 6.1 il sistema si blocca?
Dopo aver lanciato netcfg mediante:
# netcfg[Invio]
si dovrà evidenziare interfaces e si rileverà che una delle due interfaccie è priva del nome e non attiva. Sarà sufficiente cancellarla per rimuovere il problema.
385.10.25) Se si utilizzano diversi provider per connettersi ad Internet, come si possono invertire rapidamente gli script di connessione in una distribuzione Red Hat?
Per ottenere questo risultato occorre uno script che sostituisca i file:
/etc/ppp/options
/etc/ppp/pap-secrets
/etc/ppp/chat-script
/etc/resolv.conf
quindi prima di tutto occorre copiare questi file al sicuro. Dal momento che la distribuzione è Red Hat, si potrà ricorrere all'utilizzo di pacchetti RPM. In relazione a questo, sarà necessario creare tanti pacchetti RPM quanti sono i provider cui si intende connettersi. Per fare questo, si dovranno creare i file .spec che servono appunto a creare i pacchetti RPM.
Segue un esempio di file .spec che chiameremo providerA.spec:
|
Si passerà quindi alla creazione del pacchetto RPM:
# rpm -bb providerA.spec[Invio]
A questo punto verrà creato un pacchetto RPM il cui nome dovrebbe somigliare a Connessione_providerA-1.0-1.rpm. Dopo aver creato il primo pacchetto, si dovranno sostituire manualmente gli script in questione per ottenere il collegamento al providerB. Una volta certi di essere riusciti a stabilire la connessione con providerB, si creerà il pacchetto RPM per questo fornitore di accesso ad Internet partendo dal file providerB.spec:
# rpm -bb providerB.spec[Invio]
L'operazione va ripetuta per tutti i fornitori di accesso ad Internet di cui disponiamo.
Fatti tutti i pacchetti RPM, si dovranno creare script che servono ad attivarli. Ad esempio, si potrà creare lo script attiva_providerA che conterrà la riga:
# rpm -Uvh Connessione_providerA-1.0-1.rpm[Invio]
e così per tutti gli altri fornitori di accesso ad Internet. Una volta creati tutti gli script, occorrerà conferire loro il permesso di esecuzione e copiarli in una directory di percorso (path).
Ora basterà digitare il nome dello script per cambiare tutti i file di configurazione e permettere quindi il collegamento al fornitore di accesso ad Internet desiderato.
385.10.26) Se si utilizzano diversi provider per connettersi ad Internet, come si possono gestire gli script di connessione?
Se si utilizza più di un provider per la connessione ad Internet, sarà necessario modificare o aggiungere alcuni file contenuti nella directory /etc/ppp.
Occorrerà innanzitutto cancellare il contenuto di chap-secrets. Dovranno poi essere creati i file:
dial-providerA
dial-providerB
[...]
ciascuno con un contenuto simile al seguente:
|
Si dovrà poi creare il file options contenente le opzioni generiche di tutti i provider) cui ci si intende connettere. Un esempio potrebbe essere il seguente:
|
In seguito si dovrà modificare il file pap-secrets nel seguente modo:
|
oppure si dovrà creare uno script che inverta i seguenti due pap-secrets (ammesso che i provider siano due):
|
|
Per caricare le opzioni corrette, occorrerà creare uno script per ciascun provider. Ecco un esempio di tali script (32):
|
In seguito occorrerà creare la directory /etc/ppp/peers/ e inserirvi i file (options-providerA, options-providerB, ecc.) contenenti le opzioni specifiche di ogni provider:
|
Volendo, si potranno aggiungere le altre opzioni come ad esempio la grandezza dei pacchetti in transito:
mtu 552 mru 552
e altro ancora.
A questo punto occorrerà modificare il file /etc/resolv.conf inserendo gli indirizzi DNS dei provider e modificare il file /etc/hosts in modo che contenga gli indirizzi IP dei server di posta. Questo serve per evitare che la connessione con uno dei provider impedisca il prelievo della posta presso i server degli altri.
385.11.1) Come si predispone un accesso da linea commutata a una macchina GNU/Linux?
Per accedere ad una macchina GNU/Linux con modem, occorre installare Mgetty+Sendfax, PAM, e avere il supporto per il PPP.
Nel file /etc/mgetty/login.config va abilitata l'opzione AutoPPP:
|
dove /dev/ttySn è la porta utilizzata dal modem. Nel file /etc/mgetty/mgetty.config non occorre inserire alcuna opzione particolare, se non la velocità della porta.
Nel file /etc/ppp/options vanno abilitate le opzioni valide per le connessioni entranti (in conflitto con eventuali connessioni uscenti):
|
Nel file /etc/ppp/options.ttySx (ttySx è sempre la porta del modem) vanno inseriti l'indirizzo della macchina che fa da server e l'indirizzo di quella client:
|
Nel file /etc/ppp/pap-secrets va inserita una riga per permettere l'accesso al PPP a tutti gli utenti:
|
al posto di pc.server si dovrà inserire il nome della macchina che fa da server. Nel file /etc/hosts, vanno inseriti i nomi e gli indirizzi utilizzati:
|
Nel file /etc/networks vanno inserite le informazioni relative alla rete che si crea durante la connessione oltre alla rete virtuale locale:
|
Nel file /etc/inittab va inserito naturalmente mgetty sulla porta usata dal modem (in modalità respa