Durante la instalación, comentamos que se iba a crear un usuario, y si habéis hecho los ejercicios precedentes habréis visto que tenemos un montón de usuarios creados. Todo eso, lo ha hecho el instalador, para permitirnos organizar permisos, en este post veremos como podemos crear grupos y usuario según nuestras necesidades
El sistema de permisos de ficheros en linux se estructura controlandolo por usuarios, grupos y otros, por lo que cuando creamos usuarios automaticamente se crea un grupo con el mismo nombre, pero nosotros vamos a poder cambiar ese comportamiento para que pertenezca a otro grupo.
Vamos a ver como podemos crear usuarios. Ante todo abrimos un terminal virtual y nos logonamos como root , ya que nuestro usuario no tiene permisos suficientes.
La sintaxis completa del comando implicado es:
addusr [-c comentario] [-d home] [-e fecha] [-f dias] [-g grupo] [-G lista de grupos] [-m [-k template] | -M] [-n] [-o] [-p passwd] [-r][-s shell] [-u uid] usuario
Aunque la mayoria de veces podremos utilizar una forma mucho mas sencilla
addusr usuario1
Esto nos creara un usuario con login usuario1 y con una contraseña…generada aleatoriamente y que no conocemos, por lo que no podremos utilizarlo a menos que hagamos
passwd usuario1
y le indiquemos una contraseña conocida.
Usuarios y grupos
En linux, todos los usuarios deben pertenecer a un grupo, es por eso, que al crear el usuario, se crea un grupo con el mismo nombre que el usuario, a menos que nosotros le asignemos un grupo concreto y previamente creado.
Podemos crear un grupo de usuarios con un sencillo
groupadd amigos
y a continuación podemos crear un usuario y añadirlo a este grupo con
adduser -g amigos usuario_a
si el usuario ya esta creado y lo queremos añadir al grupo, podemos hacer
gpasswd -a usuario1 amigos
el comando gpasswd tiene las siguientes opciones:
-a USER para añadir un usuario al grupo
-d USER para eliminar un usuario del grupo
-M <USER1,USER2,…> definir todos los miembros de un grupo
Si necesitamos saber todos los grupos a los que pertenece un usuario, utilizaremos
groups usuario1
Usuarios y directorios
Cuando un usuario se logona, el sistema arranca un shell para él, en su directorio de inicio, con lo que todo usuario debería tener un directorio de inicio, y, al crear el usuario, se crea automáticamente un directorio bajo «home» con el mismo nombre que el usuario, y se copia en el mismo, el contenido del directorio /etc/skel. Si tenemos que cambiar ese comportamiento, p.ej. para que no cree el directorio,o que asigne uno distinto, podemos utilizar la opción -m y le decimos el directorio a asignar, o con -M para que no cree ni asigne ningún directorio
Osea que si queremos que nuestro nuevo usuario, pepito, tenga como carpeta raiz /home/usuarios, podriamos crearlo con
useradd -d /home/usuarios pepito
si la carpeta no existe, se creará automáticamente, y si en tu distribución no la crea, puedes utilizar la opción -m para forzar la creación.
Naturalmente, con una estructura de este tipo, todos los usuarios no pueden ser propietarios de la carpeta, por lo que posiblemente deberías añadir los usuarios a un grupo, para poder gestionar los permisos por el grupo.
Cuando borremos un usuario, si queremos que se borre su carpeta, ojo con las compartidas, podemos hacerlo todo a la vez con la opcion -r
userdel -r pepito
Usuarios y shell
Aunque reconozco que para un «Empezando con linux» no es necesario, pienso que tambien podriamos comentar otra de las opciones disponibles cuando creamos un usuario. Concretamente, me refiero a la posibilidad de indicar el shell que utilizara ese usuario. Aunque nuestra distribucion asignara un estandar que normalmente no hace falta modificar, puede que deseemos crear algun usuario que no deba conectarse desde un terminal. Para eso, existe la siguiente posibilidad
useradd -s /bin/false -r -M elUsuario
o
useradd -s /usr/sbin/nologin -r -M el Usuario
Fijaros que lo que hacemos con la opcion -s es asignarle un shell especial, la -r nos permite evitar caducidad, y con la -M le decimos que no queremos directorio. En funcion de la utilidad que le queramos dar al usuario, podeis modificar lo que sea necesario, (por ejemplo, crear directorio,…)
El archivo /etc/passwd
Cuando hablamos de usuarios, hemos de hablar de este archivo que es donde linux guarda los usuarios que vamos creando, con el formato
root:x:0:0:root:/root:/bin/bash |
bin:x:1:1:bin:/bin:/bin/bash |
daemon:x:2:2:daemon:/sbin:/bin/bash |
news:x:9:13:News system:/etc/news:/bin/bash |
uucp:x:10:14::/var/lib/uucp/taylor_config:/bin/bash |
migarcia:x:500:100:Miguel Garcia:/home/migarcia:/bin/bash |
Cada dato va separado del siguiente por «:» y el contenido es:
- login del usuario
- x En este espacio deberia estar la password, pero estas se guardan realmente en /etc/shadow, ya que este archivo lo ve todo el mundo, lo que es un peligro…
- UID es el numero de identificacion del usuario, los numeros bajos se reservan habitualmente para usuarios del sistema y a partir del 500 o 1000 se iran asignando a los usuarios que vamos dando de alta. Dos usuarios pueden tener el mismo UID
- GID es el numero de identificacion de grupo principal
- Comentario, normalmente ocupado por el numbre del usuario, aunque podemos utilizarlo para guardar cualquier cadena de texto
- Directorio home
- shell a utilizar
El archivo /etc/group
En este archivo se guardaran los grupos que vayamos creando,
root:x:0:root |
bin:x:1:root,bin,daemon |
daemon:x:2: |
tty:x:5: |
disk:x:6: |
lp:x:7: |
wwwadmin:x:8: |
kmem:x:9: |
wheel:x:10: |
mail:x:12:cyrus |
migarcia:x:500:migarcia |
amigos:x:501:usuario1,usuario2 |
Su estructura también es muy sencilla
- Nombre del grupo
- contraseña encriptada
- GID identificador del grupo
- lista de usuarios que pertenecen al mismo
El fichero /etc/shadow
En este fichero se guardan las contraseñas de los usuarios codificadas con la estructura
usuario : contraseña_cifrada : d1 : d2 : d3 : d4 : d5 : d6 : reservado
- usuario: es el login o nombre de usuario (el mismo que en /etc/passwd)
- x: contraseña: la contraseña cifrada o !! si no hemos creado contraseña
- d1: nº de días desde el 01/01/1970 hasta último cambio de la contraseña.
- d2: nº de días que deben pasar hasta que se pueda cambiar la contraseña.
- d3: nº de días que deben pasar para que caduque la contraseña y deba ser cambiada.
- d4: nº de días de antelación con los que avisará el sistema de la caducidad de la contraseña.
- d5: nº de días con contraseña caducada antes de deshabilitar la cuenta.
- d6: nº de días desde el 01/01/1970 y el día en que se deshabilitó la cuenta.
- reservado: campo reservado