martes, 28 de mayo de 2019

12 - Listas de control de acceso (ACL)

¿Que son las acl?
El sistema de permisos de linux UGO, es un sistema muy rígido y limitado que solo permite interactuar con 3 entidades usuario, grupo y todo el mundo. Sin embargo no se permite por ejemplo dar permisos de forma individual a usuarios o grupos concretos.

Las acl (access control lists) son una ampliación del sistema de permisos UGO/rwx que permite un control más preciso dando al propietario de un objeto la capacidad de conceder o denegar acceso a otros usuarios o grupos específicos que no sean el usuario o grupo propietario.

Cada una de las líneas que componen una acl recibe el nombre de ace (access control entry)

Requisitos Previos

En general, podría ser necesario instalar las utilidades acl de los repositorios, bien porque no estén instaladas por defecto o porque se haya añadido un dispositivo nuevo con posterioridad a la instalación del SO, donde se desean activar las acl. Por ejemplo en U16.04 desktop están ya instaladas por defecto.



El comando tune2fs nos puede informar si el sistema se ha montado para utilizar acl


En cualquier caso, si es necesario activar las acl en algún dispositivo, y se desea hacerlo de forma persistente, habrá que dejar constancia en el fichero fstab y remontar la partición si no se quiere reiniciar. Por ejemplo, en U14.04 server las acl no se instalan por defecto  


Notación

[Tip
o]:[Calificador]:[Lista Permisos]

Tipo
 puede ser: user(u), group(g), other(o) y mask(m)
Calificador puede ser: nombre de grupo o usuario, UID, GID o vacío (asume UID y GID creador)

Lista Permisos puede expresarse en notación simbólica o en notación octal


Líneas 1-3 nombre fichero, propietario y grupo propietario
Línea 4 permisos especiales
Lineas 5, 7 y 10 permisos UGO (no tienen calificador). Entradas implícitas
Líneas 6 y 8 permisos explícitos acl

Línea 9 máscara que obtiene permisos efectivos. Aplica a permisos explícitos
Líneas 11-15 acl por defecto del directorio (solo para directorios)


Mostrar  acl

El comando getfacl muestra la acl de un fichero/directorio. En caso que no tenga asignada acl de forma explícita, toma los permisos efectivos UGO. 


Mostrando información acl de directorio y de fichero


Establecer acl a fichero

El comando setfacl permite establecer de forma explícita acl's ,a ficheros/directorios. Es importante tener en cuenta que no es lo mismo establecer una acl sobre un fichero que sobre un directorio


Estableciendo permisos explícitos para alum01 sobre fichero
-R:  Cambia permisos a archivos/directorios de forma descendente a partir de un directorio dado. 
-d:  Asigna los permisos por defecto (solo directorios).
-b:  Borra todos los permisos adicionales, conservando únicamente los básicos de UGO.
-k:  Borra los permisos por defecto.
-m: Modifica los permisos agregando o cambiando por nuevos valores.


Importante: La opción -m debe de estar junto a [Tipo]:[Calificador]:ListaPermisos



Establecer acl a directorio

Cómo en el caso anterior se puede asignar permisos explícitos a un directorio de la misma manera.


Estableciendo permisos explícitos para alum01 sobre directorio
Pero existe un inconveniente que vamos a explicar sobre el ejemplo anterior. Otorgar permisos rw a alum01 sobre sistemas no implica que alum01 tenga permisos rw sobre lo que se cree dentro de sistemas, excepto que lo cree alum01 claro.

Establecer default acl a directorio

Habitualmente cuando utilizamos acl's para conceder permisos a un usuario específico sobre un directorio queremos que esos permisos se extiendan de manera predeterminada también a todo el contenido que se cree en el directorio. Este tipo de acl's que se transmiten automáticamente desde arriba hacia abajo se denominan acl por defecto o default acl.

Estableciendo permisos explícitos y heredables para alum01 sobre directorio
Al establecer default acl en los permisos de la carpeta, los permisos se extienden a cualquier cosa que se cree en su interior



Como se puede observar la lista incluye los permisos UGO, los permisos explícitos y otra vez las entradas de permisos por defecto que indican herencia.

La máscara de permisos explícitos

