Cuentas Usuario Linux. Gestión de ACLs y Cuotas

6
Sistemas operativos en red – Ciclos formativos de Informática – Arturo Martín Romero CUENTAS DE USUARIO, ACL y CUOTAS DE ESPACIO EN DISCO en GNU/LINUX La administración de cuentas de usuario en GNU/Linux puede realizarse a través de aplicaciones en modo gráfico (GUI, Graphics User Interface) o en modo comando (CUI, Command User Interface). En relación a estas aplicaciones GUI indicar que son dependientes de la distribución de GNU/Linux con la que se este trabajando, lo que implica que el nombre de dicha aplicación y su aspecto será diferente en cada una de ellas. Por contra, los comandos GNU/Linux utilizados en la gestión de cuentas de usuario son independientes de la distribución, razón por la cual, la práctica hará uso de ello. 1.- Gestión de cuentas de usuario y grupos de usuarios en GNU/Linux: “ useradd”, “usermoduserdel”, “groupadd”, “groupmod” y “groupdel”. [root@linux]# useradd -d directorio HOME-s SHELL\ -g grupo usuarios-G grupos secundarios” “nombre usuario[root@linux]# useradd -d /home/dominio/usuario1 -s /bin/bash \ -g dominio -G empleados,gestores usuario1 ¡¡Advertencia!! Como es lógico, para poder agregar una cuenta de usuario dentro de un grupo de usuarios del sistema GNU/Linux es necesario que ese grupo exista ya. En caso contrario será necesario crearlo previamente mediante la aplicación “groupadd”. [root@linux]# usermod -d directorio HOME-s SHELL\ -g grupo usuarios-G grupos secundarios” “nombre usuario[root@linux]# usermod -G administradores usuario1 [root@linux]# userdel nombre grupo[root@linux]# userdel usuario1 [root@linux]# groupadd nombre grupo[root@linux]# groupadd sercretaria [root@linux]# groupmod -n nuevo nombre grupo” “nombre grupo[root@linux]# groupmod -n gestion secretaria [root@linux]# groupdel nombre grupo[root@linux]# groupdel gestion 2.- Listas de control de acceso en GNU/Linux: Una de las mayores limitaciones que presenta GNU/Linux es la correspondiente a la administración de la seguridad y gestión de los permisos asociados a los archivos y directorios del sistema de ficheros. Por defecto, esta gestión se reduce a poder controlar los permisos de lectura ( r, read), escritura (w, write), y ejecución (x, execute) correspondientes al usuario, al grupo de usuarios asignados a un fichero o directorio y al resto de usuarios. Estos permisos pueden consultarse ejecutando el comando “ls” en formato largo “ls -l”: ARTURO MARTIN ROMERO – IES RIO ARBA – Curso 2009/2010 1

description

ACL y sistema de cuotas en Linux

Transcript of Cuentas Usuario Linux. Gestión de ACLs y Cuotas

Page 1: Cuentas Usuario Linux. Gestión de ACLs y Cuotas

Sistemas operativos en red – Ciclos formativos de Informática – Arturo Martín Romero

CUENTAS DE USUARIO, ACL y CUOTAS DE ESPACIO EN DISCO en GNU/LINUX

La administración de cuentas de usuario en GNU/Linux puede realizarse a través de aplicaciones en modo gráfico (GUI, Graphics User Interface) o en modo comando (CUI, Command User Interface). En relación a estas aplicaciones GUI indicar que son dependientes de la distribución de GNU/Linux con la que se este trabajando, lo que implica que el nombre de dicha aplicación y su aspecto será diferente en cada una de ellas. Por contra, los comandos GNU/Linux utilizados en la gestión de cuentas de usuario son independientes de la distribución, razón por la cual, la práctica hará uso de ello.

1.- Gestión de cuentas de usuario y grupos de usuarios en GNU/Linux: “useradd”, “usermod” “userdel”, “groupadd”, “groupmod” y “groupdel”.

[root@linux]# useradd -d “directorio HOME” -s “SHELL” \-g “grupo usuarios” -G “grupos secundarios” “nombre usuario”

[root@linux]# useradd -d /home/dominio/usuario1 -s /bin/bash \-g dominio -G empleados,gestores usuario1

