Red Hat Linux 7.0: The Official Red Hat Linux Reference Guide | ||
---|---|---|
Anterior | Capítulo 2. Administración del Sistema | Siguiente |
Cuando usuario normales (no root) entran al ordenador localmente, acceden al teclado, se les asigna dos tipos especiales de permisos: pueden ejecutar ciertos programas que de otra forma no podrían, y pueden acceder a ciertos archivos (normalmente archivos de dispositivos especiales utilizados para el accesso a disquettes, CD-ROMs, y otros) que de otra forma no podrían utilizar.
Ya que hay múltiples consolas en un solo ordenador, y múltiples usuarios pueden estar conectados al ordenador localmente al mismo tiempo, uno de los usuario tiene que "ganar" la batalla de acceso a los archivos. El primer usuario que se conecta en la consola es el dueño de los archivos. Una vez que el primer usuario se desconecta, es el siguiente usuario que se conecta el que poseerá los archivos.
Por contra, cada usuario que se conecta en la consola tendrá permitido ejecutar programas normalmente restringidos al usuario root. Por defecto, esos programas verificarán la contraseña del usuario. Se hará graficamente si las X están ejecutándose lo que hace posible incluir estas acciones como elementos de menú en un interfaz gráfico de usuario. De salida, los programas accesibles desde la consola son shutdown, halt, y reboot.
En entornos donde la consola se encuentra asegurada (la BIOS y el LILO tienen contraseña, Ctrl-Alt-Delete está deshabilitado, los interruptores de encendido y reinicio están desactivados, etc.), puede no ser deseable permitir arbitrariamente el que usuarios en la consola ejecuten shutdown, halt, y reboot.
Para desactivar todo el acceso de usuarios en consola a programas de consola, hay que ejecutar el comando:
rm -f /etc/security/console.apps/* |
Para desactivar el acceso a la consola totalmente, incluyendo ejecución de programas y acceso a archivos, descomentar todas las líneas que se refieren a pam_console.so en el directorio /etc/pam.d/. El siguiente script lo hará fácilmente:
cd /etc/pam.d for i in * ; do sed '/[^#].*pam_console.so/s/^/#/' < $i > foo && mv foo $i done |
El archivo /etc/security/console.perms define el grupo de consola. La sintaxis del fichero es muy flexible; se puede editar el archivo par que estas instrucciones no sean de aplicación. Sin embargo, el fichero por defecto tiene una línea como esta:
<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 la consolas locales virtuales y los servidores locales de X se considerán local, 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 |
En /etc/security/console.perms, hay una sección con líneas como:
<floppy>=/dev/fd[0-1]* <cdrom>=/dev/cdrom <jaz>=/dev/zip |
Se pueden añadir nuevas líneas:
<scanner>=/dev/sga |
(Por supuesto, hay que asegurarse que /dev/sga es de verdad el escaner y no, por ejemplo, el disco duro.)
Esa es la primera parte. La segunda parte consiste en definir que se hace con esos ficheros. En la última sección /etc/security/console.perms hay líneas similares a:
<console> 0660 <floppy> 0660 root.floppy <console> 0600 <cdrom> 0600 root.disk <console> 0600 <jaz> 0660 root.disk |
se puede añadir otra como:
<console> 0600 <scanner> 0600 root |
Ahora, al conectarse en la consola, se conseguirá ser dueño de el dispositivo /dev/sga y los permisos serán 0600 (lectura y escritura sólo por el dueño). Al desconectar, el dispositivo será poseído por root y tendrá todavía permisos 0600 (ahora legible y escribible sólo por root).
Si se quiere que otras aplicaciones aparte de shutdown, reboot, y halt sean accesible a usuarios desde la consola, habrá que trabajar un poquito más.
Lo primero de todo, el acceso desde la 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í.
Hay que crear un enlance del nombre de la aplicación a /usr/bin/consolehelper:
cd /usr/bin ln -s consolehelper foo |
Hay que crear el archivo /etc/security/console.apps/foo:
touch /etc/security/console.apps/foo |
Crear a continuación un fichero de configuración PAM para el servicio foo en /etc/pam.d/. Lo mejor es empezar con una copia del servicio de shutdown ("cierre del sistema") y modificarlo adecuadamente para cambiar su comportamiento:
cp /etc/pam.d/shutdown /etc/pam.d/foo |
Ahora, al ejecutar /usr/bin/foo, consolehelper será llamado, lo cual, con ayuda de /usr/sbin/userhelper autenticará al usuario (pidiendo la contraseña si /etc/pam.d/foo es una copia de /etc/pam.d/shutdown; haciendo, en otro caso, lo que esté especificado en /etc/pam.d/foo), ejecutando después /usr/sbin/foo con permisos de root.