La entrada mask es una entrada especial que representa el máximo de permisos que se pueden asignar al objeto a través de las ace's explícitas de usuario y grupo. Aparece automáticamente al momento de añadir una entrada explícita.

Se puede modificar con el comando setfacl y se utiliza para enmascarar los permisos explícitos de usuarios y grupos y obtener los permisos explícitos efectivos. Vamos a verlo con uno de los ejemplos anteriores

Añadir leyenda
En el ejemplo anterior mask=rw- significa que al aplicarla sobre los permisos explícitos de usu1 (rw-) daría como resultado los permisos efectivos; como en principio son iguales 110 & 110 = 110, usu1 puede obtener lectura y escritura como máximo pero no ejecución.

Modifiquemos la máscara para ver los nuevos permisos efectivos de usu1. Por ejemplo si colocamos la nueva máscara con r-x, los permisos efectivos serían 101 & 110 = 100 (r--)


domingo, 26 de mayo de 2019

11 - Permisos especiales

t (sticky bit)

Cuando se lo asignamos a un directorio, conseguimos que los elementos que haya dentro, ficheros ó directorios, sólo puedan ser renombrados o borrados por su propietario o por el root, aunque el resto de usuarios tenga permisos de escritura sobre dichos elementos.

Se suele aplicar a directorios de acceso público que tienen todos los permisos asignados, como por ejemplo directorios temporales como /tmp ó /var/tmp

Creación de un directorio con sticky bit

El bit t se activa o desactiva empleando notación simbólica de la siguiente manera:
chmod +t directorio ó chmod -t directorio. Empleando notación octal se haría sumando 1000 a los permisos del directorio, chmod 1777 directorio
Sticky bit notación simbólica
Observación

Antiguamente se usaba para mantener la imagen de un ejecutable en memoria después de finalizar la ejecución del mismo pero con los avances en el hardware ya no se usa para esta función.

s (suid)

Cuando a un binario se le asigna el atributo s a nivel de usuario, los usuarios normales pueden ejecutarlo y obtener los privilegios del usuario propietario del ejecutable (por lo general root).

Expresado de manera técnica, el permiso especial suid aplicado sobre un binario a nivel de usuario provoca un cambio de dominio durante la ejecución haciendo que el usuario efectivo del binario sea el propietario del fichero y no el usuario que lo ejecuta.

Se activa o desactiva este bit empleando la notación simbólica de la siguiente manera: chmod u+s binario ó chmod u-s binario. También de forma octal se puede expresar sumando 4000 a los permisos del archivo: chmod 4755 binario


Suid notación simbólica y octal
Ejemplo

Supongamos que el ejecutable micat propiedad del root puede ser usado para leer ficheros por cualquier usuario. Si se le aplica el suid a este ejecutable, cualquier usuario podría leer ficheros del root a través de dicho binario sin tener permisos sobre esos ficheros. Veámoslo

Se copia un binario propiedad del root y se crea un fichero en /tmp al que se le quitan los permisos. 

Se comprueba, como lógicamente, el usuario asir tiene denegado el acceso al fichero.

Ahora se activa el bit s a nivel de usuario sobre el binario y se comprueba que está activado

Con el suid activado, asir ahora si tiene acceso al fichero (a través del binario únicamente)

s (sgid)

Cuando a un binario se le asigna el atributo s a nivel de grupo, los usuarios que pertenezcan a ese grupo pueden ejecutar ese archivo y obtener los privilegios del grupo propietario del ejecutable.

Expresado de manera técnica, el permiso especial suid aplicado sobre un binario a nivel de grupo provoca un cambio de dominio durante la ejecución haciendo que el grupo efectivo del binario sea el grupo propietario del fichero y no el grupo del usuario que lo ejecuta.

Se activa o desactiva este bit empleando la notación simbólica de la siguiente manera: chmod g+s binario ó chmod g-s binario. También de forma octal se puede expresar sumando 2000 a los permisos del archivo: chmod 2755 binario


Sgid notación simbólica y octal

sgid sobre Directorios

