Linux: Dar de alta un nuevo usuario sin el comando adduser

El objetivo de esta entrada de blog es para ilustrar como se puede dar de alta a un nuevo usuario en Linux sin usar el comando adduser. En realidad esta fue una practica que hicimos en una clase de la escuela para la materia de Administracion de redes y se me hizo interesante republicarla (ya que ya la tenia en otro blog) para no perderla y bueno creo que el titulo lo dice todo. Primero que todo quiero mostrar las caracteristicas de la maquina donde se realiza la practica:

  • Distribucion linux                  Fedora 14
  • Versión del kernel                 2.6.35.11-83
  • Arquitectura del equipo        x86

Como se puede observar la prueba la he realizado en Fedora a la fecha que escribo esta era la mas reciente y está recién bajada e instalada de la página oficial.

Resumen de los pasos a realizar

  1. Dar de alta al usuario en el archivo /etc/passwd.
  2. Crear un grupo para el nuevo usuario en el archivo /etc/group
  3. Crear la carpeta hogar del nuevo usuario.
  4. Copiar los archivos ubicados en /etc/skel/ en la carpeta hogar del usuario.
  5. Establecer como propietario de su carpeta hogar al nuevo usuario.
  6. Cambiar de grupo a la carpeta hogar al grupo del nuevo usuario.
  7. Cambiar los permisos apropiados de la carpeta hogar del usuario.
  8. Asignar un password al nuevo usuario.
  9. Opcional; iniciar sesion para probar el nuevo usuario.

El paso 3 opcionalmente se puede realizar primero que todos si así se desea. Los pasos que siguen a continuación son estos mismos pasos pero detallados y por último se muestra una imagen de todos los pasos (no se muestran los archivos abiertos):

Paso 1: Dar de alta al usuario en el archivo /etc/passwd.

Antes de editar este archivo debemos tener privilegios de super usuario root, para adquirir estos privilegios, abrimos una consola y escribimos lo siguiente (solo lo que esta en color verde) y presionamos ENTER:

[adminredes@gnz ~]$  su
Contraseña:  {teclea aqui el password de root}
 
 

Despues de que tecleas el password y presionas nuevamente ENTER, si el password es correcto te haz convertido en el super usuario root.
 
Bueno, ahora vamos a abrir el archivo /etc/passwd con el editor nano, en la terminal escribe:

[root@gnz adminredes]#  nano /etc/passwd
 
 

A continuación se abrira dicho archivo, desplazate hasta abajo (con las flechas de cursor) despues de la ultima linea y escribe los siguiente:

xavier:x:502:502:Xavier Silva:/home/xavier:/bin/bash
 
 

Observa como he marcado los dos puntos con color rojo para que se te haga mas facil diferenciar los datos, tu archivo se debe parecer al de la siguiente imagen:
Pantallazo editando archivo /etc/passwd

El significado de los campos que conforman la ultima linea es:

  • xavier   Es el nombre del nuevo usuario que estas dando de alta.
  • x         Aqui iria el password pero como es una x, significa que el password esta encriptado (modo sombra) en el archivo /etc/shadow.
  • 502     Es el ID del nuevo usuario que estas creando (UID), como vez e puesto un ID+1 del ultimo que habia (501) y si quisieras dar de alta otro le corresponderia el que sigue, es decir el UID 503.
  • 502     Es el ID del grupo al que va a pertenecer este nuevo usuario. Aplica lo mismo que con el ID de usuario (…el que le sigue es el 503).
  • Xavier Silva   Es el  nombre real del nuevo usuario, si quisieras poner su telefono lo separas con una coma, si quieres poner su direccion con otra coma y asi sucesivamente. Es decir, este campo puede tener varios datos separados con coma. Este A este este campo a veces se le llama GECOS (General Electric Comprehensive Operating System, Sistema Operativo de General Electric).
  • /home/xavier   Es el directorio hogar de este usuario.
  • /bin/bash  Es la shell predeterminada que se le asigna a este usuario.

Ahora vamos a guardar los cambios realizados a este archivo que hemos abierto con el editor nano; presiona CTRL+O (o, no cero), y cuando te pida el nombre del archivo le das ENTER. A continuación cerramos el archivo; presiona CTRL+X. Hasta aqui ya hemos realizado el primer paso (ya no nos podemos detener o quedaria inconsistente la configuración del sistema, jajaja, tranquilo/a no te asustes).

