Linux TIPS
I suggerimenti sono stati presi da riviste di informatica, da newsletters o da siti web
perciò ogni diritto rimane al legittimo proprietario.

http://www.openskills.info/view/search-engine.php?textsearch=&cerca=tutte&IDboxtype=all&LANGUAGE=ita&submit=Cerca+su+OpenSkills

adduser Aggiornamento degli RPM Aggiungere manualmente un utente su un sistema Unix
Apache configuration Tool (Red Hat) Apachemod_dav - Introduzione e installazione Autenticazione degli utenti (Apache
Basic Authentication (Apache) cd (comando cambio directory) Cercare file in un file system Unix
Chmod (modifica attributi) Compilazione dei moduli di Apache Configurare CUPS per stampare con il protocollo SMB/CIFS
Configurare la rete su Linux Configurare Samba: opzioni delle singole share Configurare Samba: Opzioni generali
Configurare un client di rete su Solaris Configurazione di un NFS Server (file server) Configurazione Linux ADSL (PPPoE)
Creazione di un file di configurazione Creazione di un disco di boot DOS Creazione di un disco boot per Linux (sotto Windows)
Creazione di un disco di ripristino per Red Hat Linux Creazione di un file password per l'autenticazione base di apache Decalogo della sicurezza
Definizioni e termini comuni nell'information security dhcpd (assegnazione degli indirizzi ip) Disabilitazione della lettura del file .htaccess
Disinstallazione webmin Documentazione locale su linux Domini virtuali con Apache
Editing visuale con VI Gestione degli utenti con Linux/Unix Gestione del Virtual Host su file separati di configurazione
Gestione utenti e password per l'autenticazione    

adduser
Crea un utente o modifica le proprietà di default per la creazione degli utenti. 
Creazione di un nuovo Utente
adduser [opzioni] login-name
Modifica delle impostazioni d di un nuovo Utente
adduser -D [opzioni] 
Opzioni per la creazione di un nuovo utente
-c [comment] Commento all'interno di /etc/passwd
-d [home_dir] Specifica la home dir del nuovo utente
-e expire-date Indica la data di scadenza dell'account, formato della data YYYY-MM-DD
-f inactive_days Indica il numero di giorni, che intercorrano fra la data di expire della password e la disabilitazione dell'account
-g group Indica il primo gruppo di appartenenza. Per poter utilizzare questa opzione il gruppo deve gia' esistere
-G group Indica gli altri gruppi di cui il nuovo utente fara' parte
-m La home dir dell'utente verra' creata se non esiste
-p Identifica la password cryptata
-s Specifica la shell dell'utente
-u Specifica l'UID dell'utente
Opzioni per la modifica delle opzioni di default
-b default_home Setta il prefix per la creazione delle home di default
-e default_expire_date Setta la data di expire dell' account
-f default_inactive Indica il numero di giorni, che intercorrono fra la data di expire della password e la disabilitazione dell'account.
-g default_group Identifica il gruppo iniziale di default
-s default_shell Identifica la shell di default 

Elenco dei comandi base in Linux

aliasCrea un alias, anche di un comando
aproposalias di “ man -k”
awk Cera e sostituisce un testo
breaktermina un loop
builtin esegue una shell
bzip2comprime o decomprime uno o più file
cal mostra un calendario
casestruttura di controllo condizionale
cat mostra il contenuto di un file
cdcambia directory
cfdiskcomando per gestire la tabella delle partizioni
chgrp cambia il gruppo utenti di appartenenza
chmodcambia i permessi di accesso
chown cambia il proprietario ed i permessi di un file
chrootesegue un comando con una directory di root diversa da quella impostata di default
cksumstampa il risultato di un controllo CRC
clearpulisce lo schermo della console
cmp compara due file
commcompara due file di testo ordinati riga per riga
command esegue un comando
continueriavvia un loop
cronesegue comandi schedulati
crontabesegue comandi schedulati a precisi momenti (es. backup giornalieri)
csplit divide/spezza un file in file più piccoli
cutdivide un file in diverse parti
ddData Dump – copia un file di tipo a blocchi
ddrescuetool per il recovery
declaredichiara nomi di variabili e le inizializza
dfmostra lo spazio libero su disco
diffmostra le differenze fra due file
diff3mostra le differenze fra tre file
digesegue il lookup su DNS
dirmostra il contenuto di una directory
dircolorsimposta il colore delle directory quando listate
dirname converte un pathname ad un path
dirsmostra il percorso directory
dumostra lo spazio usato da un file
echomostra a video i messaggi di shell
egrepcome grep ma con ricerche con pattern estesi
ejectespelle un dispositivi rimovibile
enableabilita/disabilita i comandi della shell
envvisualizza le variabili di sistema
ethtoolimpostazioni della scheda di rete
evalvaluta diversi comandi e loro argomenti
execesegue un comando
exitesce dalla shell
expandconverte i tabs in spazi
exportimposta una variabile di sistema
exprvaluta una espressione
falseil valore booleano false
fdformatformatta un floppy a basso livello
fdiskcome cfdisk
fgrepcome grep ma cerca file con un pattern fisso
file recupera il tipo di file
findeffettua una ricerca secondo
fmt formatta un testo in paragrafi
foldword wrap di un testo alla grandezza di una finestra
forciclo for
formatformatta dischi o nastri
freemostrala memoria usata
fsckcontrolla e ripara la consistenza del file system
ftpil comando ftp
functiondefinisce una funzione
gawkcerca e sostituisce testo all'interno di file
getoptslegge parametri dati in input
greprestituisce una lista di nomi file trovati secondo un pattern di ricerca
groupssmostra nomi di gruppi ed i loro utenti
gzipcomprime/decomprime file
hash ricrea il pathname completo di parametro
headmostra la parte iniziale di un file
historymostra la History dei comandi
hostnamestampa/imposta il nome del sistema
idstampa utente e gruppo dell'id
ifcontrollo condizionale
ifconfig configura l'interfaccia di rete
importrealizza lo screenshot salvandolo in una immagine
installcopia file da installare ed imposta i loro attributi
joinunisce più linee in un unico campo
killferma l'esecuzione di un processo
lessmostra l'output a video, una pagina alla volta
letesegue operazioni aritmetiche su variabili di shell
lncrea un collegamento ad un file
localcrea variabili locali
locateeffettua una ricerca (vedere updatedb)
logname mostra il login name corrente
logouteffettua il logout
lookmostra linee che inizialo con una stringa data
lpcgestisce la stampante
lprstampa off-line
lprintstampa un file
lprintdtermina un job di stampa
lprintqelenca la cosda di stampa
lprmrimuove job dalla coda di stampa
lselenca le informazioni su file
lsof elenca i file aperti
makericompila un gruppo di programmi
manmanuale
mkdircrea una directory
mkfifocrea una pila di tipo FIFO
mkisofscrea un file con file system di tipo ISO9660 (cd-rom dvd-rom)
mknodcrea un inode per un dispositivo a blocchi o a caratteri
moremostra l'output una schermata alla volta
mountmonta un file system
mtoolsmanipola file MS-DOS
mvmuove o rinomina file/directory
netstatmostra informazioni sulla rete
niceimposta la priorità di un job
nlnumera in elenco file
nohupesegue un comando e lo rende m immune ad hangups
nslookup interroga il dns interattivamente
passwdmodifica la password dell'utente
pasteunisce due file linee di file
pathchkcontrolla la validità di un nome di file
pingControlla una connessione di rete
popdrecupera il valore precedente della directory corrente
prprepara un file per la stampa
printcapdatabase delle capacità di stampa
printenvstampa le variabili di sistema
printfforrmatta e stampa un dato
ps elenca lo stao di un processo
pushdsalva e cambia la directory corrente
pwdrestituisce la directory corrente
quotamostra la quantità di disco usata ed i suoi limiti
quotacheckscansiona un file system per l'uso del disco
quotactlimposta una “quota” disco
ramil ramdisk
rcpcopia un file fra due computer
readlegge una linea dallo standard input
readonlyimposta una variabile come sola lettura
remsyncsincronizza due file via e-mail
returnesce dalla shell
rmcancella un file
rmdircancella una directory
rsynccopia di un file da remoto
screenla finestra del terminale
scpcopia sicura da remoto di un file
sdiffunisce due file interattivamente
sededitor ed elaboratore di streeam
selectelabora l'imput da tastiera
seqstampa una sequenza numerica
setmanipola variabili e funzioni della shell
sftpcopia sicura di file attraverso protocollo ftp
shiftsposta di una posizione il parametro da leggere
shoptopzioni di configurazione della shell
shutdownspegne/riavvia la macchina
sleepferma il processo per un tempo prefissato
sortordina file di testo
sourceesegue comandi da un fiel
splitspezza un file in file più piccoli di grandezza prefissata
sshshell sicura utile per gestione da remoto
stracetraccia le chiamate di sistema ed i relativi segnali
susostituisce l'identità dell'utente con quella indicata
sumstampa il checksum di un file
symlinkcrea un nuovo nome per un file
syncsincronizza i dati fra disco e memoria
tailmostra l'ultima parte di un file
tarTape Archiver
teeredireziona l'output in più file
testvaluta una espressione condizionale
timemisura il tempo di esecuzione di un programma
timesl'orario utente e di sistema
touchcambia il timestamp di un file
topelenca i processi in esecuzione sul sistema
tracerouteTraceroute
trapesegue un comando quando un segnale è impostato
trtraduce cancella un carattere
trueil valore booleano vero
tsortordina per nome
ttystampa il filename del terminale sullo standard input
typedescrive un comando
ulimitlimita le risorse di sistema per un utente
umaskmaschera di creazione dell'utente
umountsmonta un dispositivo di memoria
unaliasrimuove un alias
unamestampa òe informazioni di sistema
unexpandconverte gli spazi in tabulazioni
uniqrende unico un file
unitsconverte unità da una scala ad un'altra
unsetrimuove variabili
unshar scompatta archivi di shell
untilesegue un comandio finchè...
useraddcrea un nuovo utente
usermodmodifica un utente
userselenca gli utenti correntemente on-line
uuencodecodifica un file binario
uudecodedecodifica un file creato con uuencode
velenca il contenuto di una directory in modo esteso
vdirstampa il contenuto di directory in modo esteso
vieditor di testo
watchesegue/mostra un output ad intervalli di tempo
wcstampa byte, word, e numeri di linea
whereismostra tutte le istanze di un comando
whichlocalizza un programma nello user's space
whileesegue un comando finchè ...
whomostra tutti gli username di chi è on-line
whoamistampa id e nome dell'utente corrente
Wgetrecupera file con protocolli HTTP, FTP HTTPS
xargs utility che esegue comandi elencati come argomenti
yesstampa una stringa fina alla sua interruzzione
.esegue un comando nella shell corrente
#simbolo di commento

Aggiornamento degli RPM
Utilizzare software opensource ha vantaggi e svantaggi.
Uno degli svantaggi, o quantomeno effetti collaterali, è che relativamente spesso vengono rilasciati aggiornamenti di software comuni, caratteristica per'altro comune anche a software proprietario.
Le nuove versioni possono avere nuove features, dei bug corretti o dei buchi di sicurezza tappati.
Abituarsi a sapere quali software vengono utilizzati sui server in produzione e sapere che è fisiologico doverli aggiornare è fondamentale per un approccio sicuro all'uso di Linux su server pubblici. 
Gli errata (aggiornamenti di software) di RedHat come di altre distribuzioni sono generalmente disponibili sul sito ufficiale della distribuzione o su www.rpmfind.org.
Ogni distribuzione Linux DEVE essere aggiornata appena dopo l'installazione ed essere mantenuta costantemente aggiornata, almeno per i programmi che offrono servizi accessibili dalla rete.
L'aggiornamento degli RPM, lo si è visto, è piuttosto semplice ed indolore e può essere reso automatico o semiautomatico con opportuni tool.
- RedHat fornisce il servizio Red Hat Network tramite il quale è possibile automatizzare e coordinare l'aggiornamento degli RPM;
- Tool come RedCarpet di Ximian (su interfaccia a finestre) rendono semplice e rapido l'aggiornamento dei pacchetti 
- Debian ha i propri strumenti per l'aggiornamento dei pacchetti .deb.
I comandi base per aggiornare un RPM sono:
rpm -U package.rpm - Installa il pacchetto indicato, aggiornandone, se già presente, la versione esistente.
rpm -F package.rpm - Aggiorna il pacchetto indicato, solo se è già installata sul sistema una versione precedente dello stesso pacchetto.
E' buona norma, soprattutto se si devono amministrare più server Linux, avere un repository unico in cui scaricare tutti gli errata che vengono rilasciati.
Fa risparmiare parecchio tempo e, se ben aggiornato, facilita l'ordinaria amministrazione e l'aggiornamento dei server. 

Aggiungere manualmente un utente su un sistema Unix
Su Unix sono comuni diversi comandi e programmi per gestire gli utenti del sistema (es: useradd, usermod userdel).
Quelle che questi strumenti fanno automaticamente sono operazioni sul sistema che si possono fare manualmente.
Ovviamente si consiglia di usare tool dedicati come useradd e groupadd per queste attività. 
Per aggiungere un utente al sistema si deve:
- Essere utente root, o avere analoghi privilegi.
- Editare /etc/passwd aggiungendo una riga per il nuovo utente, facendo estrema cura al formato del file;
- [Non indispensabile] Editare /etc/group aggiungendo un nuovo gruppo per il nuovo utente e/o aggiungendo il nuovo utente ad un gruppo di usenti generici;
- Se esiste il file /etc/shadow editarlo aggiungendo una nuova riga per l'utente;
- Creare la home directory del nuovo utente: mkdir /home/nomeutente;
- Ricreare l'ambiente base (script di inizializzazione shell o altri programmi) nella nuova home: cp /etc/skel/* /home/nomeutente/;
- Modificare il proprietario della home: chown -R nomeutente:nomegruppo /home/nomeutente;
- Modificare i permessi della home: chmod -700 /home/nomeutente;
- Modificare la password dell'utente: passwd nomeutente
Questa è una procedura generalmente valida su ogni Linux e Unix, è utile conoscerla, ma resta più comodo e raccomandabile usare i comandi di gestione utente (testuali o grafici) del proprio Unix. 

Apache configuration tool (Red Hat)
Per la configurazione facile di Apache, Red Hat Linux ha un tool che permette tramite interfaccia grafica la configurazione del file /etc/httpd/conf/httpd.conf, dando la possibilita di settare parametri come virtual hosts, numero massimo di connessioni, filtri di logging ecc... 
Per utilizzarlo serve l'ambiente di lavoro grafico X Windows ed i permessi di root. E' suddiviso in svariate sezioni:
Main: da qui è possibile inserire il nome del dominio, l'e-mail del webmaster, la porta dalla quale "ascoltare" e gli indirizzi accettati (disponibile l'opzione "listen to all adress"). 
Virtual hosts: da qui è possibile aggiungere virtual host, ossia aggiungere piu domini, server per diversi IP e porte sulla stessa macchina.
Server: da qui è possibile settare i parametri del server web quali lock file, PID file, directory root, user e gruppo di Apache.
Performance tuning: da qui è possibile settare alcuni parametri come numero massimo di connessioni, tempo di timeout, richieste massime per connessioni ecc...
Altra sezione importante è Default settings, dalla quale è possibile settare homepage, pagine dove deviare gli utenti in funzione dell'errore (page not found, bad request ecc...), file di log per processi, errori ecc...
Attenzione: se si usa questo tool per configurare Apache non editare manualmente il file /etc/httpd/conf/httpd.conf. Se si aggiungono nuovi moduli ad Apache, non saranno supportati da questo tool, e non si potrà più configurare Apache in questo modo.
Per avviare Apache configuration tool:
Su desktop GNOME main menu=>Programs=>System=>Apache configuration;
Su desktop KDE main menu=>System=>Apache configuration;
Oppure da shell lanciando il comando apacheconf. 