En el caso particular de aplicar el bit s a nivel de grupo sobre un directorio, los efectos son que a la hora de crear ficheros en ese directorio, el grupo propietario con el que salen por defecto dichos ficheros no será el grupo propietario del usuario que los crea, como debería ocurrir en situación normal, sino que será el grupo propietario del directorio que los contiene. O sea que se produce de nuevo un cambio de dominio en el grupo propietario, esta vez permanente claro.

jueves, 16 de mayo de 2019

10 - Enlaces simbólicos y Enlaces duros

Estructura de archivo

Los archivos y directorios están formados básicamente por tres elementos:
  • los datos: es la propia información del archivo y en el caso de un directorio un listado de nombres a mas archivos y/o directorios.
  • el i-nodo: es una estructura de datos que almacena información sobre el fichero o directorio y que se identifica por el número de i-nodo que es un número entero único. El i-nodo almacena metadatos como el tamaño, UID, GID, número de enlaces, etc.
     
  • el nombre de archivo o directorio asociado al i-nodo.

El tercer punto es interesante porque es posible crear varios nombres que estén asociados a un mismo i-nodo que obviamente apunta a los mismos datos.


Información que contiene un inodo

Cada uno de los diferentes nombres asociados a un mismo i-nodo se denomina Enlace duro o físico (Hard Link) y tiene como gran ventaja que si borramos el archivo original (el primero que se creó), si existen otros Hard Links, sus datos siguen estando accesibles a través de ellos porque son nombres que apuntan al mismo i-nodo. Esto solo funciona con archivos y no con directorios.

Existe otro tipo de link conocido como Enlace blando ó simbólico (Symbolic o Soft Link) que es un nombre asociado a una ruta completa de otro archivo o directorio y no al i-nodo de los datos (por lo tanto posee un i-nodo diferente). Este tipo de link es similar a un archivo de acceso directo de Windows, es decir, si borras el archivo original, el link deja de funcionar.

Para crear links se utiliza el programa ln.
  • para hard: ln original destino
  • para soft: ln -s original destino

Diferencia gráfica entre Enlace simbólico y duro, N1 y N2 son i-nodos diferentes

Entendiendo el funcionamiento


Vamos ahora a comprobar de forma práctica la teoría:


Mostrando inodo del fichero original.txt


Creando un enlace duro y otro blando (simbólico) al fichero anterior. El enlace duro y el fichero original comparten el mismo i-nodo y ambos apuntan a los mismos datos, sin embargo el enlace blando tiene un i-nodo diferente porque apunta a la misma ruta del archivo original no a los datos.

El contenido de los tres ficheros es el mismo. Si borro el fichero original el enlace duro no se altera porque es independiente y sigue apuntando a los mismos datos, pero si borro el simbólico como apuntaba a la propia ruta del original y ya no existe deja de estar disponible. 







Si volvemos a crear el fichero original con otro contenido, el enlace simbólico vuelve a funcionar ya que la ruta a la que apunta vuelve a existir, eso si ahora el contenido es el del nuevo fichero. El enlace duro no se ve afectado por esta última operación y sigue manteniendo el i-nodo original y por tanto su contenido


Con el comando find y la opcion -inum podemos buscar archivos por su número de inodo o tambien buscar con la opción -type enlaces simbólicos















Observaciones


  • A través de los enlaces (duros y blandos) podemos modificar la zona de datos del fichero al que apuntan.
  • Los enlaces simbólicos se pueden hacer con ficheros y directorios mientras que los duros solo entre ficheros.
  • Los enlaces simbólicos se pueden hacer entre distintos sistemas de ficheros o volúmenes, los duros no.
  • Los enlaces duros comparten el número de i-nodo, los simbólicos no.
  • Los enlaces simbólicos pierden su significado si se borra el fichero al que apuntan, en cambio en los enlaces duros, los datos siguen estando accesibles mientras exista al menos uno.
  • Los enlaces duros son el mismo i-nodo, es decir nombres diferentes para los mismos datos, los simbólicos son ficheros distintos con otro i-nodo cuyos datos apuntan al nombre del fichero.
  • Los enlaces simbólicos aparecen con los bit de permisos todos encendidos dado que no son usados ya que los permisos efectivos son los del archivo al que se esta apuntando.

Uso de los enlaces