Paso 2: Crear un grupo para el nuevo usuario en el archivo /etc/group.

Igual que en el paso 1 debes tener privilegios de root para editar este archivo, yo voi a dar por hecho que ya te has logueado como el super usuario root.

Procedamos a abrir el archivo /etc/group con el editor nano, en la terminal escribe (lo de verde):

[root@gnz adminredes]#  nano /etc/group
 
 

Con esto se abrira dicho archivo, desplazate hasta abajo (con las flechas de cursor) despues de la ultima linea y escribe lo siguiente:

xavier:x:502:
 
 

Observa que otra vez; he marcado los dos puntos con color rojo para que se te haga mas facil diferenciar los datos, tu archivo se debe parecer al de la siguiente imagen:

Archivo /etc/group
El significado de los campos que conforman esta linea es esta:

  • xavier   Es el nombre del nuevo grupo; estamos creando un nuevo grupo para el nuevo usuario que estas dando de alta.
  • x         Aqui iria el password del grupo, si hubiera un password este permitiria que nuevos usuarios se unieran al mismo.
  • 502     Es el ID del nuevo grupo que estas creando (GID), como vez e puesto un ID+1 del ultimo que habia (501) y si quisieras dar de alta otro le corresponderia el que sigue, es decir el GID 503.
  • Despues de los dos puntos (xavier:x:502:aqui!!) irian los miembros que pertenecen a este grupo, por ejemplo xavier:x:502:pepito,daniel,gonzasilve

Ahora guarda los cambios realizados a este archivo; presiona CTRL+O , y cuando te pida el nombre del archivo le das ENTER. A continuación cerramos el archivo; presiona CTRL+X.

Hasta aquí ya hemos realizado el segundo paso, vamos por el tercero…

Paso 3: Crear la carpeta hogar del nuevo usuario.

Que paso tan mas dificil (jejej), suponiendo que te has logueado como root, en la terminal teclea (lo de verde):

[root@gnz adminredes]#  mkdir /home/xavier
 
 

Listo.

Paso 4: Copiar todos los archivos ubicados en /etc/skel/ en la carpeta hogar del usuario.

Bien, primero vamos a entrar a la carpeta /etc/skel, suponiendo que eres root, en la terminal teclea (lo de verde):

[root@gnz adminredes]#  cd /etc/skel
 
 

Ahora vamos a ver (listar) que hay en esta carpeta, teclea:

[root@gnz skel]#  ls -la
 
 

Supongo que sabes para que sirve el comando ls, y sino pues aqui te lo vas a saber: Sirve para mostrar el contenido de un directorio, la l sirve para indicar que los muestre en forma tabular (modo detallado) y la a sirve para que muestre TODOS los archivos, incluso los ocultos.

Bueno, en mi caso el comando anterior me muestra lo siguiente (la linea en gris es el comando anterior):

[root@gnz skel]# ls -la
drwxr-xr-x.   4 root root  4096 feb 10 21:05 .
drwxr-xr-x.  126 root root 12288 mar 12 07:07 ..
-rw-r–r–.      1 root root    18 jun 22  2012 .bash_logout
-rw-r–r–.      1 root root   176 jun 22  2012 .bash_profile
-rw-r–r–.      1 root root   124 jun 22  2012 .bashrc
drwxr-xr-x.   2 root root  4096 sep 28 23:15 .gnome2
drwxr-xr-x.   4 root root  4096 feb 10 20:54 .mozilla

 
Como se puede ver ahi 3 archivos: (.bash_logout, .bash_profile y .bashrc) y dos carpetas (.gnome2 y .mozilla), ahi que copiarlos todos con los siguientes comandos, primero los archivos, en la terminal teclea (lo de verde):

[root@gnz skel]#  cp .bash_logout /home/xavier (pulsa ENTER)
[root@gnz skel]#  cp .bash_profile /home/xavier (pulsa ENTER)
[root@gnz skel]#  cp .bashrc /home/xavier (pulsa ENTER)
 
 

 
Ahora las carpetas…

[root@gnz skel]#  cp -R .gnome /home/xavier (pulsa ENTER)
[root@gnz skel]#  cp -R .mozilla /home/xavier (pulsa ENTER)
 
 

 
A las carpetas les agregue una R por que son carpetas (valga la redundancia) y éstas se deben copiar en forma Recursiva, para copiar todo lo que hay dentro.
 
Con esto hemos terminado de realizar el 4to paso, siguiente paso…