Apache mod_dav: Introduzione e installazione
Mod_DAV è un modulo di Apache (non incluso nella distribuzione standard) che permette di implementare il protocollo DAV class 1 e class 2 in Apache web server. E' un progetto Open source relativamente giovane (la prima release è datata 13-6-2000) rilasciato con una licenza Apache-Style. 
E' possibile installare il modulo solo dalla versione 1.3.6 in su di Apache (versioni precedenti richiedono un upgrade del server) sia in ambienti Windows che in ambienti Unix.
L'implementazione di questo modulo permette di manipolare le risorse di una directory di un server web, con possibilità di leggere e scrivere file e directorty, oltre a funzionalità come il lock dei file che si stanno editando per avere l'esclusiva sul file.
Installazione in ambiente Unix-like
Come per la maggior parte dei moduli è possibile installare mod_dav tramite apxs quindi come modulo che verrà caricato dinamicamente oppure "linkato" staticamente nel binario di apache.
1- Scaricare i sorgenti dal sito ufficiale: http://www.webdav.org/mod_dav/
2- Scompattare: [root@dido src]# tar zxvf mod_dav-1.0.3-1.3.6.tar.gz
3- Lancio del configure con le opzioni per abilitare o il caricamento dinamico o statico:
Configurazione con carimento dinamico del modulo
[root@dido mod_dav-1.0.3-1.3.6]# ./configure --with-apxs=/usr/local/apache/bin/apxs 
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for executable suffix... 
checking for object suffix... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for ranlib... ranlib
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for static Apache module support... no
checking for dynamic Apache module support (via APXS)... found at /usr/local/apache/bin/apxs
checking for expat... found in /usr/local/apache/include
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libdav.module
config.status: creating config.h
Configurazione con caricamento statico del modulo
[root@dido mod_dav-1.0.3-1.3.6]#./configure --with-apache=/usr/src/apache_1.3.23/ 
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for executable suffix... 
checking for object suffix... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for ranlib... ranlib
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for static Apache module support... yes - Apache 1.3.x
checking for dynamic Apache module support (via APXS)... no
checking for expat... found in /usr/src/apache_1.3.23//src/lib/expat-lite
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libdav.module
config.status: creating config.h
config.status: config.h is unchanged
4- Compilazione e Installazione:
[root@dido mod_dav-1.0.3-1.3.6]# make && make install
5- Configurazione di Apache
Installazione in ambiente Windows
    1- scaricare i sorgenti
    2- scompattare i sorgenti
    3- compilare i sorgenti:
        c:\mod_dav\>nmake /f mod_dav.mak
    4- copiare i seguenti file nella ServerRoot di Apache:
        Release/mod_dav.dll
        expat/bin/xmlparse.dll
        expat/bin/xmltok.tll
    5- Configurare Apache 

Autenticazione degli utenti
L'user authentication è un modo avanzato per eseguire un controllo degli accessi via web a determinati file o directory sulla base di login e password configurabili. 
Tramite moduli autonomi, Apache supporta diversi metodi per gestire i dati relativi a login e password, che si basano su basi date diverse.
Moduli standard
- mod_auth : Autenticazione base con file di testo
- mod_auth_anon : Autenticazione anonima
- mod_auth_dbm : Autenticazione con DBM database
- mod_auth_db : Per i sistemi che DB database 
- mod_digest : Digest Authentication con file
Moduli sviluppati da terze parti
- mod_auth_msql : Autenticazione base con supporto di MSQL 
- mod_auth_mysql : Autenticazione base con supporto di MYSQL
- mod_auth_ldap : Autenticazione base con supporto di LDAP
- mod_auth_kerberos : Autenticazione base con supporto di kerberos
- mod_auth_radius : Autenticazione base con supporto di radius
- mod_auth_smb : Autenticazione base con Windows
- mod_auth_oracle : Autenticazione base con supporto di Oracle
Per avere una lista completa si può fare riferimento al sito ufficiale http://modules.apache.org/
Da tenere conto che i moduli sviluppati da terze parti, cioè non sviluppati dal core team di Apache, non sono stati testati a fondo e richiedono a volte un'intervento massiccio per l'installazione causa dipendenze con librerie che nell'installazione standard di Linux e di Apache sono escluse.
Qualunque sia il modulo utilizzato vengono sempre richieste le seguenti direttive per abilitare l'user authentication:
AuthName
Il nome o il realm che Apache invia al modulo che si occupa dell'autenticazione per definire le varie "zone" che richiedono l'autenticazione. E' una stringa di testo definibile arbitrariamente, che viene visualizzata nella finestra di richiesta Nome Utente e Password del browser.
AuthName "Area Clienti"
AuthType
E' la direttiva che si occupa di inviare username e password, può acquisire due valori Basic e Digest, la differenza primaria è che la configurazione "Digest", a differenza di quella "Basic", invia username e password criptati utilizzando MD5, sfortunatamente non è del tutto supportata.
AuthType Basic
Auth???UserFile
Ogni modulo ha una specifica direttiva per indicare dove Apache troverà le informazioni per eseguire il check su password ed utente.
Per il modulo mod_auth avremo
AuthUserFile /usr/local/apache/private/passwd
Oppure per il modulo mod_auth_dbm
AuthDBMUserFile /usr/local/apache/private/passwd.dbm
Direttiva opzionale per definire il gruppo
E' possibile tramite la direttiva Auth???GroupFile aggiungere un ulteriore check per l'autenticazione, aggiungendo il criterio del gruppo di appartenenza. Come sopra avremo una direttiva specifica per ogni modulo (non tutti i moduli la supportano)
Per il modulo mod_auth avremo
AuthGroupFile /usr/local/apache/private/group
Oppure per il modulo mod_auth_dbm
AuthDBMGroupFile /usr/local/apache/private/group.dbm 
Require
Direttiva che permette di determinare quale criterio è assolutamento valido per abilitare l'accesso alla risorsa:
require valid-user 
Auth???Authoritative
Altra direttiva opzionale che permette di determinare quale tipo di autenticazione è autoritativa rispetto ad un altra, quando si hanno più tipi di autenticazioni attive sulla stessa risorsa.
Genericamente tutti i tipi di autenticazione seguono il seguente schema:
<Location /private>
AuthName "Nome del realm"
AuthType Basic | Digest
Auth???UserFile /path/to/user/file
Auth???GroupFile /path/to/group/file
require valid-user | user utente1 utente2... | group gruppo1 gruppo2 ... 
Auth???Authoritative on | off
</Location>
Anche nel caso dell'user authentication è possibile utilizzare il file htaccess, anche se non è abilitato di default. Per abilitare tutte le direttive per l'autenticazione occorre appoggiarsi ad AllowOverride:
AllowOverride AuthConfig 

Basic Authentication
L'autenticazione "Base" è quella più comunemente utilizzata più che altro per il fatto che è supportata da tutti i browser.
Di fatto tutti i moduli tranne mod_digest utilizzano l'autenticazione base anche se richiedono di specificarla tramite la direttiva AuthType. 
Quando un Browser richiede una risorsa protetta, Apache replica con un messaggio di mancata autorizzazione per accedere alla risorsa (status code 401) che contiene l'header WWW-Authentificate: ed il nome della zona (o realm) configurata tramite la direttiva AuthName:
WWW-Authentification: Basic realm="Area Clienti"
Quando il client riceve la risposta, apre un pop-up in cui e' possibile inserire user e password e reinvia la richiesta al server aggiungendo le informazioni aggiuntive (pwd e user) nell'Authorization header.
Prima parte dell'header
Authorization: BASIC kheSrkSlrJflvbFvaFfsgHhl
Seconda parte dell'header contenente user e pwd (in chiaro)
user:password
A livello di configurazione su httpd.conf si trova:
<Location /private>
AuthName "Area Clienti"
AuthType "Basic"
AuthUserFile /usr/local/apache/auth/passwd.file
AuthGroupFile /usr/local/apache/auth/group.file
require user user1 user2
</Location>
Se al posto dell'autenticazione basata su normale file di testo, ci si basa un un DBM (tramite il mod_auth_dbm) la sintassi in httpd.conf diventa:
<Location /private>
AuthName "Configuration Example"
AuthType "Basic"
AuthDBMUserFile /usr/local/apache/auth/passwd.dbm
AuthDBMGroupFile /usr/local/apache/auth/group.dbm
require user user1 user2 
</Location> 

cd
E' il comando per cambiare la directory corrente, cioè, in pratica, per spostarsi in una directory diversa da quella in cui ci si trova (usare il comando pwd er visualizzare la directory corrente).
E' presente in tutti gli Unix e non è un comando a se stante (non è possibile trovarne il file binario) in quanto incorporato nella shell (BUILT IN COMMAND). 
cd [directory]
Si aspetta come argomento il nome di una directory in cui spostarsi, se non ne viene specificata alcuna, entra, di default, nella home directory dell'utente.
Esempi
cd / Cambia la directory corrente nella root.
cd ../ Si sposta nella directory padre di quella in cui ci si trova.
cd bin Si sposta nella sottodirectory bin rispetto alla directory corrente. 

Cercare file in un file system Unix
Su Unix esistono molteplici comandi per la ricerca di file, all'interno dell'albero delle directory. Si basano su principi diversi e si adattano a diversi usi.
find - Ricerca file contenuti nella directory indicata in base a svariati criteri, come il nome, la data di modifica, la dimensione ecc. Utile per molti scopi.
locate - Ricerca file che matchano un pattern specificato tramite un database che permette ricerche veloci e viene aggiornato col comando updatedb.
whereis - Visualizza i path di binari, sorgenti e manuali per un comando
which - Mostra la posizione di comandi eseguibili all'interno del proprio ambiente PATH. 
whatis - Cerca la parola completa specificata all'interno del database whatis, contenente brevi descrizioni dei comandi del sistema. Il database viene creato con il comando makewhatis
apropos - Come whatis, ma esegue ricerche anche di parole parziali. 

