Configuración avanzada
Carpeta "Skel"
En este apartado vamos a crear una plantilla que
nos permita a partir de ella crear nuevos usuarios con unas determinadas
configuraciones en cuanto a aspecto del escritorio, permisos por defecto de
archivos y carpetas así como valores en variables de entorno. Para ello
utilizaremos el directorio /etc/skel. El directorio /etc/skel
es bastante simple de configurar y usar. El directorio /etc/skel contiene ficheros y directorios que son automáticamente
copiados al directorio home del
usuario cuando un nuevo usuario es creado utilizando el programa de línea de
comando useradd o bien
desde el entorno gráfico (Sistema->Administración->Usuarios
y grupos).
Un directorio home, también denominado directorio
de login, es un directorio en los sistemas operativos Linux/Unix que sirve como
repositorio o almacén para los ficheros personales del usuario, directorios y
programas, incluyendo los ficheros de configuración personales. También es el
directorio donde el sistema nos ubica después de loguearnos ante el sistema.
Si queremos estar seguros que todos los usuarios
de nuestro sistema tengan la misma configuración inicial, los cambios los
deberemos realizar en el /etc/skel
En este caso vamos a utilizar como plantilla la
configuración de escritorio del usuario
alumno creado anteriormente.
Configuraremos en primer lugar el contenido del escritorio para este usuario.
Para ello iniciaremos sesión como usuario alumno. Una vez iniciada sesión
añadiremos varios accesos directos al escritorio. Empezaremos añadiendo un
acceso directo a la calculadora. Para
ello seleccionamos
Aplicaciones->Accesorios->Calculadora->Añadir este lanzador al escritorio.
Como podemos ver en la siguiente figura, como consecuencia de la acción anterior se habrá añadido al escritorio un acceso directo o enlace a la calculadora.
Continuaremos haciendo la misma operación para otras aplicaciones para las cuales queramos que el usuario cuente con un acceso directo en su escritorio. Será el caso del procesador de textos de OpenOffice, la hoja de cálculo de OpenOffice, el navegador Firefox, la herramienta de dibujo Gimp, etc., tal como podemos ver en la siguiente figura.
A continuación saldremos de sesión y volveremos a iniciar sesión esta vez como usuario profesor. Lanzaremos una terminal y desde la misma escribiremos los siguientes comandos:
cd /etc
sudo cp –Rf skel skel.org
ls –la skel*
El primero de ellos nos situará en el directorio /etc. Con el segundo haremos una copia recursiva del contenido del directorio skel, antes de modificarlo, al directorio skel.org. Esto lo hacemos como medida preventiva por si algo saliese mal al configurar el directorio skel. Como la copia implica a ficheros y directorios que son propiedad del root la realizaremos mediante el comando sudo. El comando sudo nos pedirá que nos identifiquemos mediante nuestra contraseña (la del usuario profesor con la que hemos iniciado sesión). Este comando nos pedirá la contraseña sólo si durante los últimos 5 minutos no hemos utilizado sudo acreditándonos de forma conveniente. Por último haremos un listado del contenido de ambos directorios, el skel original (skel) y su copia (skel.org), comprobando que ambos tienen los mismos archivos y carpetas.
Después de esto vamos a editar el fichero .profile que se encuentra en la carpeta skel. Para ello introducimos el siguiente comando:
sudo gedit /etc/skel/.profile
El sistema nos solicitará que nos acreditemos para poder realizar la edición del archivo .profile. Esta acreditación sólo será necesaria si han transcurrido más de 5 minutos desde que nos acreditamos por última vez mediante sudo. El propósito de editar el archivo .profile es porque el mismo almacena el perfil de inicio de sesión del usuario. En él estableceremos la máscara de permisos de usuario mediante el comando umask y configuraremos también el valor de la variable de entorno PATH.
La máscara de permisos de usuario es un conjunto de permisos dados en notación octal que se detraen (se restan) del total de permisos que se pueden establecer para directorios y ficheros cada vez que se crea un directorio o un fichero. La máscara sirve para automatizar el proceso de asignación de permisos a las carpetas y nuevos ficheros que creemos. Los permisos por defecto para un directorio valen 777 en octal, mientras que los permisos por defecto de un fichero valen 666 en octal. Estos permisos se obtienen de la siguiente manera: para cada fichero/carpeta se pueden establecer tres tipos de permisos diferentes en función de quién quiere acceder a dicho fichero o carpeta. Estos permisos son: lectura (identificado como r), escritura (identificado como w) y ejecución (identificado como x). El permiso de lectura permite acceder al contenido de un fichero o directorio, el permiso de escritura permite modificar el contenido de un fichero o directorio, y el permiso de ejecución permite ejecutar un archivo (si se trata de un fichero ejecutable o bien de un script de comandos) o bien pasar (atravesar un directorio). Las tres categorías de usuarios posibles desde el punto de vista del acceso a un determinado fichero o directorio son: su propietario (normalmente la persona que lo crea, identificado como u), el grupo de usuarios principal al que pertenece el propietario (identificado como g), y los usuarios que no son el propietario ni forman parte del grupo del propietario (los otros, identificados como o). Cada tipo de permiso para cada categoría de usuario tiene una valoración en octal, la cual se muestra a continuación:
|
lectura (r) |
escritura(w) |
ejecución(x) |
Todos permisos (rwx) |
propietario (u) |
400 |
200 |
100 |
700 |
grupo (g) |
40 |
20 |
10 |
70 |
otros (o) |
4 |
2 |
1 |
7 |
Para todo (ugo) |
444 |
222 |
111 |
777 |
Siguiendo la tabla anterior es muy fácil calcular que un fichero que tenga el permiso de lectura y escritura para el propietario, permiso de lectura para el grupo del propietario y ningún permiso para el resto de usuarios tendrá unos permisos expresados en octal de (propietario=lectura+escritura=400+200=600)+(grupo=lectura=40)+(otros=0)=600+40+0=640.
Cuando creamos un fichero o una carpeta, deberemos establecer los permisos para
la misma bien desde la línea de comandos con el comando
chmod o bien desde el menú contextual del objeto desde
Propiedades
(pestaña Permisos). Este proceso
puede resultar tedioso y repetitivo si siempre queremos establecer los mismos
permisos para carpetas y ficheros. Una forma de automatizarlo es dándole un
valor a la máscara de usuario mediante el comando umask. Este valor representa los permisos que queremos quitar del
total de permisos. Así, si la máscara es 022, estamos quitando permiso de
escritura para el grupo (20) y para
los otros (2) cada vez que creemos un
nuevo fichero o directorio. Si ése es el valor de la máscara y creamos un
fichero, éste tendrá como permisos reales
644
(lectura y escritura para el propietario, lectura para el grupo y lectura
para los otros) que resultan de restarle al total de permisos por defecto para
un archivo (666) el valor de la máscara (022), es decir, 666-022=644 en octal.
La máscara debe de establecerse en uno de los ficheros que se ejecutan al
iniciar sesión el usuario dentro del sistema y como uno de ellos es el .profile, y el existente en el
directorio home de cada usuario se copia del .profile existente en el directorio /etc/skel, éste es un buen lugar para hacer los cambios en la
máscara de usuario sabiendo que a partir de este momento cualquier usuario que
creemos tendrá una copia del .profile
del
/etc/skel.
En nuestro caso, quitaremos el comentario (borramos el carácter #) de la línea en la que aparece el comando umask en el /etc/skel, tal y como puede verse en la siguiente figura.
El otro elemento que cambiaremos en el fichero es la variable de entorno PATH. PATH es una variable de entorno que almacena una lista de directorios donde el sistema va a buscar los ejecutables cada vez que escribimos el nombre de un ejecutable o un comando desde la línea de comandos de una terminal. Los nombres de los directorios que aparecen en el PATH están separados por el carácter :. En nuestro caso agregaremos a la lista de directorios el directorio actual en el que se encuentre cada momento el usuario, el cual viene representado por el carácter punto (.). Para ello agregaremos al PATH dicha entrada como se puede observar en la siguiente figura.
Una vez realizados estos cambios en el fichero /etc/skel guardaremos los cambios como se muestra en la siguiente figura.
Sólo nos queda copiar, al directorio /etc/skel, las carpetas del directorio personal del usuario alumno donde se encuentra la configuración del escritorio y del gestor de ventanas gnome. Una vez copiadas al directorio /etc/skel, estas carpetas serán copiadas al directorio home de los usuarios cada vez que creemos uno nuevo, quedando configurado el aspecto del escritorio, su máscara y su PATH, a partir de la plantilla almacenada en /etc/skel.
Desde una terminal escribiremos los siguientes comandos:
cd /etc/skel
sudo cp –rf /home/alumno/Escritorio .
sudo cp –rf /home/alumno/.gconf .
sudo cp –rf /home/alumno/.gnome2 .
sudo cp –rf
/home/alumno/.gnome2_private .
Con el primer comando nos situamos en el directorio /etc/skel si no nos encontrábamos ya en él. Con los cuatro comandos siguientes copiamos las carpetas que contienen la configuración del escritorio y de gnome del usuario alumno a la carpeta /etc/skel.
Por último nos queda demostrar que la plantilla funciona. Para ello crearemos un nuevo usuario desde Sistema->Administración->Usuarios y grupos.
En la ventana de Configuración de los usuarios pulsaremos sobre el botón Desbloquear.
Al intentar realizar una acción que requiere privilegios se nos pide que nos identifiquemos introduciendo la contraseña del usuario profesor que es el que hemos utilizado para iniciar sesión.
Una vez introducida la contraseña se desbloquean los botones que antes aparecían bloqueados en la ventana de Configuración de los usuarios. Pulsaremos sobre el botón Añadir usuario para crear un nuevo usuario.
En la ventana Cuenta de usuario nueva siguiente introduciremos los datos del usuario desde la pestaña Cuenta. En este caso hemos creado un nuevo usuario denominado alumno2.
Una vez terminado de introducir los datos de la nueva cuenta pulsaremos el botón Aceptar. Aparecerá de nuevo la ventana Configuración de los usuarios donde podremos comprobar la existencia de la nueva cuenta añadida al sistema. Pulsaremos el botón Cerrar.
Iniciaremos sesión con el nuevo usuario que acabamos de crear.
Introduciremos la contraseña del nuevo usuario.
Como podemos observar, el escritorio aparece configurado con la plantilla almacenada en /etc/skel la cual era una copia de los cambios en el escritorio que habíamos realizado para el usuario alumno, el cual nos había servido de patrón.
Tras realizar la comprobación anterior, procederemos a eliminar la cuenta alumno2 creada anteriormente, para lo cual en primer lugar cerraremos la sesión de trabajo del usuario alumno2, y tras ello nos autenticaremos en el sistema con las credenciales del usuairo profesor.
Tras ello lanzaremos Sistema->Administración->Usuarios y grupos, tal y como vemos en la ventana de la imagen inferior.
Como resultado de la acción anterior será mostrada la siguiente ventana, en la que pulsaremos directamente sobre el botón Desbloquear.
Dado que la acción que vamos a realizar requiere de permisos especiales, se nos mostrará la siguiente pantalla, en la que introduciremos la contraseña del usuario profesor.
En ese instante se desbloqueará la pantalla de Configuración de los usuarios, situándonos sobre el usuario alumno2, y tras ello pulsando sobre el botón Borrar.
Dado que la operación que vamos a realizar es crítica, el sistema nos pide confirmación a través de la siguiente pantalla, en la cual pulsaremos directamente sobre el botón Borrar.
El borrado del usuario, tal y como indica la pantalla de la imagen superior, no implica que su directorio personal sea borrado, luego deberemos borrarlo de modo manual a continuación, para lo cual lanzamos una ventana de terminal, y en ella tecleamos el comando siguiente:
sudo rm -rf /home/alumno2
Una vez completado el comando ejecutado en la ventana de la imagen superior, el directorio particular del usuario alumno2 también habrá sido borrado; podemos confirmar este extremo tecleando en dicha ventana de terminal el siguiente comando:
ls -la /home
Llegados a este punto podremos dar por concluido este apartado.