Los
enlaces duros permiten crear enlaces con distintos permisos o propietarios para acceder a los mismos datos. De esta forma, por ejemplo, un enlace puede permitir acceso de escritura, mientras que otro ofrezca sólo de lectura, pudiéndose crear distintas combinaciones para distintos grupos o usuarios.

Los enlaces blandos permiten abreviar rutas y enlazar ficheros y directorios desde cualquier parte, por ejemplo en programación son ampliamente usados para las librerías compartidas.

viernes, 10 de mayo de 2019

09 - Resetear Contraseña

Método 1, sin livecd

El procedimiento para resetear la contraseña del usuario con privilegios o root consiste en arrancar en modo recovery (tecla Esc) pero modificando ciertos parámetros de la línea de carga de la imagen linux.

En concreto hay que reemplazar la cadena:       ro recovery nomodeset



                                                        por:       rw init=/bin/bash



El núcleo del sistema arranca inicialmente el disco en modo lectura y posteriormente después de que ciertos procesos comprueban la integridad del mismo se modifica a lectura-escritura.

La línea que acabamos de reemplazar permite acceder al disco en modo lectura-escritura y desde una shell que controla el root (tanto si tiene como sino clave asignada en entorno gráfico). Estamos por tanto en disposición de modificar cualquier contraseña que queramos.





Método 2, con livecd

Arrancamos con la iso de Ubuntu y marcamos Probar Ubuntu sin instalar
Comprobamos con fdisk la partición dónde está instalada el sistema



Creamos un punto de montaje y montamos la partición del sistema



Para terminar usamos el comando chroot para abrir un shell sobre la partición que acabamos de montar con el usuario root. Ya estamos en disposición de cambiar la contraseña. 




Conclusiones:

Es muy importante proteger el grub pero también blindar la máquina para que no pueda ser arrancada desde otros medios (cd, usb,..). Si no lo hacemos estamos expuestos a que cualquier usuario malintencionado tenga acceso a la información o destruya el sistema.

Notas:
- El "=" en la máquina virtual lo podemos sacar pulsando Ctrl+Alt+61.
- Podemos cargar el teclado español desde consola con  loadkeys es

jueves, 9 de mayo de 2019

08 - El cargador de Linux: GRUB2

El cargador de arranque o bootloader es la parte del SO que carga el Kernel de Linux, el cual a su vez carga el resto del sistema. Ubuntu y la mayoría de distribuciones Linux usan el gestor de arranque GRUB2, que suele estar oculto por defecto a no ser que se tengan varios SO. Sin embargo este proporciona algunas opciones que pueden ser necesarias.



GRUB2 dispone de un menú propio al que se accede dejando pulsada la tecla Shift al principio del arranque (Con VMware también funciona la tecla Esc).

El kernel o núcleo del SO es un elemento crítico que se puede actualizar a través del gestor de paquetes con la idea de solucionar determinados problemas y corregir errores. Estás actualizaciones hacen que se use de forma automática el nuevo kernel después de reiniciar, sin embargo en algunos casos podría haber problemas y por ello las distribuciones de Linux suelen guardar el último kernel de Linux. Desde las opciones avanzadas de GRUB2 se puede seleccionar con cual de los dos kernel realizar el arranque. El kernel más reciente aparece más arriba de la lista con un número de versión mayor.




Ubuntu también dispone  de la opción Recovery Mode que permite reparar y recuperar el Sistema a través de diferentes utilidades.




GRUB2 tiene posibilidad de arrancar haciendo otras modificaciones avanzadas:
  • Se puede presionar la tecla c invocando la línea de comandos donde se pueden teclear varios comandos específicos de GRUB2
  • Se puede presionar la tecla e y editar manualmente las entradas del menú de arranque por ejemplo para arrancar en modo administrativo o en modo texto.
Ejemplo: Arranque en modo texto
Editamos la línea referente al kernel (la que empieza con linux) y reemplazamos quiet splash por la palabra text. Presionamos Ctrl+X o F10 y habremos arrancado en modo texto (sin entorno gráfico).

Importante: Las modificaciones realizadas desde el menú del GRUB son temporales y no se guardan.


Ubuntu 16.04 lts sin interfaz grafica parte-ii

