Configuración del acceso de consola

Cuando los usuarios normales (que no son root) se conectan a un ordenador localmente, se les dan dos tipos de permisos:

  1. Pueden ejecutar ciertos programas que de otra manera no serían capaces de ejecutar.

  2. Pueden acceder a ciertos ficheros (generalmente ficheros de dispositivos especiales usados para acceder a diskettes, CD-ROMS, etc) a los que, de lo contrario, no les sería posible acceder.

Ya que existen múltiples consolas en un solo ordenador y múltiples usuarios pueden conectarse al ordenador localmente al mismo tiempo, uno de los usuarios tiene que "ganar" la carrera para acceder a los ficheros. El primer usuario que se conecte a la consola posee esos ficheros. Una vez que el primer usuario se desconecta, el siguiente usuario que se conecte tendrá esos archivos.

Por el contrario, a cada usuario que se conecte a la consola se le permitirá ejecutar programas que realicen tareas restringidas normalmente al usuario root. Si se está ejecutando X, estas acciones pueden incluirse como menú de items en la interfaz gráfica de usuario. Los programas accesibles a consolas incluyen halt y reboot.

Deshabilitar el apagado a través de Ctrl-Alt-Supr

Por defecto, /etc/inittab especifica que su sistema está configurado para apagarse y rearrancar el sistema como respuesta a la combinación de teclas usadas en la consola Ctrl-Alt-Supr. Si quiere deshabilitar esta habilidad, necesitará añadir la siguiente línea en /etc/inittab:

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

Otra alternativa, es la de conceder a ciertos usuarios no que no son root, el derecho a shutdown el sistema desde la consola mediante Ctrl-Alt-Supr. Puede restringir este privilegio a ciertos usuarios, siguiendo los siguientes pasos:

  1. Añada una opción -a a la línea /etc/inittab mostrada anteriormente, de manera que quede así:

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

    El indicador -a le pide a shutdown que busque el fichero /etc/shutdown.allow, que creará en el siguiente paso.

  2. Cree un fichero llamado shutdown.allow en /etc. El fichero shutdown.allow debería listar los nombres de usuario de cualquier usuario al que se le permita apagar el sistema usando Ctrl-Alt-Supr. El formato del fichero /etc/shutdown.allow es una lista de nombres de usuarios, uno por línea, como sigue a continuación:

    stephen
    jack
    sophie

De acuerdo con este ejemplo de fichero shutdown.allow, stephen, jack y sophie están autorizados a apagar el sistema desde la consola usando Ctrl-Alt-Supr. Cuando se usa esa combinación de claves, el shutdown -a comprueba que cualquiera de los usuarios en /etc/shutdown.allow (o root) están conectados a una consola virtual. Si es uno de ellos, el apagado del sistema continuará; de lo contrario, aparecerá un mensaje de error escrito en la consola del sistema.

Para información ulterior sobre shutdown.allow consulte la página de manual shutdown.

Deshabilitar el acceso desde la consola a programas

Para deshabilitar el acceso de usuario a programas de consola, debería ejecutar el siguiente comando como root:

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

En entornos donde la consola se encuentra asegurada ( BIOS y LILO tienen contraseña, Ctrl-Alt-Suprimir está deshabilitado, los interruptores de encendido y reinicio están desactivados, etc.), puede que no desee permitir a ningún usuario que ejecute en la consola poweroff, halt, y reboot, que son accesibles desde la consola por defecto.

Para desactivar estas habilidades, hay que ejecutar los siguientes comandos como root:

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

Deshabilitar el acceso a la consola totalmente

El módulo PAM pam_console.so gestiona los permisos y la autentificación de los archivos de consola. (Consulte el Capítulo 8 para ulterior información sobre la configuración de PAM.) Si quiere deshabilitar el acceso a la consola totalmente, incluido el acceso a programas y ficheros, añada todas las líneas que hacen referencia pam_console.so en el directorio /etc/pam.d. El siguiente script lo hará todo:

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

Definición de la consola

El módulo pam_console.so utiliza el fichero /etc/security/console.perms para determinar los permisos de los usuarios para la consola del sistema. La sintaxis del fichero es muy flexible; puede modificar el fichero de manera que las instrucciones no se apliquen nunca más. No obstante, el fichero predeterminado tiene una línea que se parece a la siguiente:

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

Cuando los usuarios se conectan, están conectados a algún tipo de terminal con nombre, ya sea un servidor de X con un nombre como :0 o mymachine.example.com:1.0; o a un dispositivo como /dev/ttyS0 o /dev/pts/2. Por defecto se define que las consolas locales virtuales y los servidores locales de X se consideran locales, pero si se quiere se puede considerar local un puerto serie como /dev/ttyS1, cambiando esa línea a:

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

Creación de archivos accesibles desde la consola

En /etc/security/console.perms, hay una sección con líneas como:

<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*

Puede añadir sus propias líneas a esta sección , si lo considera necesario. Asegúrese de que las líneas que añada se refieren a un dispositivo apropiado. Por ejemplo, puede añadir la siguiente línea:

<scanner>=/dev/sga

(Naturalmente, asegúrese de que /dev/sga es realmente su escáner y no su disco duro.)

Éste es el primer paso. El segundo es definir lo que se ha hecho con estos archivos. Mire en la sección anterior de /etc/security/console.perms para ver líneas similares a:

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

y añada una línea como:

<console> 0600 <scanner> 0600 root

Cuando se conecte a la consola, se le dará un dispositivo de pertenencia y los permisos serán 0600 (que sólo podrá leer usted). Cuando se desconecte, el dispositivo pertenecerá a root y todavía tendrá permisos 0600 (que en este caso sólo podrá leer y escribir root).

Habilitar el acceso de consola para otras aplicaciones

Si desea que otras aplicacioness sean accesibles a los usuarios de consolas, tendrá que hacer un último esfuerzo.

Lo primero de todo, el acceso de consola sólo funciona para aplicaciones que estén en los directorios /sbin o /usr/sbin, así que la aplicación a ejecutar debe estar ahí. Una vez verificado, siga los siguientes pasos:

  1. Cree un enlace partiendo del nombre de la aplicación, como en nuestro programa de ejemplo foo, para la aplicación /usr/bin/consolehelper:
    cd /usr/bin
    ln -s consolehelper foo

  2. Cree el archivo /etc/security/console.apps/foo:
    touch /etc/security/console.apps/foo

  3. Cree un archivo de configuración de PAM para el servicio foo en /etc/pam.d/. Una forma fácil de realizarlo es empezar con una copia del archivo de configuración PAM del servicio parada y modificar el archivo si quiere cambiar el entorno:
    cp /etc/pam.d/halt /etc/pam.d/foo

A partir de ahora, cuando ejecute /usr/bin/foo, se pondrá en contacto con consolehelper, que autentificará al usuario con la ayuda de /usr/sbin/userhelper. Para autentificar el usuario, consolehelper le pedirá la contraseña de usuario si /etc/pam.d/foo es una copia de /etc/pam.d/halt (de lo contrario, hará lo que está especificado en /etc/pam.d/foo) y, por consiguiente, ejecutará /usr/sbin/foo con permisos de root.