Chmod
Modifica gli attributo di accesso su uno o più file. Solo il proprietario del file, o l'utente root, può modificarne gli attributi. E' un comando comune in tutti gli Unix. 
chmod [opzioni] modo file 
-c (--changes) Visualizza informazioni sui file che vengono modificati
-R (--recursive) Applica le modifiche alla directory indicata e a tutte le sue sottodirectory
--reference=file_origine Applica al file specificato nella riga di comando gli stessi permessi che ha file_origine
-f (--silent) Non stampa messaggi di errore sui file che non possono essere modificati
Esistono due diversi modi per definire i permessi su un file:
SYMBOLIC MODE
I permessi vengono definiti nella forma: chi-opcode-permesso.
CHI può essere:
u USER - Utente proprietario del file
g GROUP - Gruppo proprietario del file
o OTHER - Altri utenti
a ALL - Tutti gli utenti del sistema (default)
OPCODE può essere:
+ Aggiunge un permesso
- Rimuove un permesso
= Assegna un permesso (e rimuove tutti quelli non specificati)
PERMESSO può essere:
r READ - Lettura sul file 
w WRITE - Scrittura sul file
x EXECUTE - Esecuzione del file (o apertura della directory)
s SET USER ID - Il file (comando) viene eseguito con i permessi dell'owner sul file system, anche quando viene eseguito da altri utenti. Questo attributo è a volte necessario in alcuni comandi lanciati da utenti normali che hanno accesso sul sistema con i permessi di root (es: traceroute).
t STICKY BIT - Normalmente un utente può cancellare tutti i file contenuti in una directory su cui ha permesso di scrittua, anche se non ha permessi di scrittura sul file stesso. Con lo Sticky bit impostato, ciò non è possibile: l'utente può cancellare il relativo file solo se ha permessi di scrittura sul file stesso 
u Lascia i permessi correnti dell'utente owner
g Lascia i permessi correnti del gruppo owner
o Lascia i permessi correnti per gli altri utenti
OCTAL MODE
E' un metodo alternativo che permette di definire i permessi con un numero ottale composta da tre cifre:
la prima indica i permessi per l'utente owner, la seconda per il gruppo, la terza per gli altri.
I permessi vengono calcolati sommando i seguenti valori ottali:
4 - Lettura
2 - Scrittura
1 - Esecuzione.
In questo modo il permesso di lettura+scrittura+esecuzione si indica con il numero 7 (4+2+1), il permesso di lettura, esecuzione con 5 (4+1) e così via.
E' inoltre possibile indicare una quarta cifra (da far precedere alle 3 usuali) per permettere l'assegnamento dei seguenti permessi spciali:
4 - Imposta lo UserId per l'esecuzione
2 - Imposta il GroupID
1 - Imposta lo sticky bit.
Esempi
Per impostare i permessi totali all'owner, e solo in lettura a tutti gli altri si hanno le seguenti possibilità:
chmod 744 /home/file
chmod u=rwx,go=r /home/file
Per impostare permessi di sola lettura per l'owner e il group e nessun permesso per gli altri:
chmod 440 /home/file
chmod ug=r,o-rwx /home/file
Per impostare totali permessi per tutti gli utenti su un file:
chmod 777 /home/file
chmod ugo=rwx /home/file
Per impostare lo sticky bit su un file e permessi totali solo per l'owner e di sola lettura per il group:
chmod 1740 /home/file
chmod u=srwx,g=r,o-rwx 

Compilazione dei moduli di Apache
Le opzioni che possono essere specificate in sede di configurazione per la compilazione di Apache sono molte e possono creare confusione. 
Facciamo alcuni esempi che si adattano ai casi reali più comuni. 
COMPILARE UN APACHE STATICO CON ALCUNI MODULI SELEZIONATI
Se non si vuole il supporto dinamico dei moduli e si intende creare un Apache in un unico file che contiene gran parte (ma non tutti) dei moduli si può usare:
/configure --enable-module=most
Questo compila in un unico binario quasi tutti i moduli, esclusi alcuni. Se non viene specificato si compilano solo quelli che risultano abilitati ./configure --help .
Si può sempre selezionare singolarmente i moduli da inserire o togliere rispetto alle indicazioni di base:
/configure --enable-module=most --disable-module=mod_rewrite --disable-module=mod_auth
COMPILARE UN APACHE CON SUPPORTO DI MODULI DINAMICI
Quando si compila Apache per supportare moduli caricati dinamicamente (secondo quanto indicato in httpd.conf) è sempre il caso di compilare TUTTI i moduli e selezionare da file di configurazione quali effettivamente caricare:
/configure --enable-module=all --enable-shared=max
Notare che l'opzione --enable-module deve comunque essere presente, per permettere la compilazione dei moduli indicati.
Quando si usa --enable-shared il modulo mod_so, che gestisce i moduli dinamici viene automaticamente inserito nell'httpd core. 

Configurare Cups per stampare con il protocollo SMB/CIFS
Per poter usare Cups in una rete windows, permettendo la stampa remota ai client Microsoft oppure usando una stampante condivisa da uno di essi, occorre utilizzare Samba che dalla versione 2.0.6 supporta l'interazione con questo potente sistema di stampa. Dalla versione 2.2 di Samba in poi si ha anche la possibilità di esportare i driver necessari per la stampa con Windows. 
Gli accorgimenti da prendere per poter far stampare della macchine windows sulla rete usando una stampante linux configurata con cups non sono molti e riguardando in special modo la configurazione del server Samba.
Innanziutto occorrerà aggiungere alla opzioni globali i seguenti parametri
[Global]
printing = cups
printcap name = cups
A questo punto non dovrebbe essere necessaria alcuna altra configurazione per poter stampare attraverso cups anche se di norma sarà necessario definire anche la sezione [printers] che permette a Samba di caricare come risorse condivise tutte le stampanti definite nel sistema di stampa e di configurarne alcuni parametri specifici.
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
Volendo si può inoltre esportare i driver necessari ai client Windows e a tale scopo viene in aiuto un comodo comando cupsaddsmb che permette di esportare i drivers cups.
Una volta scaricati i driver e copiati nella directory drivers all'interno della directory radice che di norma si trova in /usr/share/cups e facendo attenzione perchè i nomi siano in maiuscolo si configura smb.conf aggiungendo lo share [print$] nel modo che segue
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = root
create mask = 0664
directory mask = 0775
A questo punto configurate le share [printers] e [print$] si può usare il comando cupsaddsmb per esportare i drivers.
Un comando di questo tipo aggiunge i driver a tutte le code di stampa per l'utente root
#cupsaddsmb -U root -a
L'opzione -a serve a specificare tutte le code configurate nel sistema cups.
Questo comando permette anche di aggiungere coda per coda in modo di permettere una configurazione fine della stampa remota per i client windows.
Se invece si desidera raggiungere una stampante condivisa da una macchina Windows usando cups si possono usare due metodi:
Il primo usa l'implementazione del protocollo lpd e il TCP/IP Printing Service di Windows mentre il secondo usa il protocollo SMB/CIFS.
All'interno di /usr/lib/cups/backend/ la directory in cui si trovano quei programmi che permettono a Cups di interagire con le device, dovrebbe trovarsi un link simbolico chiamato smb che punta al comando smbspool, se non è così è necessario crearlo.
Infine con il comando lpadmin o con l'interfaccia web di amministrazione si creeranno le definizioni delle diverse code e stampanti che usano come device URI delle stringhe nella forma
smb://server/nome_risorsa
smb://workgroup/server/nome_risorsa
smb://user:pass@server/nome_risorsa 