¡¡Advertencia!! Como es lógico, para poder agregar una cuenta de usuario dentro de un grupo de usuarios del sistema GNU/Linux es necesario que ese grupo exista ya. En caso contrario será necesario crearlo previamente mediante la aplicación “groupadd”.

[root@linux]# usermod -d “directorio HOME” -s “SHELL” \-g “grupo usuarios” -G “grupos secundarios” “nombre usuario”

[root@linux]# usermod -G administradores usuario1

[root@linux]# userdel “nombre grupo”[root@linux]# userdel usuario1

[root@linux]# groupadd “nombre grupo”[root@linux]# groupadd sercretaria

[root@linux]# groupmod -n “nuevo nombre grupo” “nombre grupo”[root@linux]# groupmod -n gestion secretaria

[root@linux]# groupdel “nombre grupo”[root@linux]# groupdel gestion

2.- Listas de control de acceso en GNU/Linux:

Una de las mayores limitaciones que presenta GNU/Linux es la correspondiente a la administración de la seguridad y gestión de los permisos asociados a los archivos y directorios del sistema de ficheros. Por defecto, esta gestión se reduce a poder controlar los permisos de lectura (r, read), escritura (w, write), y ejecución (x, execute) correspondientes al usuario, al grupo de usuarios asignados a un fichero o directorio y al resto de usuarios. Estos permisos pueden consultarse ejecutando el comando “ls” en formato largo “ls -l”:

ARTURO MARTIN ROMERO – IES RIO ARBA – Curso 2009/2010 1

Page 2: Cuentas Usuario Linux. Gestión de ACLs y Cuotas

Sistemas operativos en red – Ciclos formativos de Informática – Arturo Martín Romero

[root@linux]# ls -l-rw-rw---- 1 arturo administradores 51470 2009-07-20 09:34 archivo.confdrwxrwxr-x 2 arturo usuarios 4096 2009-07-22 12:29 videos/lrwxrwxrwx 1 arturo usuarios 7 2009-10-22 08:21 enlace1 -> /tmp/tmp.txt

tipo permisos enlaces duros

propietario grupo tamaño fecha/hora nombre

- rw-rw---- 1 arturo administradores 51470 2009-07-20 09:34

archivo.conf

d rwxrwxr-x 2 arturo usuarios 4096 2009-07-22 12:29

videos/

l rwxrwxrwx 1 arturo usuarios 7 2009-10-22 08:21

enlace1

Para gestionar estos permisos, el propietario y el grupo de propietarios, en GNU/Linux se hace uso de los comandos “chmod”, “chown” y “chgrp”. Algunos ejemplos:

Para modificar los permisos de un archivo de tal forma que el usuario propietario pueda leer y escribir (modificar) sobre él, el grupo de propietarios tan sólo leer, y el resto de usuarios ni siquiera leer su contenido:

[root@linux]# chmod u+rw-x,g+r-wx,o-rwx “nombre fichero”

Para modificar los permisos de un directorio de tal forma que únicamente pueda acceder a su contenido (permiso de ejecución, x), ver su contenido (permiso de lectura, r), y escribir en él (permiso de escritura o modificación, w) sea el propietario del directorio pero nadie más:

[root@linux]# chmod u+rwx,g-rwx,o-rwx “nombre directorio”

Para cambiar de usuario propietario o grupo de propietarios de un archivo o directorio:

[root@linux]# chown “nombre usuario” “nombre fichero/nombre directorio”[root@linux]# chgrp “nombre grupo” “nombre fichero/nombre directorio”

En el caso de que queramos que el cambio sea recursivo, de tal forma que afecte al directorio indicado y todo lo que este contenga, se hará uso de la opción “-R”:

[root@linux]# chown -R “nombre usuario” “nombre directorio”[root@linux]# chgrp -R “nombre grupo” “nombre directorio”

Como se puede advertir de lo anterior, la concesión de privilegios a usuarios y grupos sobre archivos y directorios esta muy limitada. Es decir, si quisiéramos especificar que sobre un archivo o directorio diferentes usuarios y grupos, tuvieran a su vez distintos privilegios, por defecto en GNU/Linux sería imposible. Para suplir esta carencia se hace uso de “Listas de Control de Acceso”, ACL. Estas nos van a permitir asignar una lista de nombres de usuarios y grupos con sus privilegios de manera individualizada.

ARTURO MARTIN ROMERO – IES RIO ARBA – Curso 2009/2010 2

Page 3: Cuentas Usuario Linux. Gestión de ACLs y Cuotas

Sistemas operativos en red – Ciclos formativos de Informática – Arturo Martín Romero

2.1.- Comprobación de que nuestro Kernel admite ACL para los distintos sistemas de ficheros soportados por GNU/Linux (ext3, ext4, jfs, xfs, nfs, etc):

[root@linux]# more /boot/config-`uname -r` | grep ACLCONFIG_EXT2_FS_POSIX_ACL=yCONFIG_EXT3_FS_POSIX_ACL=yCONFIG_EXT4DEV_FS_POSIX_ACL=yCONFIG_REISERFS_FS_POSIX_ACL=yCONFIG_JFS_POSIX_ACL=yCONFIG_FS_POSIX_ACL=yCONFIG_XFS_POSIX_ACL=yCONFIG_GENERIC_ACL=yCONFIG_TMPFS_POSIX_ACL=yCONFIG_NFS_V3_ACL=yCONFIG_NFSD_V2_ACL=yCONFIG_NFSD_V3_ACL=yCONFIG_NFS_ACL_SUPPORT=m

2.2.- Instalar el paquete software “acl”. Utilidades de gestión de las listas de control de acceso “getfacl” y “setfacl”.

[root@linux]# apt-get install acl

2.3.- Editar el fichero “/etc/fstab” para activar las ACL en las particiones deseadas de manera permanente:

/dev/partition /punto/de/montaje ext4 defaults,acl 0 2

Otra opción sería montar la partción manualmente. Si quisiéramos activarlos únicamente de manera temporal para la sesión en en que nos encontramos ejecutaríamos el siguiente comando:

[root@linux]# mount -t ext4 /dev/partition -o defaults,acl /punto/de/montaje

Por útlimo, deberemos rehacer el montaje para que surtan efectos los cambios realizados en “/etc/fstab” (sólo en el caso de que no hayamos realizado el montaje manualmente mediante “mount”):

[root@linux]# mount –o remount /punto/de/montaje

2.4.- Ejemplos de utilización de las herramientas de gestión de las listas de control de acceso: “getfacl” para conocer las ACL de un directorio (con -R de manera recursiva, la de sus subdirectorios), y “setfacl” para asignar una ACL a un directorio (con -R de manera recursiva a todos sus subdirectorios). Advertir que no es necesario que sea el usuario “root” el que haga uso de estas herramientas de gestión, sino el mero propietario del archivo o directorio.

[usuario@linux]$ getfacl “nombre directorio”[usuario@linux]$ getfacl -R “nombre directorio”

ARTURO MARTIN ROMERO – IES RIO ARBA – Curso 2009/2010 3

Page 4: Cuentas Usuario Linux. Gestión de ACLs y Cuotas

Sistemas operativos en red – Ciclos formativos de Informática – Arturo Martín Romero

En “setfacl”, la opción “-m” nos deja modificar las ACL, la “-x” las elimina para un usuario, y “-b” elimina todas las ACL impuestas sin excepción, dejando únicamente los permisos nativos del sistema. El comando “chacl” es equivalente a “setfacl -m” (en el caso de querer modificar las ACL de un directorio, “-m”, y que además tenga un efecto recursivo sobre todos sus subdirectorios, “-R”, se expecificará, “-Rm”, primero “R” y luego “m”; de igual forma con el resto de opciones).

[usuario@linux]$ setfacl -m user:nombre_usuario:r-x nombre_directorio|nombre_archivo[usuario@linux]$ setfacl -Rm user:nombre_usuario:r-x nombre_directorio[usuario@linux]$ setfacl -m u:nombre_usuario:r-x nombre_directorio|nombre_archivo[usuario@linux]$ setfacl -Rm group:nombre_grupo:r-x nombre_directorio[usuario@linux]$ setfacl -Rm g:nombre_grupo:r-x nombre_directorio[usuario@linux]$ setfacl -Rm user:nombre_usuario:r-x,user:otro_nombre:rwx,... nombre_direc[usuario@linux]$ setfacl -x user:nombre_usuario nombre_directorio[usuario@linux]$ setfacl -Rx user:nombre_usuario nombre_directorio[usuario@linux]$ setfacl -b nombre_directorio[usuario@linux]$ setfacl -Rb nombre_directorio