Editar GRUB2

GRUB2 usa el fichero de configuración /boot/grub/grub.cfg pero no es conveniente editarlo a mano. El procedimiento para ello consiste en editar el fichero /etc/default/grub, hacer las modificaciones que consideremos y ejecutar sudo update-grub que se encargará de generar un nuevo /boot/grub/grub.cfg combinando los cambios introducidos por el usuario con una serie de scripts que se encuentran en /etc/grub.d

Se pueden realizar modificaciones varias en el fichero /etc/default/grub entre otras:
  • Tiempo que está visible el menú del GRUB
  • Arranque en modo texto
  • Sistema Operativo por defecto
  • Imagen de fondo para el GRUB
Estas modificaciones son permanentes, veamos por ejemplo como arrancar siempre en modo texto en lugar de la interfaz gráfica.

El procedimiento como se indica más arriba pasa por editar la línea del fichero /etc/default/grub y sustituir "quiet splash" por "text" en la variable que corresponde GRUB_CMDLINE_LINUX_DEFAULT 



Reparar GRUB2

Si el cargador de arranque se daña al igual que ocurre con otros SO, Linux no será capaz de arrancar. Existen formas sencillas, como arrancar desde Cd o Usb la distro de Linux que esta instalada y ejecutar herramientas que hagan la reparación de forma automática por nosotros por ejemplo Boot Repair. También hay ya utilidades preparadas para arrancar y hacer este tipo de reparaciones.

Sin embargo vamos a centrarnos en el método de reparación a través del terminal:

  • Lo primero será iniciar desde un live Cd o Usb con la distro de Linux que esté instalada.
  • Abrimos un terminal y localizamos la partición de Linux dónde esta instalado Ubuntu. El comando fdisk -l nos ayudará a ello 

Nota: ojo con esto porque puede haber otros SO instalados y muchas configuraciones distintas, asegurarse bien de cual es la partición donde esta instalado Ubuntu
  • Lo siguiente es montar la particion de Ubuntu en /mnt con el comando sudo mount /dev/sdX# /mnt, donde X y # serían el disco y partición respectivamente que tengamos.
  • Para finalizar reinstalamos el GRUB con el comando sudo grub-install --boot-directory=/mnt/boot /dev/sdX, donde X es el disco que corresponda.


Proteger GRUB2

Parece evidente el hecho de que poder editar las entradas del GRUB2 es algo muy interesante en ciertas ocasiones pero supone de paso dejar al sistema desprotegido frente a usuarios malintencionados.

Por ello en ciertos entornos donde el equipo es usado por varias personas como puedan ser sitios públicos o lugares de trabajo el superusuario debería implementar un método para impedir accesos indeseados que podrían dañar el sistema o acceder a información relevante.

Procedimiento:

  1. Hacer copia de seguridad de los ficheros implicados antes de hacer cualquier modificación es una norma básica en SO Linux.
  2. Añadir al fichero /etc/grub.d/00_header la lista de usuarios y contraseñas que queremos que puedan modificar el GRUB. (Las contraseñas no tienen que coincidir con las del usuario en el sistema). En este paso es muy conveniente cifrar la contraseña para que no sea visible ya que sino cualquier usuario podría leer el fichero y ver la clave.
  3. A partir de la version 2.0 del GRUB el paso anterior impide el acceso al modo comando (c) y al modo edicion de entradas (e) pero también impide la ejecución de cualquier entrada del menú por lo tanto un usuario que no estuviese en 00_header no podría arrancar el sistema. Para solucionar este "inconveniente" lo que se hace es permitir que ciertas entradas del GRUB las pueda usar cualquier usuario añadiendo el modificador --unrestricted a las líneas que queramos desproteger en el fichero 10_linux
  4. Por último es necesario aplicar los cambios con el comando para actualizar el GRUB sudo update-grub
Hay una estupenda explicación en la entrada:
http://geekland.eu/proteger-el-grub-con-contrasena/

jueves, 2 de mayo de 2019

07 - Administración de Usuarios y Grupos

Usuarios

Linux es un SO multiusuario y es imprescindible que el sistema implemente mecanismos de administración y seguridad para proteger los datos de los diferentes usuarios.