Paso 5: Establecer como propietario de su carpeta hogar al nuevo usuario.

Una vez copiados todos los archivos, ahora vamos a indicar que la carpeta /home/xavier pertenece al usuario xavier. Para hacer esto, en la terminal teclea (lo de verde):

[root@gnz skel]#  chown xavier -R /home/xavier
 
 

 
El comando chown permite cambiar de propietario a un archivo o carpeta. Igual que en el paso anterior agregue la R como parámetro para que también cambie de propietario a los archivos que copiamos en el paso 4. Continuemos…

Paso 6: Cambiar de grupo a la carpeta hogar, al grupo del nuevo usuario.

Casi terminamos, ahora vamos a indicar que la carpeta /home/xavier pertenece al grupo xavier (recuerda que este grupo lo dimos de alta en el archivo /etc/group), es decir, al grupo del nuevo usuario. Para hacer esto, en la terminal teclea (lo de verde):

[root@gnz skel]#   chgrp xavier -R /home/xavier
 
 

 
El comando chgrp tiene la misma sintaxis que chown y permite cambiar de grupo a un archivo o carpeta. Igual que en el paso anterior agregue la R como parámetro para que también cambie de grupo a los archivos que copiamos en el paso 4. Sigamos con el paso 7…

Paso 7: Cambiar los permisos apropiados de la carpeta hogar del usuario.

Ahora vamos a cambiar los permisos a todo el contenido de la carpeta hogar del usuario. Ummm, para entender esto te doy una breve explicación de los permisos en Unix

En Unix los permisos se pueden asignar de muchas maneras pero la que mas me gusta en lo personal es esta (por medio de números):
4 significa permiso de lectura
2 significa permiso de escritura
1 significa permiso de ejecucion

Estos números se pueden sumar para asignar una configuración de permisos mas adecuada, Ejemplos:
4+1=5, entonces el 5 significa lectura+ ejecución, otra configuración es 4+2+1=7, entonces el 7 significa que el archivo tiene permisos de lectura+escritura+ ejecución (todos los permisos), una ultima configuración; 4+2=6, entonces el 6 significa permisos de lectura+escritura.

El comando chmod permite asignar (o cambiar como quieras decirle) permisos a un archivo o carpeta. Ademas con el comando chmod se pueden asignar 3 diferentes tipos de permisos; los del propietario, los del grupo y los permisos para otros (que no son el propietario, ni los miembros del grupo), como se muestra en la siguiente imagen:
Los permisos en Unix

Como dije anteriormente el comando chmod tiene varias sintaxis y también se pueden asignar permisos a un grupo en particular por ejemplo: chmod ug+rwx setup.deb , esta asignando permisos de lectura(r), escritura(w) y ejecucion(x) al usuario(u) y al grupo(g) al que pertenece el archivo setup.deb. No entro en mas detalles para no confundirte.

Por lo regular, la configuración de permisos 755 es aceptable para cualquier archivo o carpeta. Así que esa configuración le aplicaremos, en la terminal teclea (lo de verde):

[root@gnz skel]#   chmod 755 -R /home/xavier
 
 

 
Siguiente paso…

Paso 8: Asignar un password al nuevo usuario.

En este ultimo paso vamos a asignarle un password al nuevo usuario, por que en este momento no tiene ninguno y por lo tanto no se podría iniciar sesión en el sistema. Suponiendo que sigues siendo root, en la terminal teclea (lo de verde):

[root@gnz skel]#   passwd xavier
Cambiando la contraseña del usuario xavier.
Nueva contraseña: (aqui teclea la contraseña y pulsa ENTER)
Vuelva a escribir la nueva contraseña: (otra vez, aqui teclea la contraseña y pulsa ENTER)
passwd: todos los tokens de autenticación se actualizaron exitosamente.
 
 

 
Como puedes darte cuenta despues de escribir el comando passwd xavier, el sistema nos pide el nuevo password, escribelo y pulsa ENTER, te lo vuelve a pedir, escribelo otra vez y pulsa ENTER.

…y waooo, con esto hemos terminado!¡!. En horabuena, con este paso hemos terminado de crear al nuevo usuario sin necesidad de usar el comando adduser de Linux.
 
Si eres de los excepticos…

Paso 9: [Opcional], Iniciar sesión para probar el nuevo usuario.

