Red Hat Linux 7.0: The Official Red Hat Linux Reference Guide | ||
---|---|---|
Indietro | Capitolo 2. Amministrazione del sistema | Avanti |
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.
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/* |
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 |
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 |
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).
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.