Las cuentas de usuarios representan a personas físicas, usuarios reales, o a entidades que gestionan servicios o aplicaciones, usuarios lógicos. Todo usuario definido en el sistema se corresponde con un identificador único (UID) y con una cuenta, donde se almacenan sus datos personales en una zona de disco reservada.

Observación

Normalmente a los usuarios normales se les asignan identificadores desde 1000 en adelante (o desde 500, en otras distros). Los identificadores por debajo de 100 se reservan para usuarios especiales del sistema.

Características generales de una cuenta
  • Nombre e identificador de usuario únicos.
  • Pertenece a un grupo principal.
  • Puede pertenecer a otros grupos de usuarios.
  • Tiene asociado un directorio personal para datos (carpeta home) y un intérprete de comandos (shell).
  • Debe contar con una clave de acceso personal y difícil de averiguar.
  • Tiene un perfil de entrada propio, donde se definen las características iniciales de su entorno de operación.
  • Puede tener una fecha de caducidad.
  • Pueden definirse cuotas de disco para cada sistema de archivos.
  • Es posible contar con un sistema de auditoria que registre las operaciones realizadas por el usuario.
Grupos

Para poder administrar los permisos de los usuarios de una forma más flexible, Linux permite la organización de usuarios en grupos y establecer permisos a los grupos.

Los grupos son construcciones lógicas usadas para agrupar varias cuentas de usuario con un propósito común, habitualmente compartir los mismos permisos de acceso en algunos recursos. Cada grupo se corresponde con un identificador único (GID). Los grupos solo pueden contener usuarios, no otros grupos.

Cada cuenta de usuario debe pertenecer al menos a un grupo principal o grupo primario y opcionalmente puede pertenecer a otros grupos secundarios.

Por ejemplo, si en un centro educativo el grupo "profesores" tiene acceso a ciertas carpetas, cuando demos de alta un profesor nuevo, tan solo tendremos que añadirlo al grupo "profesores" para que pueda acceder a todas esas carpetas.


Observación

Normalmente a los grupos que creemos se les asignan identificadores desde 1000 en adelante (o desde 500, en otras distros). Los identificadores por debajo de 100 se reservan para grupos especiales del sistema.

Ficheros de configuración y perfiles

Linux proporciona varios métodos para definir los usuarios que pueden conectarse al sistema. Lo típico es definir localmente en cada máquina las cuentas de los usuarios y grupos, aunque también pueden usarse métodos externos de autentificación (como PAM), que permiten que varias máquinas compartan las mismas definiciones para sus usuarios comunes.

En el proceso de definición de usuarios locales se ven involucrados los siguientes ficheros:
  1. /etc/passwd
  2. /etc/shadow
  3. /etc/group
  4. /etc/gshadow
1. /etc/passwd

Es el fichero principal de descripción de usuarios locales. Se compone de:
  1. Nombre de usuario.
  2. No usado (antiguamente, clave).
  3. Identificador de usuario (UID).
  4. Identificador del grupo primario.
  5. Descripción o nombre completo de la persona.
  6. Directorio personal.
  7. Intérprete de comandos.
/etc/passwd
2. /etc/shadow

Fichero que incluye las contraseñas encriptadas y las restricciones de las claves de acceso a las cuentas. Campos:
  1. Nombre de usuario.
  2. Clave codificada.
  3. Fecha del último cambio de clave.
  4. Días hasta que la clave pueda ser cambiada.
  5. Días para pedir otro cambio de clave.
  6. Días para avisar del cambio de la clave.
  7. Días para deshabilitar la cuenta tras su caducidad.
  8. Fecha de caducidad.
  9. Reservado (normalmente ignorado).

Notas

- Las fechas se expresan como el nº de días desde el 1/1/1970. Una ! al principio de la contraseña significaría que está bloqueada.

- Si en el campo de la contraseña aparece un * o una ! quiere decir que el usuario no podrá logearse a través de la contraseña (aunque podría logearse por otros métodos)

/etc/shadow
3. /etc/group

Contiene la definición de los grupos de usuarios. Campos:

  1. Nombre del grupo.
  2. No usado (antiguamente, clave del grupo).
  3. Identificador del grupo (GID).
  4. Lista de usuarios que tienen este grupo como secundario.
