Configurazione dell'accesso alla console

Quando gli utenti standard (non root) si collegano a un computer in modo locale, ricevono due tipi di autorizzazione speciale:

  1. Eseguono alcuni programmi che non possono eseguire in altro modo.

  2. Accedono ad alcuni file (solitamente file device usati per accedere a dischetti, CD-ROM ecc.) a cui non possono accedere in altro modo.

Poiché su un unico computer ci sono più console e più utenti si possono collegare contemporaneamente in modo locale, uno degli utenti deve "vincere" la gara per accedere ai file. Il primo utente che si collega alla console diventa proprietario dei file. Una volta che il primo utente si è scollegato, il secondo utente che si collega diventa proprietario dei file.

Invece, ogni utente che si collega alla console è autorizzato a lanciare programmi che eseguono task normalmente riservati all'utente root. Se X Window è in esecuzione, queste azioni possono essere incluse come voci di menu in un'interfaccia utente grafica. Alla consegna, i programmi accessibili dalla console includono halt, poweroff e reboot.

Disattivazione di Shutdown tramite Ctrl-Alt-Canc

/etc/inittab specifica per default che il sistema è impostato in modo da fermarsi e riavviarsi tramite la combinazione di tasti Ctrl-Alt-Canc. Se desiderate disattivare completamente questa funzione, commentate il link seguente in /etc/inittab:

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

Altrimenti potete decidere di dare solo ad alcuni utenti non root l'autorizzazione di fermare il sistema dalla console usando la combinazione di tasti Ctrl-Alt-Canc. Per limitare questo privilegio ad alcuni utenti, seguite questa procedura:

  1. Aggiungete l'opzione -a alla linea /etc/inittab:

    ca::ctrlaltdel:/sbin/shutdown -a -t3 -r now

    -a chiede a shutdown di cercare il file /etc/shutdown.allow, creato nel prossimo punto.

  2. Create un file chiamato shutdown.allow in /etc. Il file shutdown.allow deve elencare i nomi utente di tutti gli utenti che possono fermare il sistema con la combinazione di tasti Ctrl-Alt-Canc. Il file /etc/shutdown.allow è un elenco di nomi utente posizionati uno per riga:

    stefano
    giacomo
    sofia

Nel file shutdown.allow di esempio, Stefano, Giacomo e Sofia possono fermare il sistema dalla console usando la combinazione di tasti Ctrl-Alt-Canc. Quando viene usata questa combinazione di tasti, il file shutdown -a in /etc/inittab verifica se qualche utente in /etc/shutdown.allow (o root) è collegato a una console virtuale. In caso positivo, l'arresto del sistema prosegue, in caso negativo, un messaggio di errore viene trasmesso alla console del sistema.

Per maggiori informazioni, consultate la pagina man di shutdown.

Disattivazione dell'accesso ai programmi della console

Per disattivare l'accesso degli utenti ai programmi della console, eseguite questo comando come root:

