lunes, 16 de junio de 2014

Usuarios y grupos de usuarios en Linux


En Unix por defecto, la información de los usuarios de un sistema se guarda en el archivo /etc/passwd. Es un archivo de texto que puede visualizarse con cualquier editor. Cada linea del archivo /etc/passwd almacena los parámetros de un usuario. Solo puede modificarlo el administrador (root).

Las contraseñas de cada usuario se guardan encriptadas con un sistema de codificación irreversible, en el archivo /etc/shadow que también es un archivo de texto.

En Unix por defecto, la información de los grupos de un sistema se guarda en el archivo /etc/group. Es un archivo de texto que puede visualizarse con cualquier editor. Cada línea del archivo /etc/group almacena los parámetros del grupo y los usuarios que contiene. Solo puede modificarlo el administrador (root).



La administración de usuarios y grupos solamente puede realizarlas el usuario root utilizando los comandos de gestión de usuarios. Las tareas y los comandos para realizarlas son:


· Creación de usuarios / useradd
· Modificación de usuarios / usermod
· Eliminación de usuarios / userdel
· Creación de grupos / groupadd
· Modificación de grupos / groupmod
· Eliminación de grupos / groupdel
· Añadir usuarios a un grupo / adduser
· Quitar usuarios de un grupo / deluser

// Añadir un grupo
# groupadd alumnos
// Modificación de grupo
# groupmod [-g nuevo-gid] [-n nuevo-nombre] nombre-grupo
// Cambiar el gid del grupo profesores
# groupmod -g 2000 profesores
// Eliminación de un grupo
# groupdel profesores

Entre las opciones más destacables tenemos:
· -g: Grupo principal que queremos tenga el usuario (debe existir)
· -d: Carpeta home del usuario. Suele ser /home/nombre-usuario
· -m: Crear carpeta home si es que no existe.
· -s: Intérprete de comandos (shell) del usuario. Suele ser /bin/bash

// Crear un usuario (pedro) en el grupo (profesores)
# useradd -g profesores -d /home/pedro -m -s /bin/bash pedro
// Establecer la contraseña del usuario
# passwd pedro
// Cambiar el home de un usuario
# usermod -d /home/carpeta_pedro pedro
// Eliminación de un usuario
# userdel -r pedro
// Modificar el nombre del grupo
# groupmod [-g nuevo-gid] [-n nuevo-nombre] nombre-grupo
// Añadir un usuario a un grupo
# adduser juan profesores
// Quitar a un usuario de un grupo
# deluser juan profesores

En los Sistemas Unix, la gestión de los permisos que los usuarios y los grupos de usuarios tienen sobre los archivos y las carpetas, se realiza mediante un sencillo esquema de tres tipos de permisos que son:

· Permiso de lectura
· Permiso de escritura
· Permiso de ejecución





// Dar permiso de escritura al usuario propietario sobre el archivo 'examen.txt'
# chmod u+w examen.txt
// Quitar permiso de escritura al resto de usuarios sobre el archivo 'examen.txt'
# chmod o-w examen.txt
// Dar permiso de ejecución al grupo propietario sobre el archivo
'/usr/bin/games/tetris'
# chmod g+x /usr/bin/games/tetris
// Dar permiso de lectura al grupo propietario sobre el archivo 'examen.txt'
# chmod g+r examen.txt
// Se pueden poner varios permisos juntos separados por comas
# chmod u+w,g-r,o-r examen.txt
// Se pueden poner varios usuarios juntos
# chmod ug+w examen.txt

En binario, las combinaciones representan el tipo de permisos. El bit más a la derecha (menos significativo) se refiere al permiso de ejecución (1=activar y 0=desactivar). El bit central se refiere al permiso de escritura y el bit más a la izquierda se refiere al permiso de lectura. La siguiente tabla muestra las 8 combinaciones posibles:

Código          Binario          Permisos efectivos
0                     0 0 0               - - -
1                     0 0 1               - - x
2                     0 1 0               - w -
3                     0 1 1               - w x
4                     1 0 0               r - -
5                     1 0 1              r - x
6                     1 1 0               r w -
7                     1 1 1               r w x

// Dar todos los permisos al usuario y ninguno ni al grupo ni al resto
# chmod 700 examen.txt
// Dar al usuario y al grupo permisos de lectura y ejecución y ninguno al resto
# chmod 550 examen.txt
// Dar todos los permisos al usuario y lectura y ejecución al grupo y al resto
# chmod 755 /usr/bin/games/tetris
// Dar todos los permisos al usuario y de lectura al resto, sobre todos los archivos
# chmod 744 *
// Cambiar permisos a todos los archivos incluyendo subcarpetas
# chmod -R 744 *

Estableciendo permisos desde el administrador de archivos

Bits SUID y SGID

El bit SUID es una extensión del permiso de ejecución. Se utiliza en escasas ocasiones y sirve para que cuando un usuario ejecute una aplicación, ésta se ejecute con permisos del usuario propietario en lugar de hacerlo con los del usuario que ejecuta la aplicación, es decir, es equivalente a que sea ejecutada por el propietario. 

Para activar el bit SUID, se puede ejecutar el comando chmod u+s nombre_archivo o sumar 4000 al número en octal si utilizamos dicho sistema. 

También se puede hacer lo mismo para el grupo, es el denominado bit SGID sumando 2000 al número en octal. Activar los bits SUID ó SGID puede ocasionar problemas de seguridad sobre todo si el propietario es root. 

Máscaras

Cuando se crea un archivo, los permisos originales por defecto son 666 y cuando se crea una carpeta, los permisos por defecto son 777. Dichos permisos por defecto pueden modificarse con el comando umask.

No hay comentarios:

Publicar un comentario