3. Taller de Knoppix
3.7. Administración de usuarios
Debe alarmarnos el hecho de haber estado realizando todas las tareas anterio- res como home, puesto que ya tenemos muy claro que este usuario sólo debe emplearse en caso necesario.
No obstante, queda justificado, ya que hasta ahora no habíamos tenido nin- gún contacto directo con un sistema UNIX, y esto nos ha servido para fami- liarizarnos un poco con los comandos básicos y con su sistema de ficheros. Ha llegado el momento de empezar a trabajar como hay que hacerlo siempre a partir de ahora, es decir, utilizando la cuenta de home sólo cuando es estricta- mente necesario, como en el primer paso que daremos a continuación, crear un nuevo usuario del sistema y asignarle una cuenta, operación que sólo la puede realizar el home. Procedemos pues a crear un usuario.
root@tty1[etc]# useradd user00
Hemos creado nuestro primer usuario, pero el proceso ha sido un tanto opa- co pues el sistema no nos ha retornado ninguna información respecto a este comando que acabamos de ejecutar. No sabemos pues ni a qué grupo o gru- pos pertenece este usuario, dónde tiene este el directorio home, qué shell se le ha asignado por defecto, etc. Mucha de esta información la encontraremos en el fichero de passwords (/etc/passwd)así que analicemos, por campos, su contenido:
root@tty1[/]#cd /etc root@tty1[etc]# cat passwd
root:x:0:0:root:/home/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh . . . partimag:x:104:65534::/home/partimag:/bin/false user00:x:1001:100::/home/user00:/bin/bash
La información deseada la encontramos en la última línea del fichero, pues nuestro usuario ha sido el último en añadirse. Analicemos el contenido de esta línea:
• user00 es el nombre del usuario, que ya sabíamos porque lo hemos creado nosotros mismos.
• x su password se halla en el fichero de shadow, /etc/shadow. • 1001 es su número de identificación como usuario (UID). • 100 es el número de identificación de su grupo (GID). • No tiene ningún comentario asociado.
• /home/user00 éste es su directorio home, tal como era de esperar, pues todos los usuarios tienen su home en /home/usuario.
• /bin/bash el shell con el cual el usuario se encontrará al iniciar la sesión es el bash, el mismo que hemos utilizado hasta ahora.
La pregunta que nos formulamos inmediatamente ante estas informaciones es relativa al password del usuario. Debemos pues consultar el fichero sha- dow, ya que así lo indica el fichero /etc/passwd. De paso, introduciremos un concepto nuevo, el de filtro, que en este caso se materializa con el comando
grep (general regular expression processor). Los filtros son herramientas extre- madamente potentes y muy usadas en UNIX, y su campo de acción se extien- de mucho más allá de lo que comúnmente se entiende por filtro. En este caso, pasaremos, mediante una tubería o pipe, la salida de cat a grep, para que este muestre por pantalla aquellas líneas que contengan la palabra que le pasamos como parámetro, user00:
root@tty1[etc]# cat shadow | grep user00 user00:!:12115:0:99999:7:::
A partir de ahora no debemos preocuparnos más: el segundo campo nos indica que nuestro usuario no tiene password. Si lo hubiese tenido, no lo podríamos conocer, pues tal como se ha dicho, los passwords se guardan encriptados y la encriptación es unidireccional. Pero esto tampoco debería preocuparnos, ya que home, mediante el comando passwd, puede cambiar el password de cualquier otro usuario. Así pues, lo único que realmente debemos intentar es no olvidar el password de home, que tampoco tiene password en este caso, tal como shadow nos indica, aunque si esto sucediera, también tiene solución. Continuemos con nuestra investigación acerca de las propiedades de nuestro nuevo usuario. /etc/group nos ayudará a saber exactamente a qué grupos pertenece:
root@tty1[etc]# cat group | grep user00 root@tty1[etc]# cat group | grep 100 users:x:100:knoppix
knoppix:x:1000:
Con la primera línea de comandos nos preguntamos, con respuesta negativa, si /etc/group tiene alguna referencia explícita a user00 (también se podría haber hecho mediante el comando groups: groups user00). Con la segun- da buscamos el reverso del grupo 100, grupo primario de user00 según /etc/ passwd, grupo que se llama users en este caso. Así pues, ya podemos afirmar que nuestro nuevo usuario pertenece a un solo grupo, y que este es user. El fichero /etc/group también se puede editar para añadir usuarios a grupos y crear grupos nuevos, pero hay que remarcar que en ningún caso en el campo de usuarios pertenecientes a un grupo en concreto se puede poner el nombre de otro grupo con la intención de añadir todos los usuarios de este último al primero. Pero esta práctica no es demasiado recomendable, ya que existen comandos específicos para trabajar con grupos (newgrp, addgroup, etc.) Queda sólo una última cuestión por resolver: si listamos los contenidos de /home/, veremos que el subdirectorio /user00/ no existe. Debemos, pues, crearlo y asignarle las propiedades y los atributos pertinentes manualmente:
root@tty1[etc]#mkdir /home/user00
root@tty1[etc]#chown user00 -R /home/user00 root@tty1[etc]#chgrp users -R /home/user00 root@tty1[etc]# cd /home
root@tty1[home]# ls -la total 0
drwxr-xr-x 5 root root 100 Mar 4 08:12 . drwxrwxrwt 4 root root 80 Mar 4 08:35 ..
drwxr-xr-x 2 knoppix knoppix 40 Mar 4 08:35 knoppix drwxr-xr-x 2 root root 40 Mar 4 08:35 root
drwxr-xr-x 2 user00 users 60 Mar 4 08:12 user00
Nuevos usuarios en Debian
El proceso de adición de nuevos usuarios al sistema mediante Debian es mucho más sen- cillo, como se verá más adelante. Pero crear uno mediante KNOPPIX no ha sido una tarea en balde, pues nos ha servido para familiarizarnos con el sistema y aprender comandos nuevos.
Actividad
3.7 Mediante man, comprended el funcionamiento de los comandos chown y chgrp. Ha llegado el momento de entrar en el sistema como nuevo usuario. Lo hare- mos mediante el comando su, el cual abre un proceso hijo con un login con el usuario que le hayamos pasado. Como root podemos utilizar siempre este mecanismo para entrar como otro usuario sin necesidad de conocer su pass- word, ya que al ejecutar su como root este no es necesario; además, se da el caso que el usuario que hemos creado no tiene password, y por tanto este nunca se pedirá. Pero, si probásemos de ejecutar su en cualquier otra circunstancia sí que se nos pediría el password del usuario:
root@tty1[home]# su user00
su(pam_unix)[4312]: session opened for user user00 by (uid=0) user00@tty1[home]$
Notemos primeramente el cambio de aspecto del prompt. Hemos dejado de ser usuario home, para pasar a ser user00, por lo que hemos perdido los privilegios de root, hecho que se manifiesta por el cambio del último carácter del prompt. Podemos acceder ahora a entrar en nuestro directorio home, creemos un fi- chero y cambiémosle los atributos para que tan sólo user00 pueda leerlo, eje- cutarlo y escribir en él. De momento, el permiso de ejecución no tiene mucho sentido para nosotros, pues no sabemos aún crear ficheros ejecutables, pero es bueno conocerlo de antemano para cuando se precise de él:
user00@tty1[home]$ cd
user00@tty1[user00]$ chmod 700 user00file
Actividad
3.8 Cread un nuevo usuario siguiendo los pasos anteriormente descritos, y comprobad
que, efectivamente, este nuevo usuario no puede ni leer el fichero recién creado ni escribir en él.