Configurare la rete su Linux
Tipicamente la configurazione di un host in rete prevede pochi dati fondamentali: Indirizzo IP, subnet mask, default gateway e DNS server. 
Esistono molteplici metodi per configurare il servizio di rete in Linux, molto di quanto viene qui riportato si applica a tutti gli Unix:
- editare i singoli file di configurazione del networking (ristartare il servizio per applicare le modifiche);
- usare comandi shell come ifconfig, route
- utilizzare strumenti di configurazione con interfaccia a finestra come netconfig, linuxconf, webmin e altri facilmente individuabili su desktop KDE o GNOME.
File di configurazione:
/etc/sysconfig/network Contiene le principali configurazioni per il Networking: hostname, domainname, default gateway (tipico di RedHat).
/etc/sysconfig/network-script/ifcfg-XXX Directory contenente i file di configurazione delle singole interfacce (tipico di RedHat).
/etc/hosts Contiene il mapping statico fra indirizzi e hostname ed alias. Segue un esempio.
/etc/services Contiene il mapping tra i numeri di porta e i nomi dei servizi.
E' un file che solitamente non si modifica, salvo l'aggiunta di porte e protocolli custom. 
/etc/host.conf Specifica l'ordine secondo il quale il sistema effettuerà la ricerca di informazioni per risolvere gli indirizzi. Usato dalla resolver library in sistemi con libc versione 5.
order hosts,bind ; specifica di usare prima /etc/hosts e poi il DNS per risolvere gli IP. 
/etc/nsswitch.conf Stessa funzione di host.conf nei sistemi con libc versione 6 (glibc). In pratica è sempe meglio avere entrambi i file correttamente configurati.
/etc/resolv.conf File di configurazione del client DNS ovvero contiene gli indirizzi del server DNS e un possibile dominio dell'host e l'ordine di ricerca
Comandi comuni
Tipicamente su Linux e su Unix i comandi che bastano per configurare la rete (con privilegi da root (sono:
ifconfig [interface] [options] | address Permette di configurare le interfacce di rete dell'host. Es: ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up. NOTA: Non esiste nessun controllo sulla corrispondenza fra netmask e broadcast.
route [ opzioni ] [comando] [parametri] Permette di manipolare la tabella di routing del kernel. Es: route add -net 0.0.0.0/0 gw 192.168.0.1
/etc/init.d/network Script di avvio/stop del networking. Es: Per riavviare il subsystem rete dopo una riconfigurazione basta scrivere /etc/init.d/network restart.
ip [ opzioni ] oggetto { comando } Comando estremamente potente e flessibile disponibile a chi ha installato i tool iproute2
E' possibile associare più indirizzi ip appartenenti alla stessa rete su un'unica interfaccia, ovvero è possibile associare più Alias a interfacce di rete. 

Configurare Samba: Opzioni delle singole share
Le opzioni inserite nella sezione [share] fanno riferimento alla configurazione da applicare alla singola risorsa condivisa o alle share di sistema come [netlogon] o [printer] per abilitare/disabilitare alcune funzioni di samba stesso. 
CONFIGURAZIONI BASE PER LE SINGOLE SHARE
Le seguenti opzioni sono le tipiche opzioni utilizzate in tutti i tipi di share e ne definiscono i caratteri generali come per esempio il nome della risorsa che si condivide.
[nome share]
Il nome delle singole share è settato con la seguente entry [nome share] nel file di configurazione dopo le opzioni relative alla sezione [global].
[docs]
path
Sinonimo di directory, indica il path locale della risorsa da condividere tramite Samba. 
Nel caso in cui la share si riferisce ad una stampate identifica la directory che avrà la funzione da spool per la stampante stessa.
path = /home/docs
comment
E' possibile affiancare un commento al nome delle share, che verrà visualizzato lato client. Utile per descrivere il contenuto della risorsa.
comment= Documenti comuni
GESTIONE ACCESSI
La gestione degli accessi alle risorse può avvenire in vari modi a seconda del tipo di configurazione adottata nelle global options.
valid users - invalid user
La prima opzione viene utilizzata per specificare gruppi o utenti che possono accedere alla risorsa, la seconda invece per negarne definitivamente l'accesso. 
valid users = pippo pluto joe
admin user
Determina quali utenti che accedono alla risorsa possono eseguire operazioni da utente root.
admin user = joe
guest ok
Abilita l'accesso alla risorsa all'utente guest.
guest ok = yes 
guest account
Unix account utilizzato come guest access. L'account di default è nobody.
guest account = webmaster
guest only
Di default settata a no, limita l'accesso alla risorsa all'utente guest.
guest only = no
writable (write ok) -read only
Opzioni utilizzabili sia nella sezione global che share permette di abilitare o disabilitare gli attributi di scrittura. 
I valori di default permettono la sola lettura (read only = yes e writable = no).
read only = no
writable = yes 
browsable
Nega o permette la visualizzazione nella lista delle risorse del server samba. Di default è settata a yes.
browsable = yes
read - write list
Opzioni che permettono di eseguire un override della configurazione base di una share per la lista degli utenti specificati.
Rispettivamente, read list permette l'accesso con i soli diritti di lettura ad una share scrivibile mentre write list specifica quali utenti possono accedere, anche con i permessi di scrittura, ad una risorsa configurata per acconsetire gli accessi in sola lettura. 
write list = webmasters developers
max connections
Specifica il numero massimo di connessioni ad una share. Settata di default a 0, permette connessioni illimitate alle risorse.
max connections = 10
SYSTEM SHARE
Samba prevede delle share con un nome specifico per abilitare alcune features o lo sharing di risorse particolari come stampanti.
netlogon
Share indispensabile nel caso in cui samba server faccia da PDC, permette il logon dei client nel dominio. Questa share deve avere le seguenti caratteristiche:
- Il nome non è modificabile, [netlogon]
- Non è possibile visualizzarla e scriverci.
- Non è possibile accederci come utente guest.
[netlogon]
Comment = share to domain logon
path = /samba/logon
public = no
writabl e = no
browsable = no 
profile
E' possibile specificare tramite la share [profile] la risorsa che dovrà fungere da repository per tutti i roaming profile. Questa share non deve essere visualizzata nelle risorse dispobilli del server ma deve essere possibile scriverci.
[profile]
comment = Profili Utenti
path = /samba/profile
create mode = 0600
directory mode = 0700
writable = yes
browsable = no
homes
Share che visualizza in modo automatico la home dell'utente, senza dover mettere le relative entry nel file smb.conf per i singoli utenti. Tale share che prende il nome dell'utente è visibile e scrivibile solo dall'utente con cui si è eseguito il login sul server. 
[homes]
comment = Home Directories
valid users = %S
read only = No
create mask = 0664
directory mask = 0775
browseable = No 

Configurare Samba: Opzioni generali
La sezione [global] è praticamente presente in ogni smb.conf.
Qui si definiscono le configurazioni generali riguardanti il server Samba e i suoi comportamenti di default.
Vediamo nel dettaglio alcune opzioni: 
CONFIGURAZIONI BASE NETBIOS
Netbios name
Definisce il nome NetBios della macchina, così come viene visualizzato in rete. Di default coincide con il nome DNS per la parte relativa all'host (es: pippo.dominio.it prende di default il nome PIPPO). Es:
netbios name = PLUTONE
Server string
E' il commento che si può leggere visualizzando i dettagli su un host in rete. non è indispensabile ma può essere utile per indicare le funzioni o le caratteristiche della macchina. E' possibile usare variabili, per esempio:
server string = File Server - Samba %v (%h)
Workgroup
Definisce il workgroup di cui fa parte il server Samba. Di default il valore è "WORKGROUP", definito in fase di compilazione, ma può essere cambiato. Es:
workgroup = INTRANET
Netbios aliases
Questa opzione permette di assegnare più nomi NetBios allo stesso server oltre a quello definito con netbios name, in modo da farlo comparire fra le Risorse di rete di Windows come macchine diverse, su cui è necessario eseguire login autonomi, anche se di fatto restano lo stesso server. Questa funzionalità può essere utile. per esempio, per raggruppare su un singolo server diversi server SMB che prima risiedevano su macchine diverse senza modificare alcun parametro sui client. Es:
netbios aliases = vendite marketing amministrazione
GESTIONE DEL NETWORKING
Hosts allow - Hosts deny
Queste opzioni definiscono l'accesso al server. Hanno la stessa logica dei file /etc/hosts.allow e hosts.deny, possono essere presenti sia nella [global] che definiti per singola share. Come argomento si aspettano l'IP di una network o di un host (considerando che la rete 192.168.0.0/24, per esempio, si indica 192.168.0.) oppure un singolo hostname (pippo.dominio.com) o un nome di dominio o sottodominio (.dominio.com).
Sono accettati anche gli argomenti speciali ALL (tutti gli IP) e EXCEPT, seguito da indirizzi o nomi di host. 
Samba segue una logica ben precisa per gestire gli accessi con queste opzioni:
- Se non sono definite, viene permesso l'accesso da ogni IP
- Se sono definite nella [global] queste si applicano ANCHE per le singole share (anche se si sono specificate a livello di share)
- Se esiste solo hosts allow viene permesso quanto specificato come argomento e vengono esclusi tutti gli altrti IP
- Se esiste solo hosts.deny sarà permesso l'accesso a tutti gli IP tranne a quelli specificati come argomento
- Se esistono sia hosts allow che hosts.deny vengono esclusi TUTTI gli IP tranne quelli che sono presenti in hosts.allow E non sono presenti in hosts.deny.
Nell'esempio che segue viene dato accesso a 192.168.0.10 e a tutti gli host della rete 10.0.0.0/24 tranne 10.0.0.15:
hosts allow = 10.0.0. 192.168.0.10
hosts deny = 10.0.0.15
Questo esempio corrisponde a:
hosts allow = 192.168.0.10 10.0.0. EXCEPT 10.0.0.15
Se invece si vuole permettere l'accesso solo alla rete 192.168.0.0/16 si può scrivere semplicemente:
hosts allow 192.168.
che coincide con:
hosts deny = ALL EXCEPT 192.168.
Interfaces - Bind Interfaces only
interfaces definisce su quale interfacce di rete dell'host locale Samba si metterà in ascolto. Di default Samba utilizza l'interfaccia di rete principale, ma se si vuole che resti in ascolto su altre interfacce o si vuole essere certi che Samba scelga l'interfaccia voluta, queste vanno specificate tramite il loro indirizzo IP:
interfaces = 10.0.0.3/24 192.168.0.4/255.255.255.0
Il comando bind interfaces only può avere valore yes o no (default). Se viene abilitato Samba ignorerà ogni pacchetto, anche di broadcast, che origina da rete diverse da quelle specificate con interfaces. Notare che se si abilita, è necessario includere esplicitamente il localhost (127.0.0.1) nell'elenco delle interfacce su cui Samba deve stare in listening.
bind interfaces only = yes 
GESTIONE DEL LOGGING
Log file
Specifica su quale file Samba va a scrivere i suoi log. L'argomento può contenere delle variabili, per cui è possibile avere diversi file di log per ogni utente, per tipo di client ecc. Per creare un log diverso per ogni client NetBios, per esempio, si può scrivere:
log file = /var/log/samba.log.%m
Log level
Specifica il livello di logging da usare, va da 0 (minimo) a 10 (estremamente verboso). Il valore di default è 1, su un server normale dovrebbe essere di 1 o 2, se si deve fare un po' di troubleshooting usare il livello 3, valori superiori servono soprattutto a chi sviluppa su Samba e rallentano notevolmente le operazioni:
log level = 2
Max Log Size
Definisce la dimensione massima in Kilobyte dei file di log. Quando viene raggiunto il limite, il file di log viene rinominato aggiungendo il suffisso .old (vengono eliminati eventuali file .old esistenti creati precedentemente) e si riparte con un file di log vuoto. Il valore di defalt è 5000 Kb, il valore suggerito dipende fondamentalmente dallo spazio su disco disponibile, evitare di impostare un valore troppo alto che rischia di occupare tutto lo spazio (considerando anche il file old):
max log size = 2000
Debug Timestamp
Con questa opzione è possibile specifcare se inserire data e ora per ogni riga di log generata. Coincide con l'opzione timestamp logs. Il valore di default è yes per cui nei log sono indicate data e ora in cui avvengono gli eventi. Per non specificare il timestamp scrivere:
debug timestamp = no
Syslog e syslog only
Queste opzioni regolano la possibilità di usare il demone syslog, invece o parallelamente al logging diretto.
Per poter usare il syslog è necessario compilare Samba con configure --with-syslog e configurare /etc/syslog.conf per gestire la facility daemon. Ad esempio con una riga tipo:
daemon.* /var/log/daemon.log
Il valore specificato (da 0 a 10, default 1) indica quali messaggi di log inviare a syslog e, in riferimento agli argomenti dell'opzione log level, cosa loggare direttamente sui file di log interni. Ad esempio:
log level = 3
syslog = 2
Con queste opzioni i log di livello 0 e 1 (inferiori a 2) vengono mandati a syslog, quelli di livello 2 e 3 (compresi tra syslog e log level) vengono scritti sul file di log interno.
Per loggare solo su syslog si deve attivare l'opzione syslog only:
syslog only = yes
GESTIONE DEL BROWSING
Local master - Domain master
Queste opzioni servono per spingere Samba a cercare di diventare rispettivamente Local Master Browser (il server che mantiene la browse list per una rete IP) e Domain Master Browser (il server che mantiene la browse list per un intero workgroup, anche esteso su più reti IP, nel qual caso raccoglie e coordina lo scambio di browse list dai Local Master Browser remoti). Di default Samba ha attivata l'opzione Local Master (con cui semplicemente gli viene detto di partecipare alle elezioni, senza la certezza di vincerle) e non ha attivata l'opzione Domain Master (è bene che il Domain Master Browser sia la stessa macchina che fa eventualmente da Primary Domain Controller, sia esso un Samba o un Windows server). Le impostazioni di default sono quindi:
local master = yes
domain master = no
Preferred Master - OS Level
Con queste opzioni si gestisce il comportamento di Samba nelle elezioni e la sua possibilità di vincerle.
La prima impone a Samba di chiamare un'elezione ogni volta che entra in rete e gli imposta una probabilità leggermente superiore di vincerle rispetto ad altre macchine con lo stesso livello. E' bene impostarla a yes quando si configura Samba come Domain Master Browser o Local Master Browser:
preferred master = yes
domain master = yes
E' comunque raccomandabile non avere troppe macchine in rete (Windows o Samba) che cercano di partecipare alle elezioni per evitare inutili e ripetuti broadcast e possibili incongrenze sulla browse list di riferimento.
L'opzione OS Master, invece setta esplicitamente il livello con cui Samba si presenta alle elezioni. Può avere valore da 0 a 255, più è alto e maggiore la possibilità di diventare Master Browser. Un valore di 34 basta per far vincere tutte le elezioni con server Windows ad eccezione di un PDC. Il valore di default è 20. Il seguente esempio dovrebbe bastare per vincere ogni elezione (ovviamente ad eccezione di altri server Samba con un OS level superiore):
os level = 65.
Announce As - Announce version
Queste opzioni definiscono come Samba si presenta in rete. Announce as può avere come valori Win95, NT o WfW il default è:
announce as = NT
Announce version specifica la versione di Samba. Attualmente si presenta di default come:
announce version = 4.9
Generalmente non serve cambiare queste impostazioni di default. 
remote browse sync - remote announce
Queste opzioni permettono di sincronizzare la browse list di un server Samba quando esistono diversi local master su reti diverse.
La prima permette di richiedere la sincronizzazione della brose list dai server delle reti remote specificate:
remote browse list = 10.0.0.255 192.168.0.255
Con la seconda opzione si può esplicitamente annunciare il server locale, con un workgroup arbitrario, ai server sulla rete remota specificata:
remote announce = 192.168.0.255/WROKGROUP
In entrambi i casi si possono indirzare direttamente gli IP dei server remoti o gli indirizzi di broadcast della loro rete (in questo caso il "directed broadcast" deve poter essere consentito sulla rete remota, di default i router Cisco non lo permettono).
GESTIONE DELLE PASSWORD
E' importante configurare la logica con cui Samba gestisce l'autenticazione e come eventualmente sincronizza le sue password con quelle di sistema. I dati relativi agli utenti sono mantenuti nel file smbpasswd, che a sua volta si può modificare con l'omonimo comando shell.
Sulla gestione delle password esistono varie opzioni di configurazione.
encrypt passwords
Di default ha valore NO, non prevedendo l'invio in chiaro delle password via rete. Sui Windows recenti, comunque, (tutti esclusi NT4 pre SP3 e Windows 95) le password vengono inviate criptate. Per cui o si modifica il registro (esiste .reg adatto nel tar.gz ufficiale) sui Windows o, meglio, si abilita la criptazione delle password:
encrypt passwords = yes.
password level
Di default samba esegue il matching delle password in lowercase (con caratteri minuscoli), compresa la prima lettera.
Password level permette di specificare, come nel caso di username level, quante lettere al massimo si possono rendere maiuscole per i tentativi di connettersi ad una smb share.
password level = 2
null password
Abilita o Disabilita la possibilità di utilizzare password (cryptate e non cryptate) pari a null. 
Il valore di default è NO.
password level = yes
smb passwd file
Specifica il path del file contenente le password cryptate.
Il valore di default è : /usr/local/samba/private/smbpasswd
smb passwd file = /etc/samba/smbpasswd
CONFIGURAZIONE DEI DOMINI
SAMBA permette di usufruire dei domini di windows in varie modalità:
- PDC, samba può essere configurato come primary domain controller per i client windows/unix.
- BDC, (backup domain controller) features non del tutto funzionante per le versioni correnti (2.x), occorre aspettare la versione 3.x per avere il supporto completo.
- Host, facente parte di un dominio esistente.
Di seguito sonon riportate alcune opzioni utili per configurare il logon dei client nel dominio:
domain logons
Permette di loggarsi nel dominio tramite samba configurato come PDC server.
domain logons = yes
logon script
Specifica lo script che verrà lanciato sui client una volta loggati nel dominio.
logon script = logon.bat
logon home
Specifica l'home dell'utente, per i comandi DOS NET.
logon home = \\server\home\%U 
logon path
Identifica la locazione dei roaming file.
logon path = \\server\profile\%U
RISOLUZIONE DEI NOMI CON SAMBA
E' possibile utilizzare una o più delle seguenti modalità di risoluzione dei nomi:
- Broadcasting
- LMHOST file
- Unix /etc/host o NIS
- WINS (Windows Internet Name Service), samba ha la facoltà di appoggiarsi ad un WINS server esterno oppure configurare lo stesso SAMBA per fungere da WINS server.
name resolve order
Opzione che permette di specificare con quali metodi e il rispettivo ordine da utilizzare per la risoluzione dei nomi.
name resolve order = wins hosts bcast
wins server
Permette di appoggiarsi ad un wins esterno specificando semplicemente l'IP, sarà SAMBA stesso a ridirigere le singole richieste al server specificato.
wins server = 10.0.0.100
wins proxy
Abilita il forwarding di tutte le richieste di risoluzione dei nomi anche ad WINS che sono esterni alla subnet del SAMBA server.
wins proxy = yes
wins support
Abilita il WINS server di SAMBA.
wins support = yes
dns proxy
Permette di appoggiarsi al DNS configurato sul server SAMBA (/etc/resolv.conf) per la risoluzione dei nomi fallita tramite WINS.
dns proxy = yes 

Configurare un client di rete su Solaris
La configurazione del networking su Sun Solaris si basa su alcuni file specifici che, una volta noti, non presentano particolari complicazioni. 
Il comando ifconfig puo- essere usato per visualizzare informazioni sulle interfacce di rete e per configurarle. Notare che su Solaris e' necessario prima di poterla utilizzare fare un plumb dell'interfaccia (ifconfig hme0 plumb).
La sintassi di ifconfig e' simile a quella di Linux e altri Unix, per esempio:
ifconfig hme0 10.0.0.15 netmask 255.255.255.0 broadcast 10.0.0.255 up attiva l'interfaccia hme0 e gli assegna IP 10.0.0.15.
Ifconfig viene anche usato per gestire e configurare un'interfaccia via DHCP:
ifconfig hme0 dhcp start manda un DHCP broadcast per trovare in rete un server da cui ottenere il proprio indirizzo IP.
I file in cui possono essere salvate le configurazioni relative alla rete sono:
/etc/nodename Contiene il nome dell'host. Es: talete
/etc/hostname.hme0 Dove hme0 e' il nome dell'interfaccia di rete. Contiene il nome dell'host per quella 
interfaccia, associato al contenuto di /etc/hosts di fatto assegna l'ip all'interfaccia. Es: talete
/etc/hosts Symlink a /etc/inet/hosts. E' il file che contiene staticamente le associazioni nome macchina/indirizzo IP. E' fondamentale per la configurazione di un indirizzo IP su Solaris. Es:
127.0.0.1 localhost loghost 
172.16.5.1 talete 
/etc/defaultrouter Contiene il nome o l'indirizzo IP del default gateway
/etc/netmasks Symlink a /etc/inet/netmasks. E- un file che contiene le maschere di sottorete per netowkr subnettati rispetto alle tradizionali classi A, B e C. Es> 172.16.5.0 255.255.255.0
/etc/resolv.conf Contiene indirizzo IP dei server DNS e, eventualmente, nome di dominio predefinito. Es:
domain openskills.info
nameserver 172.16.5.1
nameserver 217.56.35.99
/etc/nsswitch.conf Contiene informazioni su quali strumenti (file locali, dns, nis], ldap...) utilizzare per la risoluzione dei nomi e per altri servizi.
/etc/services Symlink a /etc/inet/services. Descrive l'associazione numero di porta : nome del servizio. Generalmente non e' necessario modificarlo.
Se si ha un host con piu' interfacce o se sulla stessa interfaccia si devono configurare piu' indirizzi IP basta creare un file tipo /etc/hostname.hme0:1 (Contenente il nome dell'host su questa interfaccia, es: taletebis) e aggiungere il nome dato a /etc/hosts (es: 172.16.5.101 taletebis). 

Configurazione del demone NTPD su Linux
Il protocollo NTP ovvero il Network Time Protocol consente di sincronizzare l’orologio interno di un sistema attraverso uno o più time server che forniscono liberamente il servizio su Internet.
In questo modo la data del sistema può sempre ritenersi affidabile e può ad esempio essere ridistribuita ai client di una rete locale. 
Il meccanismo di funzionamento non è semplice e spesso può creare alcuni problemi legati alla sicurezza o a mancate sincronizzazioni, però in alcuni casi diventa indispensabile avvalersi di un servizio di questo tipo come nel caso in cui due o più sistemi debbano avere sempre la medesima ora, come nel caso del salvataggio di documenti sul sistema la cui data deve essere considerata affidabile.
Spesso l’utilizzo di questo servizio ha generato problemi di sicurezza, ecco perché alcuni timeserver consentono accessi autenticati e cifrati ed ecco perché se il nostro sistema fornisce questo servizio ad altri host e bene regimentarne l’accesso attraverso l’opportuna direttiva (restrict).
In questo breve documento vengono descritti solo i passaggi essenziali per configurare l’ntp su un sistema GNU/Linux, che sfrutta un apposito demone ntpd disponibile un po’ su tutte le distribuzioni. Il demone viene eseguito sul sistema e mantiene sincronizzata l’ora in modo continuo, invece se la necessità è quella di effettuare la sincronizzazione una tantum, si può utilizzare il comando ntpdate in questo modo:
root@server2:/# ntpdate ntp1.ien.
Configurazione di ntpd
Il demone ntpd ha come file di configurazione /etc/ntp.conf: 
# local clock – servizio ntp per la rete locale, consente ai client della rete locale di prendere l’ora dal server.
server 127.127.1.0 
fudge 127.127.1.0 stratum 10
# Server esterni fidati, sono i server con cui sincronizza l’ora attraverso internet.
# Server NTP primario dell IEN Galileo Ferraris - http://www.ien.it/ntp/index_i.shtml e server Secondario del National Institute of Standards and Technology (USA) 
server ntp1.ien.it minpoll 9 maxpoll 10 # server primario
server time.nist.gov minpoll 9 maxpoll 10 # server secondario
# Con la direttiva driftfile si può specificare un file per memorizzare la correzione di frequenza applicata all'orologio locale per metterlo in passo con l'UTC in modo da rendere più veloce il processo di sincronizzazione a seguito di un riavvio del demone ntpd.
Se questo file viene definito, il demone ntpd utilizzerà come correzione iniziale di frequenza il valore trovato all'interno del file, altrimenti utilizzerà il valore 0.
driftfile /etc/ntp/drift
multicastclient 
broadcastdelay 0.008
# Questa opzione specifica se l’accesso ai timeserver su Internet richiede autenticazione
authenticate no #--> se si utilizza l'autenticazione (se il server la supporta) impostare a yes
# Keys file. Questo file consente di specificare una chiave da utilizzare per l’accesso a timeserver autenticati. Le permission sul file indicato devono essere 0600.
keys /etc/ntp/keys
trustedkey 1 2
requestkey 1 2
controlkey 1 2
Per poter utilizzare le chiavi bisogna ancora abilitare l'autenticazione per questo si deve inserire nel file ntp.conf la direttiva che specifica le chiavi da utilizzare:
trustedkey 1 2
e poi affiancare alle direttive che specificano i riferimenti per i time server (server) il numero ID della chiave da utilizzare per la procedura di autenticazione:
server ntp0.ien.it key 1 
server ntp1.ien.it key 2
# ntpd può fornire informazioni relative ai vari eventi che si verificano nel corso del suo funzionamento. Per abilitare questa funzione è necessario specificare una directory nella quale archiviare i file:
statsdir /var/log/ntpstats/
# Con la direttiva logfile invece viene specificato in quale file archiviare le informazioni prodotte dal demone ntpd: 
logfile /var/log/ntpd
# Categorie degli eventi da registrare: 
statistics loopstats peerstats clockstats
# Si devono infine inserire una o più direttive per specificare il nome ed il tipo di file e la categoria degli eventi da registrare utilizzando la seguente sintassi:
filegen categoria [file nome_del_file] [type tipo_di_file] [enable | disable]
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# La direttiva restrict, “restringe” l’accesso al timeserver solo per indirizzi o classi autorizzate. DI default l'accesso èaperto a tutti gli IP, se si vuole abilitare, per esempio, solo la classe 192.168.0.0/24 a sincronizzarsi con il timeserver locale si deve scrivere:
restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap
Configurazione delle chiavi di autenticazione
Per gestire le chiave di autenticazione occorre indicare il percorso completo ed il nome del file nel quale vengono memorizzate le chiavi, nel nostro caso /etc/ntp/keys.
Le chiavi devono essere inserite nel file /etc/ntp/keys una per linea, utilizzando la sintassi:
ID tipo chiave 
ID = numero di identificazione della chiave, compreso tra 1 e 65534; 
tipo = tipologia della chiave, ad esempio M sta per MD5, uno dei sistemi di autenticazione possibili; 
chiave = chiave composta da 1 a 16 caratteri ASCII (da 0x21 a 0x7f, escluso lo spazio e '#').
Esempio di /etc/ntp/keys:
1 M aqzys897AQD # Chiave per server 1 
2 M GGC76ff3564 # Chiave per server 2
Sincronizzazione dei Client della rete
Sotto Windows basta specificare nella sezione “Ora Internet” della Proprietà Data e Ora il nome del sistema che sincronizza l’ora con Internet, sotto Unix/Linux basta configurare l’ntp.conf o usare ntpdate specificando come time server il suddetto sistema, esempio ntpdate time.server.com
Esecuzione di ntpd
Un wrapper che può essere usato per l'esecuzione di ntpd:
#!/bin/sh
test -f /usr/sbin/ntpd || exit 0
case "$1" in
start)
echo -n "Abilitazione del servizio NTP: "
/usr/sbin/ntpd
echo
;;
stop)
echo -n "Disabilitazione del servizio NTP: "
killall ntpd
echo
;;
*)
echo "Utilizzo: ntpd {start|stop}"
exit 1
esac
Il demone verrà attivato e richiederò ovviamente l’abilitazione per le porte coinvolte:
ntp 123/tcp #Network Time Protocol
ntp 123/udp #Network Time Protocol
in caso si sia in presenza di un sistema firewallato.
Ricordate che ovviamente a servizio avviato, non potrà più essere eseguito il comando ntpdate in quanto richiede libere le porte già impegnate dal demone ntpd stesso. 