Por ultimo para probar que hemos creado al usuario correctamente no hay como iniciar una sesion en el sistema, para hacer esto, los puedes hacer de dos formas, Forma 1: suponiendo que sigues siendo root, en la terminal escribe (lo de verde):

[root@gnz skel]#   su – xavier
[xavier@gnz ~]$ (haz iniciado sesion con el nuevo usuario)
 
 

 
A continuación te muestro una imagen de todos los pasos realizados, (la edición del archivo passwd y group ya lo mostre arriba, en el paso correspondiente):
Comandos para crear usuario sin adduser

Forma 2: La otra forma es cerrar la sesión actual (si estas usando Linux) e iniciar como lo harías normalmente en Gnome (desde el GDM), ademas, al iniciar sesión de esta forma se van a crear automáticamente las carpetas Documentos, Imágenes, Vídeos… etc.

Aprovecho para mandar saludos a mi bola de amigos de ingeniería de sistemas del I.T. Zacatepec, Morelos.
 
Hasta pronto y espero te sirva de algo esta cosa… sugerencias y comentarios constructivos son bienvenidos. Y recuerda que en el mundo del bloggin comentar=agradecer.
 
 
 
Tux camina Tux maroma

Bash: Uso de la estructura de control if-then

Para realizar esta prueba, doy por hecho que ya sabes algunos comandos basicos de la shell y lo basico de ubuntu linux, pero aun asi vamos a realizar esta prueba paso por paso y espero que no te atores con ninguno, empecemos; estando en el escritorio:

  1. Abre una terminal: presiona ALT+F2, escribe gnome-terminal, pulsa ENTER.
  2. Crea un nuevo archivo: escribe touch script4.sh, pulsa ENTER.
  3. Abre el archivo recien creado con el editor nano: escribe nano script4.sh, pulsa ENTER.
  4. Escribe el siguiente codigo: (en el codigo se explica lo que hace cada cosa):
    #!/bin/bash
    #Ejemplo #4: Script que muestra como utilizar la estructura de control if-then
    #Author: Gonzalo Silverio   gonzasilve@gmail.com
    #Archivo: script4.sh
    #Si el nombre juan esta en el archivo nombres.txt 
    #devolvera true. El comando se evalua a falso o verdadero.
    #verdadero =devolvio un resultado, falso = no devolvio nada
     if grep juan nombres.txt
       then
         echo 'El nombre juan ESTA en la lista de nombres'
     fi
    echo
    echo ---------Fin del script.-------------
    
  5. Guarda los cambios: presiona CTRL+O (O, no cero), te pedira el nombre del archivo, pulsa ENTER.
  6. Cierra el editor nano: presiona CTRL+X.
  7. Da permiso de ejecucion al archivo: escribe chmod +x script4.sh, pulsa ENTER.
  8. Ejecuta el script: escribe sh script4.sh

La sentencia if evalua a falso o verdadero la ejecucion de un comando. Observe que la palabra then debe ir en la siguiente linea (no puede ir adelante del comando a evaluarse), por que sino marca error de sintaxis. A continuacion pongo una imagen donde se realizan algunos pasos anteriores y por supuesto; se muestra la ejecucion del script:

Ejecucion 1 del script4 para Bash

Ejecucion 1 del script4 para Bash


Como se puede observar el comando grep informa al usuario que el archivo nombres.txt no existe. Ahora muestro otra imagen:
Ejecucion 2 de script4 para Bash

Ejecucion 2 de script4 para Bash


Como se puede ver en la imagen hemos creado el archivo nombres.txt y le agregue varios nombres (gonza, javier,itzel), pero no el de juan y ejecutamos el archivo y vemos que no entra al if y por tanto no se muestra nada (grep ya no manda msg).

A continuacion le agregamos otros dos nombres (juan y monica) y vemos que ahora si entra al if y muestra la unica instruccion dentro del if (avisa que el nombre juan si esta).

nota 1: Si no tienes nano puedes instalarlo con el comando sudo apt-get install nano
nota 2: Otra forma de ejecutar el script es escribir ./script4.sh
nota 3: Recuerda que todas las lineas del script que empiezan con # (gatito) son comentarios; a excepcion de la primera, asi que puedes omitirlas y no escribirlas.

Bueno eso es todo y pues si tienes dudas, te sirvio el ejemplo o quieres decir algo puedes dejar tu comentario que con gusto lo leere y si es apropiado te contesto. Hasta pronto.

A %d blogueros les gusta esto: