/etc/skel; ¿Qué es y qué podemos hacer con él?

Publicado el 13 julio 2016 por Drassill
El mundo de Linux es muy basto y adentrarse en cada una de sus características no es tarea fácil; en más de una ocasión podemos ver una serie de ficheros y directorios que, sabemos que están, pero que no sabemos qué hacen... Somos conscientes de que cada fichero o directorio cumple su labor, pero no sabemos qué función pueden cumplir o qué pasaría en caso de que éstos, por el motivo que sea, acabasen corruptos. Uno de esos directorios que pueden pasar inadvertidos es el directorio skel. ¿Qué hace y por qué se encuentra dentro del directorio etc? Puede parecer un fichero poco llamativo, pero cumple una función crucial relacionada con el comando adduser. La generación de unos ficheros y directorios pre-definidos para cada nuevo usuario.

Para entenderlo bien, lo mejor sería revisar el fichero de configuración de adduser; llamado /etc/adduser.conf. Dicho fichero de configuración establece las directivas que tiene que seguir el comando adduser cada vez que se añade un nuevo usuario... Es decir que con dicho fichero podemos modificar su comportamiento. Si observáis bien el contenido del fichero en cuestión veréis la siguiente línea:
SKEL=/etc/skel
Dicha línea se encarga de definir qué directorio servirá de "plantilla" para el contenido del directorio home de cada nuevo usuario que vayamos generando. La mejor forma de comprobarlo sería ejecutando un pequeño comando sobre el directorio skel tal que así:
ls-la/etc/skel
Con dicho comando haríamos un listado detallado del contenido del directorio, incluyendo los ficheros ocultos (cuyo nombre empezaría por .), que son los que generalmente van incluidos en todo directorio home, que serían los ficheros: .profile, .bashrc y .bash_logout.  Esto de por sí nos viene muy bien, pues supongamos que queremos que todo nuevo directorio home incluya un script que, por ejemplo, expulse al resto de usuarios que no sean ellos. se podría incluir un script con el nombre expulsor.sh con el siguiente contenido:
  1. #!/bin/bash
  2. $(who |grep -v $(whoami) |awk '{print $2}' > /tmp/resto.txt)
  3. while read SESION
  4. do
  5.         sudo pkill -9 -t ${SESION}
  6. done < /tmp/resto.txt

Al script en cuestión, por cuestiones de seguridad, haríamos que únicamente pudiese ser leído y ejecutado por el nuevo usuario pero que nadie más tuviese acceso a éste, lo cual traducido en permisos quedaría como:
chmod 500/etc/skel/expulsor.sh
Ahora quedaría la "prueba de fuego": Basta con crear un nuevo usuario mediante el comando adduser con el fin de ver nuestro nuevo script incluido automáticamente dentro del directorio home. En mi caso en concreto he creado un usuario nuevo llamado skeletico, para después consultar el contenido del nuevo directorio home.

Ahora cada nuevo usuario sería capaz de "expulsar" al resto de usuarios de sus sesiones activas, siempre y cuando (obviamente) tenga permisos de superusuario.
Como podéis ver, skel puede servirnos como un poderoso generador de plantillas para los nuevos usuarios que creemos, evitándonos tener que hacer tareas duplicadas y ahorrándonos un tiempo considerable; especialmente si hablásemos de un número alto de nuevos usuarios.
Espero que os haya resultado útil.
Saludos.