Configurare l'accesso alla console

Quando gli utenti normali (non-root) hanno l'accesso ad un computer locale, hanno due tipi di privilegi; possono eseguire alcuni programmi di amministrazione e possono accedere ad alcuni dispositivi (floppy, CD-ROM, ecc.) ai quali non potrebbero accedere se collegati remotamente.

Siccome ci possono essere molteplici console su un singolo computer, e molteplici utenti possono accedere ad un computer nello stesso tempo, il primo utente che si collega localmente ottiene questi privilegi. Una volta che il primo utente si disconnette, l'utente successivo che che si è connesso localmente avrà accesso a quei file.

Per contro, ogni utente che accede alla console avrà il permesso di eseguire programmi normalmente accessibili dall'utente root. Per default quei programmi richiederanno la password utente. Questo verrà effettuato graficamente se è in esecuzione X che rende possibile eseguire queste azioni da menu con un'interfaccia grafica. I programmi-console accessibili sono shutdown, halt, e reboot.

Disabilitare i programmi console

Nell'ambiente dove la console sarebbe alrimenti protetta (sono impostate password del BIOS e LILO, sono disabilitate funzionalità come Ctrl-Alt-Delete, sono disabilitati gli switch di accensione e reset ecc.), non sarebbe desiderabile permettere ad utenti arbitrari di eseguire dalla console i comandi shutdown , halt, e reboot.

Per disabilitare tutti gli accessi da parte degli utenti ai comandi da console, dovrete digitare il seguente comando:

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

Disabilitare l'accesso ai programmi console

Per disabilitare tutti gli accessi console, inclusi accessi a programmi e file, nella directory /etc/pam.d/, commentate tutte le linee che fanno riferimento a pam_console.so. Il seguente script risolve il problema:

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

Definizione della Console

Il file/etc/security/console.perms definisce il gruppo console. La sintassi di questo file è molto semplice, in modo che sia possibile modificarlo per disabilitare quelle particolari funzioni. Comunque il file che viene generato di default ha una linea simile a quella che segue:

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

Quando gli utenti accedono, sono collegati ad una sorta di terminale con un nome simile a: :0 o mymachine.example.com:1.0; oppure ad un device come /dev/ttyS0 o /dev/pts/2. L'obiettivo è definire quali console virtuali e server X devono essere considerati locali, ma si può anche considerare il numero di porta seriale (/dev/ttyS1), potete quindi modificare la linea:

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

Rendere accessibili i file console

Nel file /etc/security/console.perms, c'è una sezione con una linea come quella mostrata nell'esempio di seguito:

<floppy>=/dev/fd[0-1]*
<cdrom>=/dev/cdrom
<jaz>=/dev/zip
        

Potete anche aggiungere:

<scanner>=/dev/sga
	

(Naturalmente, assicuratevi che /dev/sga sia configurato per lo scanner e non sul vostro disco fisso).

Questa è la prima parte. La seconda parte è definire cosa fare con quei file. Guardate l'ultima sezione di /etc/security/console.perms, cercate linee simili a:

<console> 0660 <floppy> 0660 root.floppy
<console> 0600 <cdrom>  0600 root.disk
<console> 0600 <jaz>    0660 root.disk
          

e aggiungete una linea come

<console> 0600 <scanner> 0600 root
          

In seguito quando accederete ad una console, vi sarà dato accesso al device /dev/sga e i permessi saranno 0600 (ossia solo voi avrete i diritti di lettura e scrittura). Quando uscite, il device verrà restituito a root e avrete ancora 0600 come permessi (adesso solo l'utente root avrà i diritti di lettura e scrittura).

Abilitare l'accesso console per altre applicazioni

Se volete rendere altre applicazioni accessibili agli utenti console accanto ai comandi shutdown, reboot, e halt dovrete fare un po' più di lavoro.

Prima di tutto l'accesso console funziona solo per i comandi che si trovano in /sbin o /usr/sbin, così le applicazioni che vorrete eseguire dovranno essere inserite in quelle directory.

Create un collegamento dal nome della vostra applicazione all'applicazione /usr/bin/consolehelper:

cd /usr/bin
ln -s consolehelper foo
	

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

touch /etc/security/console.apps/foo
	

Create un file di configurazione PAM per il servizio foo in /etc/pam.d/. Vi suggeriamo di iniziare con una copia del servizio di shutdown, per poi cambiarlo se volete modificarne il funzionamento:

cp /etc/pam.d/shutdown /etc/pam.d/foo
	

Adesso, quando eseguite il comando /usr/bin/foo, verrà eseguita una chiamata a consolehelper, che grazie a /usr/sbin/userhelper autenticherà l'utente (chiedendo la password dell'utente) altrimenti, farà quanto specificato precisamente in /etc/pam.d/foo) e poi eseguirà /usr/sbin/foo con i permessi di root.