Configurazione di un DHCP Server (ISC) 
La configurazione di un DHCP Server ISC avviene attraverso un file di configurazione strutturato in maniera particolare, la cui conoscenza è fondamentale per sfruttarne a pieno le caratteristiche. 
La configurazione del server si basa sul file /etc/dhcpd.conf, un file di testo, composto da istruzioni la cui sintassi è di tipo case insensitive e all'interno del quale è possibile lasciare linee vuote o inserire commenti i quali devono iniziare con il carattere #. 
La struttura del file, ricorda dal punto di vista sintattico il linguaggio C, in quanto sono presenti blocchi di istruzioni, e istruzioni annidate, tra parantesi graffe. In particolare si possono individuare due categorie di istruzioni, i parametri (parameter statements) e le dichiarazioni (declaration). Mentre i parametri definiscono in che modo si deve comportare il server, le dichiarazioni vengono utilizzate per descrivere la topologia della rete.
La struttura del file è la seguente: 
parametro valore; 
parametro valore; 
.. 
dichiarazione { 
parametro valore; 
... 
sotto-dichiarazione { 
parametro valore; 
... 


Le istruzioni in testa al file, al di fuori di ogni dichiarazione rappresentano i parametri globali. Essi sono validi in ogni sottorete utilizzata salvo una loro ridefinizione all'interno di successive direttive di dichiarazione. Le istruzioni all'interno di un blocco definito da parentesi graffe { } sono valide solamente per quel blocco in relazione all'oggetto (sottorete, host, gruppo di host ecc.) che definiscono.
Le direttive di dichiarazione sono: 
subnet ip netmask sottorete { 
[parametro] valore; 
}: definisce la sottorete per la quale applicare i parametri definiti; 
shared-network nomerete { 
[parametro] valore; 
dichiarazione { 
... 

}: è utilizzata per il raggruppamento della configurazione di più sottoreti, in particolare quando si definiscono più sottoreti che condividono la medesima rete fisica; 
group { 
[parametro] valore; 
}: permette di definire un gruppo di host che hanno parametri di configurazione comune; 
La direttiva subnet riveste un particolare importanza perchè è la minima unità di informazione da inserire nel file dhcpd.conf. Senza la specificazione di almeno una subnet con un range di indirizzi validi non è possibile avviare il server. 
Tra i parametri di configurazione più utilizzati abbiamo:
default-lease-time secondi: definisce la durata della configurazione per l'interfaccia di rete; 
max-lease-time secondi: definisce il tempo massimo per la durata della configurazione per l'interfaccia di rete; 
range indirizzo ip iniziale indirizzo ip finale: definisce il pool di indirizzi utilizzabili da rilasciare ai client; 
option subnet-mask subnetmask: definisce la maschera di sottorete; 
option broadcast-address indirizzo di broadcast: definisce l'indirizzo di broadcast; 
option routers indirizzo ip del router: definisce l'indirizzo ip del gatway predefinito; 
option domain-name-servers indirizzo dns: definisce l'indirizzo ip del/dei server DNS; 
option domain nome dominio: definisce il nome di dominio della rete
Sotto la directory /usr/doc/ dell'applicazione è possibile trovare un esempio di dhcpd.conf. 

Configurazione di un NFS server
Per configurare un server NFS su Linux è essenziale editare il file /etc/exports e avviare i servizi portmap e nfs. 
Il file /etc/exports non è altro che un elenco dove si specifica quali risorse condividere e con quali modalità (Es read-only o read-write), e con quali credenziali i client potranno accedere a tale risorse (Es ip sorgente di una certa network).
Per modificare tale file occorre essere utente root, di seguito è riportato un esempio del file:
[opgnc@draco root]$ cat /etc/exports
La directory /export e tutto il suo contenuto è esportato via NFS in moadalità read-only(ro) e ai soli client con un ip di network uguale a 10.0.0.0/24
/export 10.0.0.0/255.255.255.0(ro)
La directory /home/kernel e tutto il suo contenuto è esportato via NFS in moadalità read-write(rw) e ai soli client con un ip di network uguale a 10.0.0.0/24
/home/kernel 10.0.0.0/255.255.255.0(rw)
Eseguite le modifiche al file /etc/exports, passiamo ad avviare i demoni RPC e NFS: 
/etc/rc.d/init.d/portmap start
/etc/rc.d/init.d/nfs start
Nel caso in cui il servizio era già attivo occorre semplicemente eseguire il seguente comando per fare in modo che il file /etc/exports venga riletto e si aggiornino le tabelle interne di appoggio del servizio NFS:
exportfs -a 

Configurazione Linux ADSL (PPPoE)
Introduzione
ADSL è l'acronimo di Asymmetric Digital Subscriber Line, in pratica è una "linea digitale asimmetrica" che consente la connessione ad Internet attraverso le normali linee telefoniche (il cosiddetto "doppino"). In pratica la normale linea analogica viene trasformata in linea digitale ad alta velocità, molto più prestante in termini di velocità rispetto allo stessa linea digitale ISDN. 
Viene definita "asimmetrica" per via del fatto che la velocità non è identica in entrambe le direzioni, ma è molto più elevata in ricezione (dalla Rete verso l'utente) che in trasmissione (dall'utente verso la Rete) e questo consente una connessione a Internet molto veloce, con prestazioni particolarmente elevate soprattutto nello scaricamento (download) di informazioni.
I vantaggi del servizio ADSL si possono riassumere così:
- Ottimizzazione della velocità in funzione delle esigenze;
- Connessione sempre attiva;
- Larghezza di Banda massima superiore a quella delle normali linnee PSTN/ISDN
In pratica l'ADSL rende permanente il collegamento a Internet. In questo modo vengono eliminate le operazioni di connessione e disconnessione alla Rete attraverso i normali modem. 
La linea non è più di tipo on-demand (PSTN/ISDN) ma una vera e propria linea dedicata a tutti gli effetti. 
Linux e ADSL
Usare Linux con linee ADSL non è complesso specie se ci viene fornito un Router ADSL che ci occupa dell’autenticazione, in questo caso è sufficiente utilizzare linux come proxy/firewall dirottando il traffico sul gateway della nostra rete che sarà il router ADSL e potrà comunicare con la nostra Linux box tramite un normale collegamente di rete ethernet.
Ma se invece disponiamo di un semplice modem ADSL, le cose si complicando perché dovremmo gestire con il sistema operativo la procedura di autenticazione secondo due modalità:
PPPoA: ppp over ATM è il protocollo implementabile per modem ADSL interni o USB. La possibilità di utilizzarlo sotto Linux non mi è nota ed è ovviamente basata sul riconoscimento del modem USB. Per chi fosse interessato conviene fare una bella ricerca su Google.
PPPoE: questo sistema (Point-to-Point Protocol over Ethernet) che utilizza il ppp su ethernet è perfettamente supportato da Linux, ed di questo metodo largamente diffuso che parleremo.
In questo secondo caso occorre configurare il sistema Linux per gestire l’autenticazione un po’ come si faceva per gli accesso PPP. Il dispositivo nel caso in cui sia un modem esterno può prevedere la connessione via porta USB o via ethernet.
Prenderemo in esame solo il secondo caso per cui occorre avere un server con una scheda di rete da destinare alla connessione con il modem (tipicamente con un cavo cross). Ovviamente se si vuole usare il server linux come router/NAT o firewall occorrerà avere un’altra scheda di rete da dedicare alla connessione sulla LAN interna.
Requirements
E’ basilare prelevare il software rp-ppoe da http://www.roaringpenguin.com/pppoe/ o verificare se è già installato o previsto fra i pacchetti della propria distribuzione. Esistono altri client PPPoE in circolazione e un supporto anche a livello di modulo del kernel, ma rp-pppoe resta la soluzione più diffusa e semplice.
Una volta scompattato occorre eseguire la procedura di compilazione che prosegue con la configurazione dei parametri necessari a stabilire la connessione:
/go
Rispondere alle domande:
>>> Enter your PPPoE user name: pippo
>>> (default eth1): eth1
>>> Enter the demand value (default yes): no Vogliamo una linea sempre attiva
>>> Enter the DNS information here: dns.libero.it
>>> Enter the secondary DNS server address here: dns2.libero.it
>>> Please enter your PPPoE password: ***
>>> Please re-enter your PPPoE password: ***
The firewall choices are:
0 - NONE: This script will not set any firewall rules. You are responsible
for ensuring the security of your machine. You are STRONGLY
recommended to use some kind of firewall rules.
1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation
2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway
for a LAN
>>> Choose a type of firewall (0-2):2
Ethernet Interface: eth1
User name: pippo
Activate-on-demand: No
Primary DNS: dns.libero.it
Secondary DNS: dns2.libero.it
Firewalling: MASQUERADE
>>> Accept these settings and adjust configuration files (y/n)? y
Type 'adsl-start' to bring up your ADSL link and 'adsl-stop' to bring
it down. Type 'adsl-status' to see the link status.
Come si può notare i dati richiesti sono semplici:
- user e password di accesso
- dns server
- interfaccia di connessione verso il modem
- impostazione eventuale di un firewall
Prima di attivare la connessione occorre notare come sia necessario attivare il supporto per dhcp, poiché in genere i modem ADSL assegnano un IP via DHCP al sistema a cui sono collegati via ethernet, quindi prima di attivare l'adsl conviene eseguire il dhcp sul sistema (dhcpd) per far si che questo vi assegni un IP per poter dialogare con il modem.
A questo punto con il comando adsl-start il sistema attiva la linea sull’interfaccia ppp0 che sarà quella a cui verrà assegnato l’IP internet statico, mentre assegna un indirizzo IP arbitrario all’eth1 a cui è collegato fisicamente il modem da un normale cavo di rete.
Per gestire l’adsl usare i comandi:
adsl-start: attiva la connessione
adsl-stop: ferma la connessione
adsl-status: verifica lo stato della connessione
Note
E' importante che la scheda di rete connessa al modem non abbia assegnato alcun indirizzo IP per evitare problemi. Quindi se ne ha uno, sarà necessario modificare i file di configurazione del sistema (direttamente o tramite un tool grafico con cui si gestisce il network) ed eliminare l'IP della scheda in questione.
Sarà il modem via dhcp ad assegnarne uno.
- Prerequisiti a livello di kernel
Se non già previsto dalla propria distribuzione come modulo, compilare il supporto per ppp.
- Note per la rete
Si possono incontrare difficoltà relative alla dimensione dei pacchetti e del settaggio dell'MTU. I sintomi più evidenti sono:
- impossibilità di inviare mail con attachment
- difficoltà nel fare l'upload tramite ftp, anche in passive transfer
- mancata risposta da parte di alcuni url
Il problema si risolve settando l'MTU delle schede di rete ad un valore inferiore a quello di default 1500. Nel mio caso un valore di 1472 riesce a risolvere in modo affidabile la situazione, tuttavia il valore ottimale varia da rete a rete quindi sarà necessario fare delle prove (ping del gateway con opzione -f). Per settare l'MTU il comando è: 
ifconfig eth0 mtu xxxx 
dove xxxx è un valore comunque inferiore a 1500.
Configurazione
Sotto /etc/ppp si trovano i file di configurazione coinvolti, in particolare il file ppoe.conf in cui è possibile andare a modificare manualmente le opzioni inserite all’atto dell’installazione del programma:
# Ethernet card connected to ADSL modem
ETH=eth1
# ADSL user name. You may have to supply "@provider.com" Sympatico
# users in Canada do need to include "@sympatico.ca"
# Sympatico uses PAP authentication. Make sure /etc/ppp/pap-secrets
# contains the right username/password combination.
# For Magma, use xxyyzz@magma.ca
USER=pippo
# Bring link up on demand? Default is to leave link up all the time.
# If you want the link to come up on demand, set DEMAND to a number indicating
# the idle time after which the link is brought down.
DEMAND=no
#DEMAND=300
# DNS type: SERVER=obtain from server; SPECIFY=use DNS1 and DNS2;
# NOCHANGE=do not adjust.
DNSTYPE=SERVER
# Obtain DNS server addresses from the peer (recent versions of pppd only)
# In old config files, this used to be called USEPEERDNS. Changed to
# PEERDNS for better Red Hat compatibility
PEERDNS=yes
DNS1=dns1
DNS2=dns2
Nel caso in cui utilizziate un 3Com HomeConnect ADSL Modem DualLink abilitate la stringa seguente al fondo del ppoe.conf:
# Rumour has it that "Citizen's Communications" with a 3Com
# HomeConnect ADSL Modem DualLink requires these extra options:
PPPOE_EXTRA="-f 3c12:3c13 -S ISP"
Hardware utilizzato
Il test è stato effettuato con modem ADSL 3Com Home Connect Dual Link e provider Tiscalinet. 

Creazione del file di configurazione
Ad ogni installazione di RedHat Linux, viene creato in modo automatico il file di configurazione per kickstart in /root/anaconda-ks.cfg. 
Editandolo a seconda delle proprie esigenze ci si ritrova con un file di configurazione kickstart gia' pronto. 
Inoltre RedHat rende disponibile un front-end grafico avviabile dal menu di gnome o kde oppure tramite shell lanciando il comando /usr/sbin/ksconfig
Nel caso in cui l'utility ksconfig ed il file anaconda-ks.cfg non siano disponibili e' possibile creare manualmente il file, da tenere presente che le quantità di informazioni necessarie dipendono da cosa e come vorrete installare. Per maggiori informazioni sulle opzioni disponibili è bene consultare la documentazione on-line al seguente indirizzo: http://www.redhat.com/docs/manuals/linux/RHL-7.3-Manual/custom-guide/s1-kickstart2-options.html, mentre un esempio del file ks.cfg con relativi commenti è disponibile un infobox apposito al seguente indirizzo:
http://openskills.info/view/boxdetail.php?IDbox=363&IDlanguage=&boxtype=path 

Creazione di un disco di boot da DOS
Se si deve usare un floppy disk per poter eseguire l'installazione (necessario quando la propria motherboard non supporta il boot direttamente dal CDROM) è necessario creare un dischetto di boot.
Nei CDROM con le distribuzioni Linux più comuni esiste il programma RAWRITE eseguibile sotto DOS, che permette di scegliere l'immagine di un floppy (di solito sono dei file di dimensioni 1.44 Mb con estensione img) da copiare un un dischetto vuoto.
Si consiglia di copiare rawwrite e le immagini che servono in c: di un windows e poi eseguire da DOS: C:\rawrite.exe, specificare l'unita floppy in cui è inserito un dischetto vuoto (es: A:) e l'immagine che si vuole metteres su floppy (es: boot.img).
Il floppy così creato potrà essere utilizzato per fare un boot tramite il quale procedere con l'installazione di Linux da un CDROM. 

Creazione di un disco di boot per Linux (sotto Windows)
Se si deve usare un floppy disk per poter eseguire l'installazione (perchè la propria motherboard è tanto antica da non supportare il boot direttamente da CDROM) è necessario creare un dischetto di boot.
Nei CDROM con le distribuzioni Linux più comuni esiste il programma RAWRITE eseguibile sotto DOS, che permette di scegliere l'immagine di un floppy (di solito sono dei file di dimensioni 1.44 Mb con estensione img) da copiare un un dischetto vuoto.
Per semplicità si può copiare rawrite e le immagini che servono in c: di un windows e poi eseguire da DOS: C:\rawrite.exe, specificare l'unita floppy in cui è inserito un dischetto vuoto (es: A:) e l'immagine che si vuole metteres su floppy (es: boot.img).
Il floppy così creato potrà essere utilizzato per fare un boot tramite il quale procedere con l'installazione di Linux da un CDROM. 

Creazione di un disco di ripristino per RedHat Linux
Durante l'installazione di Linux su quasi tutte le distribuzioni è solitamente richiesto se si vuole creare un floppy disk di ripristino.
Questo permette il caricamento del kernel da floppy in caso di problemi con il MBR o l'hard disk dove risiede l'installazione.
Una volta caricato Linux dal floppy di emergenza si possono effetturare operazioni di manutenzione sul file system e i file, correggendo un'installazione corrotta.
Ovviamente, è consigliabile avere sempre a disposione un floppy di emergenza per la propria macchina. 
In caso di necessità si può creare un floppy di boot con un comando tipo (su RedHat):
mkbootdisk --device /dev/fd0 2.4.7-10
In questo caso viene creato su fd0 (il primo floppydrive) un disco con kernel 2.4.7-10 (che ovviamente deve essere disponibile) 

Creazione di un file passwd per l'autenticazione base di apache
Prassi per la creazione di un passwd per Apache con htpasswd. 
[root@morpheus /root]# cd /usr/local/apache/auth/
[root@morpheus auth]# ls -l
totale 0
Creazione del file passwd e inserimento del primo utente pippo
[root@morpheus auth]# htpasswd -c passwd pippo
New password: 
Re-type new password: 
Adding password for user pippo
[root@morpheus auth]# ls -l
totale 4
-rw-r--r-- 1 root root 20 nov 15 13:14 passwd
Visualizzazione del contenuto del file passwd
[root@morpheus auth]# cat passwd 
pippo:50JjuGahgWGg2 

Decalogo della Sicurezza
Qui di seguito 10 punti importanti da rispettare per la sicurezza del proprio computer.
Non si garantisce che prestando attenzione ai seguenti 10 punti si avrà totale immunità da ogni minaccia, ma è altrettanto vero che ignorandoli, i rischi aumentano considerevolmente. 
1. ANTIVIRUS
Installare e aggiornare regolarmente un buon antivirus è il primo passo indispensabile da compiere per garantire la sicurezza di qualsiasi computer che si affacci ad Internet. Fra questi i prodotti più comuni sono Norton e McAfee.
Alternativamente si può centralizzare a livello di un server di posta unico la protezione dai virus, anche se un antivirus sul client è comunque raccomandabile.
2. FIREWALL
Nonostante possa sembrare un pò eccessivo per un utente comune, l'efficacia di tale protezione è indiscutibile. È soprattutto utile in certi casi, ad esempio in attacchi che nelle fasi preparatorie e prima di tentare un accesso non autorizzato compiono la scansione delle porte TCP/UDP. Per chi volesse testare l'efficacia di questi software consiglio ZoneAlarm (www.zonelabs.com - download di una trial version) oppure Sygate (www.sygate.com) entrambi molti "attenti". 
3 . E-MAIL
E' sempre buona norma non aprire posta elettronica proveniente da mittenti sconosciuti, o per meglio dire, sospetti.
Se fosse comunque indispensabile l'apertura di tali mail, è consigliabile salvare i file interessati su disco e sottoporli a scansione prima di aprirli.
4 . PROGRAMMI
Non aprire assolutamente file eseguibili (.exe) dei quali non si conosca origine e loro genuinità. Lo stesso dicasi per programmi che possono avere al loro interno delle macro (più che eseguibili si mimetizzano nei template di documenti stile Word - attenzione quindi ai file.doc o .txt che gestiscono anche applicazioni interne).
5 . PATCH
Da installare sempre le più recenti (e testate!) sia che riguardino il sistema operativo sia tutti i programmi applicativi. Dal sito windowsupdate.microsoft.com sono scaricabili service pack per i vari sistemi operativi, aggiornamenti Explorer ed ultime versioni software, ovviamente tutte targate Microsoft.
6 . ANOMALIE
Nel caso in cui il sistema operativo presenti anomalie e malfunzionamenti è necessario prestare la massima attenzione al fine di capirne causa, origine e possibile soluzione. In tal senso possono esserci utili appositi software (es: Ad-aware ) per rilevare eventuali spyware e quanto c'è di indesiderato nel nostro computer. Sul sito www.spychecker.com si trovano info e versioni software dedicate a questa problematica.
7 . JAVA, JAVASCRIPT e ACTIVE-X
In assenza di un buon antivirus o di un server proxy che renda la nostra navigazione anonima, queste tecnologie (per lo più parti di codice in java e html che azionano ed animano immagini oppure testi) andrebbero disabilitate in quanto costituirebbero un grosso punto debole per la nostra sicurezza. Di contro la suddetta navigazione potrebbe risultare quantomeno frustrante.
8 . SCRIPTING DI POSTA ELETTRONICA
Meglio disattivare tali funzioni dal menù di configurazione dell'Explorer, dato che spesso, le spine nel fianco dei browser dipendono proprio da questi software dedicati alle funzioni di posta elettronica che presentano contenuti di tipo interattivo.
9 . DISCO di BACKUP
Fare sempre e comunque una copia dei dati che ci interessano contenuti nel nostro computer in caso di eventuali formattazioni. La scansione temporale per eventuali backup è ovviamente a scelta dell'utente, a seconda dell'importanza dei file che ritiene di possedere; identificativamente un backup mensile sarebbe più che ideale.
10 . DISCO di BOOT
Potrebbe rivelarsi indispensabile per poter riavviare un computer con sistema operativo danneggiato, ma la garanzia di tale floppy deve essere totale. La creazione di questo dischetto ci viene generalmente proposta all'installazione del sistema operativo(spessissimo ignorata dagli utenti!); in eventualità è possibile crearne uno tramite Pannello di Controllo -->Installazione Applicazioni -->Disco di Ripristino. 

Definizioni e termini comuni nell'information security 
Quando si inizia a parlare di sicurezza il gergo informatico si fa particolarmente pittoresco e rigoglioso, al punto che può essere utile definire in modo chiaro alcuni termini comuni. 
Quando si parla di minacce possibili, si possono incontrare termini quali:
Virus
Un pezzo di codice in grado di diffondersi e duplicarsi in modo autonomo, legandosi ad un programma, ad una libreria condivisa, ad un messaggio di posta elettronica ecc. Esistono migliaia di virus diversi, raggruppabili in alcune categorie base. In comune hanno la capacità di duplicarsi automaticamente, la possibilità di eseguire operazioni potenzialente dannose sui sistemi infetti, la possibilità di attivarsi in contesti o momenti determinati.
Un antivirus è un software in grado di intercettare un virus prima che entri sulla macchina locale (via posta elettronica, tramite un flopppy disk infetto, tramite una condivisione di rete...) e di controllare ed eventualmente riparare i file infetti presenti sul computer.
Worm
Un worm ha caratteristiche simili ad un virus: si duplica automaticamente e può farlo in modo estremamente rapido. A differenza di un virus non si attacca ad altri programmi ma tende a mantenersi autonomo e non necessariamente fa danni diretti (tipo cancellare dei file) ma con la sua esistenza può seriamente limitare banda e risorse a disposizione.
Tipicamente, inoltre, un worm si diffonde fra server in rete, sfruttando vulnerabilità note per penetrare in sistemi non protetti.
Trojan Horse
Il cavallo di Troia è un programma modificato che esegue funzioni particolari e potenzialmente nocive all'insaputa del possessore, a cui il programma appare funzionare normalmente. Lo scopo di un Trojan Horse, fedele al mito ellenico, è spesso quello di permettere dall'esterno un accesso, ovviamente non autorizzato, al sistema su cui viene eseguito.
Bomb
Una bomba può essere un virus, un worm o qualcosa di analogo che si attiva in un determinato momento, dando luogo all'azione nociva per cui è stata realizzata. I meccanismi di attivazione possono essere legati ad una data, un giorno della settimana o un'ora specifici (time bomb) o correlati a qualche evento specifico di varia natura (logic bomb).
Back door
Una back door (o trap door) è un meccanismo (incorporato dal momento della creazione in software esistente o introdotto in tempi successivi come un trojan horse su del software locale) con cui si permette l'accesso al sistema a prescindere dai metodi di accesso noti e conosciuti del possessore.
La backdoor può essere inserita dallo sviluppatore di un programma per operazioni di manutenzione o, in visione hollywoodiana, per ricattare chi ne fa uso, oppure, più comunemente di questi tempi, può essere predisposta su un sistema esistente da parte di un intrusore, che dopo aver violato la macchina sfruttando una vulnerabilità non protetta, vuole garantirsi la possibilità di rientrare sul sistema per vie autonome, senza dover riutilizzare la vulnerabilità usata la prima volta.
I personaggi che popolano l'underground informatico hanno nomi quali:
Hacker
Da sempre, in gergo informatico, l'hacker è lo smanettone ingenioso e curioso che affronta un oggetto o un problema da un punto di vista diverso da quello inizialmente previsto riuscendo a farne un utilizzo nuovo.
Meno estesamente, un hacker è un programmatore o tecnico informatico in grado di realizzare software particolarmente innovativo o valido.
Nonostante questa definizione tutt'altro che maligna, i media hanno spesso abusato del termine hacker per indicare un "pirata informatico", che penetra su sistemi remoti o sprotegge software protetto da diritti d'autore.
Un termine più corretto per questa definizione è cracker.
Cracker
Chi attacca sistemi remoti al fine di violarne le protezione e prenderne il controllo o chi rimuove le protezione di un software o, ancora, coerentemente con il significato della parola inglese, chi riesce a "rompere" e superare una qualsiasi forma di protezione informatica.
Script kiddie
Si definisce tale, con nemmeno molto velato spregio, il ragazzino (anagraficamente o mentalmente) che utilizzando strumenti e software comuni nell'ambiente underground attacca sistemi remoti in modo sistematico.
Tradizionalmente lo script kiddie (letteralmente ragazzino da script) non ha le capacità tecniche di un cracker esperto, ma può essere ugualmente pericoloso per il carattere sistematico su larga scala dei suoi "scan" automatizzati.
Lamer, loozer, l0zer... 
Termini generici e molto soggettivi per indicare un "perdente", un ignorante o comunque una persona da poco. Il tutto ovviamente è strettamente relativo a chi utilizza il termine e alla sua scala di valori e metri di valutazione.
All'opposto di ciò che è lame c'è il cool, kewl o simili variazioni sintattiche sullo stesso fonema.
Anche in questo caso ciò che è "cool" per qualcuno può non esserlo per altri, ma a prescindere dal merito, "lame" è aggettivo con forte connotazione negativa e "cool" ha connotazione positiva.
Azioni tipiche da cracker sono:
Spoofing
L'atto di modificare una connessione o un passaggio di dati in modo da far credere al destinatario di comunicare con un'entità diversa da quella che crede. Tipicamente lo spoofing viene fatto sull'indirizzo IP sorgente, inviano pacchetti ad un dato destinatario che si presentano con un IP sorgente arbitrario o scelto appositamente per bypassare firewall e controlli di accesso. La risposta a simili IP, ovviamente, viene fatta all'IP sorgente "spoofato" per cui, per portare avanti una connessione, l'attaccante deve poter essere in grado di intercettare anche le risposte.
Sniffing
Il controllo e il monitoraggio del contenuto di pacchetti che transitano su una rete. Tramite lo sniffing tutte le informazioni che vengono inviate in plain text sono visibili, quindi se si tratta di informazioni sensibili come una login e una password, possono essere visualizzate.
Defacing
La modifica dell'home page, o di altre pagine, di un sito web, da parte di un cracker dopo un intrusione eseguita con successo. Può essere una azione dimostrativa volta a veicolare un messaggio di qualsiasi tipo o una semplice esibizione delle proprie capacità e di essere riusciti a craccare un sistema.
Scanning
L'analisi di un sistema remoto finalizzata all'individuazione di vulnerability note. 
La forma di scanning più basilare è quella rivolta all'individuazione delle porte aperte sul sistema remoto, a sua volta, è possibile eseguire degli scanning più specifici alla ricerca di vulnerabilità sui servizi disponibili sulle porte aperte trovate. 
Altri termini che si incontrano spesso quando si parla di sicurezza informatica:
Plaintext - cleartext
Un testo in chiaro, leggibile così come è stato scritto. Se qualcuno è in grado di accedere a questo testo è quindi in grado di leggerne il contenuto.
Cipher text
Un testo criptato, il cui contenuto deve essere decriptato per essere leggibile. In termini generici di sicurezza usare delle connessioni o dei messaggi cifrati è raccomandabile in quanto anche nel caso in cui il testo giunga ad occhi non autorizzati a leggerlo, questi non potranno decodificarlo senza le opportune chiavi di decriptazione.
La lunghezza delle chiavi di crittazione è direttamente proporzionale al tempo computazionale necessario per decriptare un file usando tentativi brutali e sistematici.
Access Control List - ACL
Un elenco di regole volte a individuare dei pacchetti secondo diverse caratteristiche (IP sorgente, porta di destinazione, IP destinazione ecc.) al fine di eseguire determinate azioni come permetterne il flusso o interromperlo. Vengono tipicamente implementate su dei firewall ma si possono riferire in ogni contesto in cui l'accesso ad una data risorsa è limitata in qualche modo.
Trusted
"Fidato". E' un aggettivo che si riferisce a qualsiasi elemento in rete (Indirizzo IP sorgente, host, network...) da cui ci si possono aspettare connessioni non ostili. Tipicamente da certe sorgenti fidate si permette l'accesso a servizi di un host che sono impediti a tutti gli altri indirizzi IP. 
Vulnerability
Una vulnerability è un bug nell'implementazione di un protocollo o di un software che permette azioni ostili che possono intaccare la sicurezza di un sistema. Le vulnerabilità possono essere "note", cioè descritte in mailing list o su appositi archivi, oppure anche ignote, cioè non comunemente conosciute ma già scoperte ed eventualmente utilizzate da qualche cracker.
Molti prodotti di security scanning si basano proprio sugli archivi delle vulnerabilità note.
Buffer overflow
E' una tecnica di hacking che consiste nell'inserire, in qualsiasi contesto possibile (una GET http, il campo di un form html, le dimensioni di un pacchetto o di un campo della sua intestazione ecc) una grande quantità di caratteri in modo da cercare di mettere in difficoltà il programma che deve gestirli qualora non preveda meccanismi di controllo sulla lunghezza delle variabili che gestisce. Quello che può accadere è che, da un certo byte in poi, il testo in eccesso venga scritto in locazioni arbitrarie di memoria.
Questo può essere sfruttato in vari modi e può causare dal crash del software ad una intrusione vera e propria.
Rootkit
E' un insieme di tool e programmi che vengono utilizzati da un cracker dopo un intrusione allo scopo di cancellare le proprie tracce e assicurarsi la possibilità di ritornare sul sistema violato anche senza dover riutilizzare la vulnerability usata la prima volta. 

dhcpd
L'assegnazione degli indirizzi e la configurazione dei client di rete in modo dinamico è offerta, su un sistema GNU Linux, dal server dhcpd sviluppato dall'ISC (Internet Software Consortium). Dhcpd utilizza due principali file di configurazione dhcpd.conf per la configurazione e dhcpd.leases coma database dei lease. 
Il server dhcp, viene solitamente fatto partire tramite gli script di avvio del sistema, la sua sintassi è la seguente: dhcpd [opzioni] [interfacce]
Tra le opzioni principali abbiamo:
-p numero porta UDP: permette cambiare la porta di listening, di default è la 67; 
-cf file di configurazione: permette di definire un file di configurazione alternativo a quello predefinito;
-lf file di lease: permette di definire un file alternativo a quello predefinito contenente le informazioni relative agli indirizzi IP rilasciati; 
-q: non stampa i messaggi di copyright all'avvio del servizio; 
-d: utile per il debug, visualizza i messaggi del server sullo standard error anzichè essere come di default essere loggati da syslog. 
-t: testa solamente la correttezza sintattica del file di configurazione dhcpd.conf; 
-T: testa solamente la corretteza del file di database dhcpd.leases; 
Di default dhcpd si mette in in ascolto su tutte le interfacce che supportano il multicast (ovvero dove è possibile trasmettere pacchetti all’indirizzo IP 255.255.255.255), altrimenti con la relativa opzione è possibile specificare al server su quali mettersi in ascolto ignorando le altre. 

Disabilitazione della lettura del file .htaccess
E' possibile tramite la direttiva AllowOverride disabilitare la lettura del file .htaccess ed evitare la possibilità di modificare le direttive del file di configurazione principale. 
Se non si ha la necessità di lasciare agli utenti che uploadano i contenuti di un sito, di modificare autonomamente il proprio file .htaccess e quindi impostare delle configurazioni specifiche per le proprie directory, è decisamente consigliato disabilitare la lettura stessa del file da parte di Apache.
Questo ha un duplice vantaggio:
- Prestazioni: Il web server non deve controllare ogni volta l'esistenza di un .htaccess per ogni directory su cui va a leggere file.
- Sicurezza: Nessun utente/webmaster può impostare autonomamente, uploadando, per esempio via FTP, un file .htaccess in grado di modificare le configurazioni di Apache (per la directory in cui si trova il file).
Per disabilitare in generale l'uso di .htaccess aggiungere a httpd.conf le seguenti righe:
<Directory />
AllowOverride None
</Directory>
E' poi sempre possibile abilitare l'override per specifiche directory, meno generali. 

Disinstallazione webmin
Come per l'installazione, webmin prevede uno script anche per la disinstallazione, presente in /etc/webmin. 
[root@eberk diego] cd /etc/webmin/ 
[root@eberk webmin]# ./uninstall.sh 
Are you sure you want to uninstall Webmin? (y/n) : y 
Stopping Webmin server in /home/diego/webmin-1.000
Running uninstall scripts ..
Deleted init script /etc/rc.d/init.d/webmin
Deleting /home/diego/webmin-1.000 ..
Deleting /etc/webmin ..
Done!
[root@eberk webmin]# 

Documentazione locale su Linux
Il primo posto dove cercare documentazione su Linux è Linux stesso.
Tutte le distribuzioni danno la possibilità di installare manuali e documentazione di vario genere.
Nella maggior parte dei casi sono più che sufficenti per conoscere gran parte degli argomenti da sapere. 
Di seguito vengono riportati alcuni comandi per richiamare manuali ed info di vario genere presenti in locale, sul sistema installato, da interfaccia testuale. Con una interfaccia a finestre, gli help online sono facilmente identificabili dal menu principale.
man - E' la fonte più rapida e semplice per apprendere delle informazioni riguardanti comandi, file di configurazioni, funzioni di sistema e altro. Esempio: man ps
info - Info è un lettore di ipertesti gnu. Molti programmi hanno la loro documentazione anche in questo formato. Esempio: info grub
whatis - Cerca la keyword specificata all'interno del database whatis (contiene una breve descrizione di tutti i comandi nel sistema). Equivalente a man -f
apropos - Come whatis, ma cerca stringhe e non parole complete, di conseguenza può dare risultati più verbosi. Equivalente a man -k
/usr/share/doc /usr/doc - Le directory dove risiedono generalmente le documentazioni per programmi specifici in diversi formati (txt,html,pdf etc..).

Moltissimi programmi e comandi, inoltre, permettono di visualizzare alcune righe di HELP passando una specifica opzione. Generalmente si utilizzano queste opzioni: comando --help ; comando ? ; comando -h 

Domini virtuali con Apache 
Sullo stesso computer è possibile ospitare diversi siti fra loro indipendenti.
Apache prevede diversi metodi per per farlo:
- User Home (tutte le home vengono visualizzate tramite la direttiva UserDir)
- Istanze multiple di Apache (Più Apache, anche di versioni diverse, installati e in esecuzione sulla stessa macchina)
- VirtualHost Ip-based (Più domini virtuali su IP diversi)
- VirtualHost Name-based (Più domini virtuali sullo stesso IP) 
Il metodo più utilizzato per erogare più servizi con Apache è quello di creare dei VirtualHost IP o name based.
Ovvero tramite sullo stesso server è possibile creare virtualmente tanti host quanti sono i servizi (siti) che devono essere erogati.
IP-Based
Ad ogni Host virtuale corrisponde un IP differente. Soluzione comoda ma poco utilizzabile quando si hanno molti domini virtuali da usare, per l'inutile spreco di indirizzi IP.
Name-Based
Apache supporta anche il virtual-hosting basato sul nome del server e non sull'IP, quindi più virtual-host Name based possono puntare allo stesso indirizzo IP. Questo richiede l'utilizzo del protocollo HTTP version 1.1, per cui non funziona con browser molto vecchi.
Il vantaggio rispetto all'IP-based è proprio quello di risparmiare indirizzi IP, in quanto è possibile avere anche migliaia di domini con lo stesso indirizzo. 

Editing visuale con VI
Una caratteristica che di solito gli utenti recriminano a VI è la possibilità di effettuare selezioni che non siano solo linee intere... 
Anche con vi è possibile fare selezioni come con gli editor moderni, basta avere una delle varianti "moderne" di VI: vim-enhanced (presente praticamente in tutte le distribuzioni).
Per verificare quale versione avete potete utilizzare il comando which:
[root@paperopoli leo]# which vi
/bin/vi
una volta ottenuta l'informazione potete controllare con ls -la se avete l'originale o una versione "evoluta":
[root@paperopoli leo]# ls -la /bin/vi
lrwxrwxrwx 1 root root 21 apr 9 12:09 vi -> /usr/bin/vim-enhanced*
Questa ad esempio è una versione evoluta, come dice il nome, allora si può utilizzare il tasto:
v che consente di marcare l'inizio di un blocco di testo. A questo punto si possono usare i tasti freccia (oppure h,j,k,l) per muoversi evidenziando il testo interessato.
In sintesi: v + TASTI FRECCIA
Una volta terminata la selezione basterà premere
x per tagliare la selezione
oppure
y per copiarla 
p per incollarla. 

Gestione degli Utenti su Linux / Unix
Unix è un sistema operativo multiuser che, oltre a root, con privilegi di amministrazione, prevede utenti di sistema (usati per eseguire processi e demoni) e utenti umani che utilizzano e accedono in vario modo al sistema.
La gestione (aggiunta, modifica, cambio password, cancellazione) degli utenti del sistema è tipicamente compito di root, che ha a disposizione su diversi sistemi Unix variegati programmi grafici o comandi testuali per queste operazioni. 
I comandi più comuni e standard per gestire gli utenti sono:
useradd [opzioni] nomeutente Aggiunge un utente al sistema. Prevede varie opzioni per definire impostazioni specifiche.
userdel [opzioni] nomeutente Elimina un'utente. Su molti Unix questo comando non cancella la home directory dell'utente. 
groupadd [opzioni] nomegruppo Aggiunge un gruppo. 
passwd [nomeutente] Modifica la password. Tutti gli utenti, tranne root, possono cambiare solo la propria password. 

Gestione dei VirtualHost su file separati di configurazione 
Per facilitare la gestione dei virtual host, per permettere l'aggiunta di nuovi domini virtuali ad amministratori che non dovrebbero avere accesso al file di configurazione generale o per qualsiasi simile necessità, è consigliabile inserire la parte di configurazione riguardante i virtual host su file separati. 
Tramite la direttiva Include possibile includere nel file di configurazione principale httpd.conf file contenenti ulteriori direttive.
Aggiunge alla direttiva principale, tutte le direttive scritte nel file indicato
Include conf/vhost.conf
E' possibile anche usare wildcard ed inserire diversi file intere directory:
Include conf/*.conf
Il caso sopra citato è comodo anche per attivare o disabilitare intere parti di configurazione rinominando semplicemente il nome del file, facendo in modo che non concluda con .conf 
Ricordarsi che ogni modifica nel file di configurazione principale o nei vari file inclusi tramite la direttiva Include richiede l'avvio del server web per essere resa operativa. 

Gestione utenti e password per l'autenticazione
Il passo successivo alla configurazione del proprio server web con un accesso tramite login e password è quello di creare un file di password e, eventualmente uno di gruppi. 
A seconda del tipo di autenticazione utilizzata (Basic o Digest) e dal modulo che gestice il check esistono varie utility, già presenti nel pacchetto base di Apache.
htpasswd
Utility per creare e gestire i file (plain-text no db o dbm) che contengono la corrispondenza user e password per l'autenticazione Basic. L'uso è molto simile al comando passwd:
Creazione del file passwd con l'inserimento del primo utente pippo
htpasswd -c /usr/local/apache/auth/passwd pippo
Aggiunta dell'utente paperino ad un file esistente
htpasswd /usr/local/apache/auth/passwd paperino
dbmmanage
Script in perl che permette di gestire i file (o meglio database) db e dbm:
Creazione dell'utente pippo con dbmmanage
dbmmanage password.dbm adduser pippo
htdigest
Utility equivalente a htpasswd (in piu' occorre specificare il realm) ma per l'autenticazione digest:
Creazione del file passwd con l'inserimento del primo utente
htdigest -c /usr/local/apache/auth/passwd "area clienti" pippo