<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <TITLE>Linux Shadow Password HOWTO: Mettere al lavoro la Shadow Suite</TITLE> <LINK HREF="Shadow-Password-HOWTO-8.html" REL=next> <LINK HREF="Shadow-Password-HOWTO-6.html" REL=previous> <LINK HREF="Shadow-Password-HOWTO.html#toc7" REL=contents> </HEAD> <BODY> <A HREF="Shadow-Password-HOWTO-8.html">Avanti</A> <A HREF="Shadow-Password-HOWTO-6.html">Indietro</A> <A HREF="Shadow-Password-HOWTO.html#toc7">Indice</A> <HR> <H2><A NAME="sez-lavoro"></A> <A NAME="s7">7. Mettere al lavoro la Shadow Suite</A></H2> <P>Questo capitolo tratta alcune cose che dovete sapere ora che avete la <EM>Shadow Suite</EM> installata sul vostro sistema. Ulteriori informazioni sono contenute nelle pagine di manuale per ogni comando. <P> <H2><A NAME="ss7.1">7.1 Aggiungere, Modificare e Cancellare utenti</A> </H2> <P>La <EM>Shadow Suite</EM> ha aggiunto i seguenti comandi orientati a linea di comando per aggiungere, modificare, e cancellare utenti. Potreste anche aver installato il programma <CODE>adduser</CODE>. <P> <H3>useradd</H3> <P>Il comando <CODE>useradd</CODE> può essere usato per aggiungere utenti al sistema. Potete anche invocare questo comando per cambiare le impostazioni predefinite. <P>La prima cosa che dovreste fare è esaminare le impostazioni predefinite e apportare cambiamenti specifici per il vostro sistema: <BLOCKQUOTE><CODE> <PRE> useradd -D </PRE> </CODE></BLOCKQUOTE> <HR> <PRE> GROUP=1 HOME=/home INACTIVE=0 EXPIRE=0 SHELL= SKEL=/etc/skel </PRE> <HR> <P>Le impostazioni predefinite probabilmente non sono quelle che volete, perciò se cominciaste ad aggiungere utenti adesso dovreste specificare tutte le informazioni per ciascun utente. Comunque, possiamo e dovremmo cambiare i valori predefiniti. <P>Sul mio sistema: <UL> <LI>Voglio che il gruppo predefinito sia 100</LI> <LI>Voglio che le password scadano ogni 60 giorni</LI> <LI>Non voglio bloccare un account se la password è scaduta</LI> <LI>Voglio che la shell predefinita sia <CODE>/bin/bash</CODE></LI> </UL> Per fare questi cambiamenti userei: <BLOCKQUOTE><CODE> <PRE> useradd -D -g100 -e60 -f0 -s/bin/bash </PRE> </CODE></BLOCKQUOTE> <P>Ora eseguendo <CODE>useradd -D</CODE> darà: <HR> <PRE> GROUP=100 HOME=/home INACTIVE=0 EXPIRE=60 SHELL=/bin/bash SKEL=/etc/skel </PRE> <HR> <P>Solo nel caso voleste saperlo, questi valori predefiniti sono contenuti nel file <CODE>/etc/default/useradd</CODE>. <P>Ora potete usare <CODE>useradd</CODE> per aggiungere utenti al sistema. Per esempio, per aggiungere l'utente <CODE>fred</CODE>, usando i valori predefiniti, dovreste fare come segue: <BLOCKQUOTE><CODE> <PRE> useradd -m -c "Fred Flintstone" fred </PRE> </CODE></BLOCKQUOTE> Questo creerà la voce seguente nel file <CODE>/etc/passwd</CODE>: <BLOCKQUOTE><CODE> <PRE> fred:*:505:100:Fred Flintstone:/home/fred:/bin/bash </PRE> </CODE></BLOCKQUOTE> E la voce seguente nel file <CODE>/etc/shadow</CODE>: <BLOCKQUOTE><CODE> <PRE> fred:!:0:0:60:0:0:0:0 </PRE> </CODE></BLOCKQUOTE> Verrà creata la home directory di <CODE>fred</CODE> e il contenuto di <CODE>/etc/skel</CODE> sarà copiato là grazie all'opzione <CODE>-m</CODE>. <P>Inoltre, dato che non abbiamo specificato un UID, è stato usato il primo disponibile. <P>L'account di <CODE>fred</CODE> è stato creato, ma <CODE>fred</CODE> non sarà ancora in grado di collegarsi fino a quando sbloccheremo l'account. Facciamo questo cambiando la password. <BLOCKQUOTE><CODE> <PRE> passwd fred </PRE> </CODE></BLOCKQUOTE> <HR> <PRE> Changing password for fred Enter the new password (minimum of 5 characters) Please use a combination of upper and lower case letters and numbers. New Password: ******* Re-enter new password: ******* </PRE> <HR> Che, in italiano, sarebbe qualcosa del genere: <HR> <PRE> Cambio la password di fred Inserire la nuova password (minimo 5 caratteri) Per favore, utilizzare una combinazione di maiuscole, minuscole e cifre. Nuova Password: ******* Reinserire la nuova password: ******* </PRE> <HR> Ora <CODE>/etc/shadow</CODE> conterrà: <BLOCKQUOTE><CODE> <PRE> fred:J0C.WDR1amIt6:9559:0:60:0:0:0:0 </PRE> </CODE></BLOCKQUOTE> E <CODE>fred</CODE> potrà ora collegarsi ed usare il sistema. La cosa bella di <CODE>useradd</CODE> e degli altri programmi che vengono forniti con la <EM>Shadow Suite</EM> è che fanno cambiamenti ai file <CODE>/etc/passwd</CODE> e <CODE>/etc/shadow</CODE> in modo non interrompibile. Perciò , se state aggiungendo un utente, e contemporaneamente un altro utente sta cambiando la sua password, entrambe le operazioni verranno eseguite correttamente. <P>Dovreste usare i comandi forniti anziché editare direttamente <CODE>/etc/passwd</CODE> e <CODE>/etc/shadow</CODE>. Se voi editaste il file <CODE>/etc/shadow</CODE>, e un utente cambiasse la sua password mentre voi state editando, e poi voi salvaste il file che stavate editando, il cambiamento della password dell'utente andrebbe perso. <P>Qui c'è un piccolo script interattivo che aggiunge utenti usando <CODE>useradd</CODE> e <CODE>passwd</CODE>: <HR> <PRE> #!/bin/bash # # /sbin/newuser - Uno script per aggiungere utenti al sistema usando i # comandi useradd e passwd della Shadow Suite. # # Scritto da Mike Jackson <mhjack@tscnet.com> come esempio per il # Linux Shadow Password Howto. Viene esplicitamente concesso il # permesso di usarlo e modificarlo. # # Questo potrebbe essere modificato per mostrare i valori predefiniti # e permettere modifiche simili al programma Slackware # adduser. Potrebbe essere modificato per non permettere voci stupide # (i.e. miglior controllo degli errori). # ## # Valori predefiniti per il comando useradd ## GROUP=100 # Gruppo predefinito HOME=/home # Collocazione della home directory (/home/nomeutente) SKEL=/etc/skel # Struttura tipica di una nuova directory home. INACTIVE=0 # Giorni tra la scadenza della password e la # disabilitazione dell'account (0 = mai) EXPIRE=60 # Durata della password in giorni SHELL=/bin/bash # Shell predefinita (intero percorso) ## # Valori predefiniti per il comando passwd ## PASSMIN=0 # Giorni tra i cambiamenti della password PASSWARN=14 # Giorni prima che scada la password in cui viene # dato un avviso ## # Assicurarsi che sia root ad eseguire lo script. ## WHOAMI=`/usr/bin/whoami` if [ $WHOAMI != "root" ]; then echo "Devi essere root per aggiungere nuovi utenti!" exit 1 fi ## # Chiedere il nome utente e il nome completo. ## echo "" echo -n "Nome utente: " read USERNAME echo -n "Nome completo: " read FULLNAME # echo "Aggiunta dell'utente: $USERNAME." # # Notate che le "" intorno a $FULLNAME sono richieste perché # questo campo quasi sempre conterrà almeno uno spazio, e senza # le " il comando useradd, quando raggiunge il carattere SPAZIO, # penserebbe che vi stiate spostando sul prossimo parametro. # /usr/sbin/useradd -c"$FULLNAME" -d$HOME/$USERNAME -e$EXPIRE \ -f$INACTIVE -g$GROUP -m -k$SKEL -s$SHELL $USERNAME ## # Impostare i valori predefiniti per le password ## /bin/passwd -n $PASSMIN -w $PASSWARN $USERNAME >/dev/null 2>&1 ## # Lascia che il comando passwd chieda la password (due volte) ## /bin/passwd $USERNAME ## # Mostra ciò che è stato fatto. ## echo "" echo "Voce di /etc/passwd:" echo -n " " grep "$USERNAME:" /etc/passwd echo "Voce di /etc/shadow:" echo -n " " grep "$USERNAME:" /etc/shadow echo "Riassunto dei risultati del comando passwd:" echo -n " " passwd -S $USERNAME echo "" </PRE> <HR> <P>Usare uno script per aggiungere utenti è davvero molto più preferibile che editare direttamente i file <CODE>/etc/passwd</CODE> o <CODE>/etc/shadow</CODE> o usare un programma come il programma Slackware <CODE>adduser</CODE>. Sentitevi liberi di usare e modificare questo script per il vostro particolare sistema. <P>Per maggiori informazioni su <CODE>useradd</CODE> vedere la pagina di manuale in linea. <P> <H3>usermod</H3> <P>Il programma <CODE>usermod</CODE> viene usato per modificare le informazioni su un utente. Le opzioni sono simili a quelle del programma <CODE>useradd</CODE>. <P>Diciamo che volete cambiare la shell di <CODE>fred</CODE>, fareste ciò che segue: <BLOCKQUOTE><CODE> <PRE> usermod -s /bin/tcsh fred </PRE> </CODE></BLOCKQUOTE> Ora la voce di <CODE>fred</CODE>nel file <CODE>/etc/passwd</CODE> sarebbe diventata questa: <BLOCKQUOTE><CODE> <PRE> fred:*:505:100:Fred Flintstone:/home/fred:/bin/tcsh </PRE> </CODE></BLOCKQUOTE> Facciamo in modo che l'account di <CODE>fred</CODE> scada il 09/15/97: <BLOCKQUOTE><CODE> <PRE> usermod -e 09/15/97 fred </PRE> </CODE></BLOCKQUOTE> Ora la voce di <CODE>fred</CODE> in <CODE>/etc/shadow</CODE> diventa: <BLOCKQUOTE><CODE> <PRE> fred:J0C.WDR1amIt6:9559:0:60:0:0:10119:0 </PRE> </CODE></BLOCKQUOTE> <P>Per maggiori informazioni sul comando <CODE>usermod</CODE> vedere la pagina di manuale in linea. <P> <H3>userdel</H3> <P><CODE>userdel</CODE> fa proprio quello che vi aspettate, cancella l'account dell'utente. Semplicemente usate: <BLOCKQUOTE><CODE> <PRE> userdel -r nomeutente </PRE> </CODE></BLOCKQUOTE> Il <CODE>-r</CODE> fa sì che tutti i file nella home directory dell'utente vengano cancellati insieme alla home directory stessa. I file collocati in altri file system dovranno essere cercati e cancellati manualmente. <P>Se volete semplicemente bloccare l'account invece che cancellarlo, usate piuttosto il comando <CODE>passwd</CODE>. <P> <H2><A NAME="ss7.2">7.2 Il comando passwd e l'invecchiamento delle password</A> </H2> <P>Il comando <CODE>passwd</CODE> ha l'ovvio uso di cambiare le password. Inoltre, viene usato dall'utente <EM>root</EM> per: <UL> <LI>Bloccare (lock) e sbloccare (unlock) gli account (<CODE>-l</CODE> e <CODE>-u</CODE>)</LI> <LI>Impostare il massimo numero di giorni per cui una password rimane valida (<CODE>-x</CODE>)</LI> <LI>Impostare il minimo numero di giorni tra cambiamenti della password (<CODE>-n</CODE>)</LI> <LI>Impostare il numero di giorni di avviso che una password sta per scadere (<CODE>-w</CODE>)</LI> <LI>Impostare il numero di giorni dopo la scadenza della password prima che l'account venga bloccato (<CODE>-i</CODE>)</LI> <LI>Permettere la visualizzazione delle informazioni di account in un formato più chiaro <CODE>-S</CODE>)</LI> </UL> <P>Per esempio, diamo ancora un'occhiata a <CODE>fred</CODE> <BLOCKQUOTE><CODE> <PRE> passwd -S fred fred P 03/04/96 0 60 0 0 </PRE> </CODE></BLOCKQUOTE> Questo significa che la password di <CODE>fred</CODE> è valida, che è stata cambiata l'ultima volta il 03/04/96, che può essere cambiata in qualunque momento, scade dopo 60 giorni, fred non sarà avvertito e l'account non verrà disabilitato quando la password scadrà. <P>Questo semplicemente significa che se <CODE>fred</CODE> si collega dopo che la password scade, al collegamento gli verrà richiesta una nuova password. <P>Se decidiamo che vogliamo avvertire <CODE>fred</CODE> 14 giorni prima che la sua password scada e inattivare il suo account 14 giorni dopo che lui la lascia scadere, dovremo fare quanto segue: <BLOCKQUOTE><CODE> <PRE> passwd -w14 -i14 fred </PRE> </CODE></BLOCKQUOTE> Ora <CODE>fred</CODE> è diventato: <BLOCKQUOTE><CODE> <PRE> fred P 03/04/96 0 60 14 14 </PRE> </CODE></BLOCKQUOTE> Per ulteriori informazioni sul comando <CODE>passwd</CODE> vedere le pagine di manuale in linea. <P> <H2><A NAME="ss7.3">7.3 Il file login.defs</A> </H2> <P>Il file <CODE>/etc/login</CODE> è il file di configurazione per il programma <CODE>login</CODE> e anche per l'intera <EM>Shadow Suite</EM>. <P><CODE>/etc/login</CODE> contiene impostazioni che riguardano dall'aspetto del prompt fino alla scadenza predefinita quando un utente cambia la sua password. <P>Il file <CODE>/etc/login.defs</CODE> è abbastanza ben documentato dai commenti contenuti al suo interno. Comunque, ci sono alcune cose da notare: <UL> <LI>Contiene alcuni flag che possono essere attivati o disattivati che determinano il numero di collegamenti che vengono effettuati.</LI> <LI>Contiene puntatori ad altri file di configurazione.</LI> <LI>Contiene valori predefiniti per cose tipo l'invecchiamento delle password.</LI> </UL> <P>Dalla lista sopra potete vedere che questo è un file abbastanza importante, e dovreste essere sicuri che sia presente, e che le impostazioni siano quelle che desiderate per il vostro sistema. <P> <H2><A NAME="ss7.4">7.4 Password di gruppo</A> </H2> <P>Il file <CODE>/etc/groups</CODE> può contenere password che permettono ad un utente di diventare membro di un particolare gruppo. Questa funzione è abilitata se definite la costante <CODE>SHADOWGRP</CODE> nel file <CODE>/usr/src/shadow-AAMMGG/config.h</CODE>. <P>Se definite questa costante e poi compilate, dovete creare un file <CODE>/etc/gshadow</CODE> che contenga le password del gruppo e le informazioni di amministrazione del gruppo. <P>Quando avete creato <CODE>/etc/shadow</CODE>, avete usato un programma chiamato <CODE>pwconv</CODE>, non c'è nessun programma equivalente per creare il file <CODE>/etc/gshadow</CODE>, ma in realtà non importa, se ne occupa lui stesso. <P>Per creare il file iniziale <CODE>/etc/gshadow</CODE> fate come segue: <BLOCKQUOTE><CODE> <PRE> touch /etc/gshadow chown root.root /etc/gshadow chmod 700 /etc/gshadow </PRE> </CODE></BLOCKQUOTE> <P>Una volta che create nuovi gruppi, questi verranno aggiunti ai file <CODE>/etc/group</CODE> e <CODE>/etc/gshadow</CODE>. Se voi modificate un gruppo aggiungendo o togliendo utenti o cambiando la password del gruppo, il file <CODE>/etc/gshadow</CODE> verrà modificato. <P>I programmi <CODE>groups</CODE>, <CODE>groupadd</CODE>, <CODE>groupmod</CODE>, e <CODE>groupdel</CODE> sono forniti come parte della <EM>Shadow Suite</EM> per modificare i gruppi. <P>Il formato del file <CODE>/etc/group</CODE> è quello che segue: <BLOCKQUOTE><CODE> <PRE> nomegruppo:!:GID:membro,membro,... </PRE> </CODE></BLOCKQUOTE> Dove: <DL> <DT><B><CODE>nomegruppo</CODE></B><DD><P>Il nome del gruppo <DT><B><CODE>!</CODE></B><DD><P>Il campo che normalmente contiene la password, che ora è però situata nel file <CODE>/etc/gshadow</CODE> <DT><B><CODE>GID</CODE></B><DD><P>L'identificativo numerico del gruppo <DT><B><CODE>membro</CODE></B><DD><P>Elenco dei membri del gruppo </DL> <P>Il formato del file <CODE>/etc/gshadow</CODE> è quello che segue: <BLOCKQUOTE><CODE> <PRE> nomegruppo:password:ammin,ammin,...:membro,membro,... </PRE> </CODE></BLOCKQUOTE> Dove: <DL> <DT><B><CODE>nomegruppo</CODE></B><DD><P>Il nome del gruppo <DT><B><CODE>password</CODE></B><DD><P>La password del gruppo codificata <DT><B><CODE>ammin</CODE></B><DD><P>Elenco degli amministratori del gruppo <DT><B><CODE>membro</CODE></B><DD><P>Elenco dei membri del gruppo </DL> <P>Il comando <CODE>gpasswd</CODE> è usato solo per aggiungere o togliere amministratori e membri a o da un gruppo. Solo <CODE>root</CODE> o qualcuno appartenente all'elenco degli amministratori può aggiungere o togliere membri del gruppo. <P>La password del gruppo può essere modificata con il comando <CODE>passwd</CODE> da <EM>root</EM> o chiunque appartenga alla lista degli amministratori del gruppo. <P>Nonostante il fatto che attualmente non ci sia una pagina di manuale per <CODE>gpasswd</CODE>, digitando <CODE>gpasswd</CODE> senza alcun parametro si ottiene un elenco di opzioni. È abbastanza semplice capire come funziona il tutto una volta che avete capito i formati dei file e i concetti. <P> <H2><A NAME="ss7.5">7.5 Programmi per il controllo della consistenza</A> </H2> <P> <P> <H3>pwck</H3> <P>Il programma <CODE>pwck</CODE> viene fornito per offrire un controllo di consistenza sui file <CODE>/etc/passwd</CODE> e <CODE>/etc/shadow</CODE>. Esso controllerà ogni nome utente e verificherà che abbia quanto segue: <UL> <LI>il corretto numero di campi</LI> <LI>un nome utente univoco</LI> <LI>un valido identificatore di utente e di gruppo</LI> <LI>un valido gruppo primario</LI> <LI>una valida home directory</LI> <LI>una valida shell di login</LI> </UL> <P>Darà anche un avvertimento per ogni account privo di password. <P>È una buona idea eseguire <CODE>pwck</CODE> dopo aver installato la <EM>Shadow Suite</EM>. È anche una buona idea eseguirlo periodicamente, magari una volta alla settimana o al mese. Se usate l'opzione <CODE>-r</CODE>, potete usare <CODE>cron</CODE> per eseguirlo con una cadenza regolare e riceverne per posta il rapporto. <P> <H3>grpck</H3> <P><CODE>grpck</CODE> è il programma per il controllo della consistenza per i file <CODE>/etc/group</CODE> and <CODE>/etc/gshadow</CODE>. Esso esegue i seguenti controlli: <UL> <LI>il corretto numero di campi</LI> <LI>un nome del gruppo univoco </LI> <LI>elenco valido di membri ed amministratori</LI> </UL> <P>Dispone anche dell'opzione <CODE>-r</CODE> per rapporti automatizzati. <P> <H2><A NAME="ss7.6">7.6 Password di dial-up</A> </H2> <P>Le password di dial-up sono un altro strumento opzionale di difesa per i sistemi che permettono l'accesso tramite una linea telefonica commutata. Se avete un sistema che permette a molte persone di connettersi localmente o tramite una rete, ma volete porre dei limiti su chi possa accedere per telefono e connettersi, allora le password di dial-up fanno al caso vostro. Per abilitare le password di dial-up, dovete editare il file <CODE>/etc/login.defs</CODE> ed assicurarvi che <CODE>DIALUPS_CHECK_ENAB</CODE> sia impostato a <CODE>yes</CODE>. <P>Due sono i file che contengono informazioni di dial-up: <CODE>/etc/dialups</CODE> che contiene le tty (una per riga, senza la parte iniziale /dev). Se una tty compare nella lista, allora vengono effettuati i controlli di dial-up. <P>Il secondo file è <CODE>/etc/d_passwd</CODE>. Questo file contiene il percorso completo di una shell, seguito da una password opzionale. <P>Se un utente si collega attraverso una tty elencata in <CODE>/etc/dialups</CODE>, e la sua shell è presente nel file <CODE>/etc/d_passwd</CODE> gli sarà permesso l'accesso solo se fornirà la corretta password. <P>Un altro utile scopo per usare password di dial-up potrebbe essere quello di impostare una linea che permetta solo un certo tipo di connessione (come una connessione PPP o UUCP). Se un utente cerca di ottenere un altro tipo di connessione (i.e. un elenco di shell), deve conoscere una password per usare la linea. <P>Prima che possiate usare la caratteristica del dial-up, dovete creare i file. <P>Viene fornito il comando <CODE>dpasswd</CODE> per assegnare password per le shell nel file <CODE>/etc/d_passwd</CODE>. Vedere la pagina di manuale per ulteriori informazioni. <P> <HR> <A HREF="Shadow-Password-HOWTO-8.html">Avanti</A> <A HREF="Shadow-Password-HOWTO-6.html">Indietro</A> <A HREF="Shadow-Password-HOWTO.html#toc7">Indice</A> </BODY> </HTML>