2.5.- Para guardar la lista ACL asignadas y restaurarlas posteriormente:

[usuario@linux]$ getfacl -R /ruta/directorio > /ruta/get_rep.acl[usuario@linux]$ setfacl --restore=/ruta/get_rep.acl

3.- Por último aprenderemos a asignar cuotas de espacio en disco para que cada usuario pueda hacer uso del espacio existente en las particiones de nuestro disco de manera racionada.

¡¡IMPORTANTE!! Para establecer cuotas de espacio en disco en GNU/Linux es necesario instalar el paquete software “quota” (p.e., urpmi quota). Mediante este software pueden establecerse límites a nivel de bloque (número de KBytes) o inodo (número de archivos), o ambos. Al igual que en Windows estas se establecen a nivel de partición de disco (el comando “mount” sin argumentos nos informa de ellas). Para indicar sobre que particiones se van a establecer las cuotas será necesario editar el fichero “ /etc/fstab” y agregar los parámetros “usrquota” y “grpquota” en su cuarta columna. Después, será necesario rehacer el montaje de aquellas particiones afectadas en el fichero “fstab”, p.e., “mount –o remount /”. Ejecutando “ls –l raíz_patición” deberían aparecer los archivos “aquota.user” y “aquota.group” que nos advierten de la habilitación de cuotas. Algunos de los comandos más importantes relacionados con cuotas:

3.1.- Instalación del paquete software RPM “quota” (posteriormente instalaremos “quotatool” para gestionar las cuotas de “quota” de una manera más sencilla):

[root@linux]# apt-get install quota

3.2.- Editar el fichero “/etc/fstab” para activar las cuotas de espacio en dispo en las particiones deseadas de manera permanente:

/dev/partition /punto/de/montaje ext4 defaults,acl,usrquota,grpquota 0 2

Si quisiéramos activarlas únicamente de manera temporal para la sesión en en que nos encontramos ejecutaríamos el siguiente comando:

[root@linux]# mount -t ext4 /dev/partition -o defaults,acl,usrquota,grpquota /punto/de/montaje

3.3.- Rehacer el montaje (para que surtan efectos los cambios realizados en “/etc/fstab”, y no

ARTURO MARTIN ROMERO – IES RIO ARBA – Curso 2009/2010 4

Page 5: Cuentas Usuario Linux. Gestión de ACLs y Cuotas

Sistemas operativos en red – Ciclos formativos de Informática – Arturo Martín Romero

hayamos realizado el montaje manualmente mediante “mount”):

[root@linux]# mount –o remount /punto/de/montaje[root@linux]# ls –l raíz_patición

3.4.- Ahora la partición o punto de montaje ya esta preparada para soportar cuotas, pero antes de activarlas, deberemos chequear antes el sistema de cuotas: “quotacheck”, “quotaon”, “quotaoff”.

[root@linux]# quotacheck –augmv chequea los sistemas de archivos que tienen configuradas cuotas. Verifica y repara el control de cuotas (-a, todos los sitemas, -u, por usuario, -g, por grupo, -m, evita su desmontaje, -v, modo verboso).[root@linux]# quotacheck –ugmv /punto/de/montaje chequea únicamente la partición o sistema de archivos indicado, “/punto/de/montaje”.

Ahora ya las podremos activar o desactivar según deseemos (en el caso de que queramos que otra partición soporte cuotas, deberemos modificar nuevamente el fichero “/etc/fstab”, remontar dichar partición, y volver a chequear el sistema de cuotas, pero antes será necesario desactivar el sistema de cuotas si ya esta activado para alguna otra partición para que la verificación sea exitosa):

[root@linux]# quotaon -avug activa el sistema de cuotas sobre todos los puntos de montaje que lo soporten, “-a”, en modo verboso, “-v”, tanto para cuotas de ususario, “-u”, como de grupo, “-g”.[root@linux]# quotaon -ugv /home activa el sistema de cuotas para usuarios y grupos sobre el sistema de archivos o partición indicada.[root@linux]# quotaoff -v /home desactiva el sistema de cuotas sobre el sistema de archivos o partición indicada.