/etc/group
4. /etc/gshadow

Fichero oculto y opcional que contiene las claves de grupos privados. Normalmente no se utiliza. Campos:
  1. Nombre del grupo.
  2. Clave codificada (opcional).
  3. Lista de usuarios administradores.
  4. Lista de usuarios normales.

/etc/gshadow
Nota: La ! indica que no se usa clave o que está bloqueada


5. profile vs bashrc vs .bash_logout

Son tres ficheros ocultos en el home de cada usuario que permiten configurar de forma automática el entorno de su cuenta en tres momentos distintos:
  • profile es el mas importante y todas las órdenes que contiene se ejecutan en cada inicio de sesión. Si se modifica habrá que reiniciar la sesión para poder apreciar los cambios.
  • bashrc se lee cuando el usuario arranca una shell. Si lo modificamos bastaría arrancar una shell nueva para visualizar los cambios.
  • bash_logout se interpreta cuando salimos del sistema, es decir podemos aprovecharlo realizar ciertas acciones cuando finalicemos la sesión.

Comandos

La administración de usuarios y grupos solamente puede realizarlas el superusuario utilizando los comandos de gestión de usuarios. Las tareas y los comandos para realizarlas son:
  1. Creación de usuarios             useradd
  2. Modificación de usuarios        usermod
  3. Eliminación de usuarios         userdel
  4. Creación de grupos               groupadd
  5. Modificación de grupos          groupmod
  6. Eliminación de grupos           groupdel
  7. Añadir usuarios a un grupo    adduser
  8. Quitar usuarios de un grupo   deluser
useradd

Permite añadir un usuario indicando como parámetros su información particular en la misma línea de comandos. La sintaxis es:

useradd [opciones] nombre-usuario

Se añade el usuario javier al grupo principal profesores y al grupo secundario direccion, creando su directorio personal en /home/javier si no existe ya y seleccionando bash como intérprete de comandos
Nota: Aunque existe la posibilidad de asignar una clave al usuario a través del comando anterior, no es conveniente por seguridad y es mejor hacerlo de la manera habitual, a través del comando passwd.

Importante: Contrastar con adduser

usermod

Permite modificar todos los parámetros de la cuenta del usuario.

usermod [opciones] nombre-usuario


Mueve el directorio home de javier a alumno, le asigna un nuevo UID, un nuevo  login y un nuevo shell y bloquea la cuenta


userdel

Elimina una cuenta de usuario (pero por defecto no elimina los datos)

userdel [opciones] nombre-usuario


-r para eliminar también el home


groupadd

Crear un nuevo grupo indicando como parámetro el nombre del grupo.

groupadd nuevo_grupo

groupmod

Modificar el nombre de un grupo o el GID del mismo.

groupmod [-g GID] [-n nuevo-nombre] nombre-grupo

groupdel

Borrar un grupo. Sólo se puede borrar un grupo si ningún usuario lo tiene como grupo primario

# groupdel grupo_existente

gpasswd

Permite agregar o eliminar un usuario a un grupo. Lo usuarios y grupos deben existir

# gpasswd -a usuario grupo
# gpasswd -d usuario grupo

adduser

Es una utilidad mas amigable que se utiliza para crear y configurar un usuario por defecto como se espera o añadir un usuario a un grupo.

  • Si se invoca con un argumento (sin opciones), adduser pensará que el argumento es un usuario para el que se creará de forma automática el home, se solicitará la contraseña y también información personal de forma interactiva. 
  • Si se invoca con dos argumentos (sin opciones), adduser tratará de añadir el usuario (primer argumento) al grupo (segundo argumento)

Notas:
adduser dispone de opciones en la línea de comandos similares a useradd
- Se recomienda el uso de esta utilidad frente al comando useradd

deluser

Es una utilidad mas amigable que se utiliza para eliminar un  usuario o eliminar un usuario de un grupo.

  • Si se invoca con un argumento (sin opciones), deluser pensará que el argumento es un usuario que hay que eliminar
  • Si se invoca con dos argumentos (sin opciones), deluser tratará de eliminar el usuario (primer argumento) del grupo (segundo argumento).