rm -f /etc/security/console.apps/*

In ambienti dove la console è protetta in altro modo (le password BIOS e LILO sono impostate, la combinazione di tasti Ctrl-Alt-Canc è disattivata, i pulsanti di accensione e di reset sono disabilitati ecc.), non è raccomandabile autorizzare l'accesso di utenti alla console dove possono eseguire poweroff, halt e reboot, accessibili dalla console per default.

Per annullare queste funzioni, eseguite questo comando come root:

rm -f /etc/security/console.apps/poweroff
rm -f /etc/security/console.apps/halt
rm -f /etc/security/console.apps/reboot

Disattivazione di qualsiasi accesso alla console

Il modulo PAM pam_console.so gestisce l'autenticazione e le autorizzazioni dei file della console (vedere il Capitolo 8 per maggiori informazioni sulla configurazione di PAM). Se desiderate disattivare qualsiasi accesso alla console, compreso ai programmi e ai file, commentate tutte le righe che si riferiscono a pam_console.so nella directory /etc/pam.d seguendo questo script:

cd /etc/pam.d
for i in * ; do
sed '/[^#].*pam_console.so/s/^/#/' < $i > foo && mv foo $i
done

Configurazione della console

Il modulo pam_console.so utilizza il file /etc/security/console.perms per determinare le autorizzazioni di accesso alla console degli utenti. La sintassi del file è molto flessibile; potete modificare il file affinché queste istruzioni non vengano più applicate. Tuttavia, il file di default contiene una riga simile a:

 <console>=tty[0-9][0-9]* :[0-9]\.[0-9] :[0-9]

Quando gli utenti effettuano il log in, sono collegati a una specie di terminale, un server X chiamato :0 o mymachine.example.com:1.0 oppure un dispositivo come /dev/ttyS0 o /dev/pts/2. Per default conviene determinare quali console virtuali e server X saranno considerati locali, ma se volete configurare il terminale seriale vicino a voi sulla porta /dev/ttyS1 affinché sia anch'esso locale, modificate la riga nel modo seguente:

<console>=tty[0-9][0-9]* :[0-9]\.[0-9] :[0-9] /dev/ttyS1

Rendere i file accessibili dalla console

/etc/security/console.perms contiene una sezione simile a:

<floppy>=/dev/fd[0-1]* \
    /dev/floppy/*
<sound>=/dev/dsp* /dev/audio* /dev/midi* \
    /dev/mixer* /dev/sequencer \
    /dev/sound/*
<cdrom>=/dev/cdrom* /dev/cdwriter*

Se necessario potete aggiungere delle righe. Assicuratevi che le linee che aggiungete si riferiscano ai dispositivi corretti. Per esempio, potete aggiungere:

<scanner>=/dev/sga

Assicuratevi ovviamente che /dev/sga corrisponda veramente al vostro scanner e non, per esempio, al vostro disco fisso.

Questo è il primo passo. Nel secondo passo dovete decidere dell'"avvenire" di questi file. Esaminate l'ultima sezione di /etc/security/console.perms:

<console> 0660 <floppy> 0660 root.floppy
<console> 0600 <sound>  0640 root
<console> 0600 <cdrom>  0600 root.disk

e aggiungete una riga:

<console> 0600 <scanner> 0600 root

In seguito, quando vi collegherete alla console, riceverete la proprietà del dispositivo /dev/sga e le vostre autorizzazioni saranno 0600 (leggibili e scrivibili solo da voi). Quando vi scollegherete, il dispositivo sarà di proprietà del root il quale disporrà ancora delle autorizzazioni 0600 (leggibili e scrivibili solo da root).

Attivazione dell'accesso alla console per altre applicazioni

Se volete rendere altre applicazioni accessibili agli utenti della console, dovete semplicemente lavorare un pò di più.

Per prima cosa, l'accesso alla console solo funziona per le applicazioni che si trovano in /sbin o /usr/sbin, perciò l'applicazione che volete eseguire si deve trovare anch'essa lì. Dopo esservene accertati, seguite questa procedura:

  1. Create un link fra il nome della vostra applicazione, come il nostro programma di esempio foo, e l'applicazione /usr/bin/consolehelper:
    cd /usr/bin
    ln -s consolehelper foo

  2. Create il file /etc/security/console.apps/foo:
    touch /etc/security/console.apps/foo

  3. Create un file di configurazione PAM per il servizio foo in /etc/pam.d/. Vi consigliamo di iniziare con una copia del servizio di arresto del file di configurazione PAM e di modificare il file se volete modificarne il comportamento:
    cp /etc/pam.d/halt /etc/pam.d/foo

D'ora in poi l'esecuzione di /usr/bin/foo richiamerà consolehelper che, con l'aiuto di /usr/sbin/userhelper, autenticherà l'utente chiedendo la password utente se /etc/pam.d/foo è una copia di /etc/pam.d/halt (nel caso contrario, farà esattamente ciò che è specificato in /etc/pam.d/foo), quindi esegue /usr/sbin/foo con delle autorizzazioni root.