3.5.- A continuación se mostrará como utilizar las distintas herramientas de gestión de cuotas de que se dispone con la instalación de “quota”: “edquota”, “quota” y “repquota” (no obstante, una mejor opción es hacer uso de la herramienta software “quotatool”; ver 3.6).

[root@linux]# edquota -u nombre_usuario –f sistema_ficheros edita las cuotas sobre el sistema de ficheros indicado para el usuario deseado.[root@linux]# edquota -u nombre_usuario edita las cuotas para el usuario indicado sobre todos los sistemas de archivos que tengan habilitado el sistema de cuotas previamente mediante quotaon.[root@linux]# edquota -g nombre_grupo igual que con la opción “-u” pero a nivel de grupos de usuarios.[root@linux]# quota –s -u nombre_usuario verifica las cuotas de disco establecidas para el usuario indicado.[root@linux]# quota –s -g grupo_usuarios verifica las cuotas de disco establecidas para el grupo indicado.[root@linux]# quota verifica las cuotas del usuario que tiene activa la sesión.[root@linux]# repquota –s sistema_ficheros reporte global de las cuotas de todos los usuarios.[root@linux]# repquota –sg sistema_ficheros reporte global de las cuotas de todos los usuarios y grupos.[root@linux]# repquota –sga reporte global de las cuotas de todos los usuarios y grupos sobre todos los sistemas de ficheros que tienen habilitadas las cuotas.[root@linux]# edquota –t establece un tiempo de gracia a nivel global. Este empieza a tenerse en cuenta a partir del momento en que un usuario se salta el límite SOFT.[root@linux]# edquota –u nombre_usuario –T establece un tiempo de gracia para el usuario

ARTURO MARTIN ROMERO – IES RIO ARBA – Curso 2009/2010 5

Page 6: Cuentas Usuario Linux. Gestión de ACLs y Cuotas

Sistemas operativos en red – Ciclos formativos de Informática – Arturo Martín Romero

indicado, siendo este obligatoriamente menor al global.[root@linux]# edquota –p usuario1 usuario2 usuario3 … establece la cuota del usuario usuario1 como prototipo (-p) para el resto de usuarios. Es una forma de replicar cuotas de manera generalizada.[root@linux]# warnquota avisa a los usuarios por mensajería que hayan excedido las cuotas en su nivel suave, SOFT. En “/etc/warnquota.conf” podemos configurar los mensajes que se enviarán a estos usuarios.

3.6.- Otra forma de gestionar las cuotas es mediante “quotatool”. Esta nos facilitará muchísimo su gestión:

[root@linux]# apt-get install quotatool

Mediante las opciones de “quotatool” podremos establecer la cuota deseada:

“-u | -g” indicaremos el nombre del usuario o grupo de usuarios al que deseamos que le afecte la cuota.“-b”, para indicar cual será el límite a establecer en relación al máximo espacio en disco (bloques) que se podrá ocupar.“-i”, para indicar cual será el límite a establecer en relación al máximo número de ficheros (inodos) que se podrán crear.“-q”, para establecer un límite blando. Una vez sobrepasado este límite, se empezará a contabilizar el tiempo o periodo de gracia, durante el cual el usuario podrá seguir guardando información, o almacenando ficheros, hasta que se alcance el límite duro. Transcurrido ese tiempo, el usuario ya no podrá guardar más información en la partición correspondiente hasta que no reduzca su ocupación por debajo de la cantidad establecida como límite blando.“-l”, para establecer un límite duro.“-t”, para establecer un tiempo de gracia.

[root@linux]# quotatool -u|-g nombre_usuario|grupo -b|-i -q limite_blando /punto/de/montaje[root@linux]# quotatool -u|-g nombre_usuario|grupo -b|-i -l limite_duro /punto/de/montaje[root@linux]# quotatool -u|-g -b|-i -t “tiempo_gracia” /punto/de/montaje[root@linux]# quotatool -u arturo -b -q 500MB /mnt/datos[root@linux]# quotatool -u arturo -b -l 700MB /mnt/datos[root@linux]# quotatool -u arturo -i -q 100000 /mnt/datos[root@linux]# quotatool -u arturo -i -l 100500 /mnt/datos[root@linux]# quotatool -u -b -t “5 days” /mnt/datos

ARTURO MARTIN ROMERO – IES RIO ARBA – Curso 2009/2010 6