jueves, 1 de noviembre de 2012

Instalar y configurar un sistema de cuotas(quota) en ubuntu 12.04 server

Instalar y configurar un sistema de cuotas(quota) en ubuntu 12.04 server

Continuando con el anterior post donde se monto un sistema RAID 1, por software, ahora vamos a ponerle cuotas de espacio a los usuarios que van a utilizar el sistema RAID(ejemplo aplicable a un servidor de correo o cualquier otro recurso compartido que requiera de almacenamiento físico):

sudo su

apt-get install quota

- Editamos el archivo /etc/fstab y modificamos solo la linea que nos dice de que forma se va a montar nuestro dispositivo RAID y en los permisos le diremos que vamos a utilizar cuotas para el usuario y grupo:

nano /etc/fstab

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
proc /proc proc nodev,noexec,nosuid 0 0
# / was on /dev/sda1 during installation
UUID=7848f226-f5f1-4cee-ba55-37bb978930e1 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=1df5c0e7-32ce-4fd9-ba3a-9420acf1b2e3 none swap sw 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0

/dev/md127 /datos ext2 defaults,usrquota,grpquota 0 0

root@ubuntu:/# reboot

-Tras reiniciar, en el punto de montaje del dispositivo RAID nos debe aparecer dos nuevos ficheros

root@ubuntu:/# ls /datos/

aquota.group aquota.user lost+found
  • Para hacer un test y comprobar que todo ha ido bien, ejecutar:
root@ubuntu:/# quotacheck -cug /datos

Si todo ha ido bien, ya tenemos el sistema de cuotas montado y solo faltaría definir las cuotas.

- Las cuotas se pueden definir a nivel de usuario, argumento -u, o a nivel de grupo con el argumento -g:

root@ubuntu:/# groupadd contabilidad

root@ubuntu:/# useradd -g contabilidad -s/bin/bash -p user1 -d /home/user1 -m user1

root@ubuntu:/# useradd -g contabilidad -s/bin/bash -p user2 -d /home/user2 -m user2

root@ubuntu:/# quota -g contabilidad

Disk quotas for group contabilidad (gid 1003): none

- Definimos la cuota para el grupo contabilidad, con edcuota:

root@ubuntu:/# edquota -g contabilidad

Disk quotas for group contabilidad (gid 1003):
Filesystem blocks soft hard inodes soft hard
/dev/md127 0 0 0 0 2 4

* En este caso la cuota de se ha limitado por nº de entradas, 4 máximo o duro y 2 de gracia o blando, en el punto montaje, pero personalmente considero que es más efectivo limitar por tamaño, por lo que hay va un ejemplo:
/dev/md0        0        3072     6144       10        0        0
 * Se limita al grupo a utilizar un máximo de 6 Mb y una cuota de gracia de 3Mb.
La cuota de gracia significa: una vez superada esta cuota se avisa al usuario dejándole escribir hasta el limite máximo o duro, mientras que no expire el periodo de gracia, una vez agotado dicho periodo el sistema no dejara al usuario o grupo escribir.

- Para establecer el periodo de gracia basta con ejecutar:

root@ubuntu:/# edquota -t

Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/md0 7days 7days

- Damos los permisos que estimemos al punto montaje, en este ejemplo “cafe para todos”:

root@ubuntu:/# chmod 777 /datos/

-Para comprobar que todo a ido bien, nos logueamos como un usuario del grupo contabilidad y en el punto montaje creamos un fichero y a continuación vemos el estado de la cuota del grupo:

root@ubuntu:/# su user1

user1@ubuntu:/$ cd /datos/

user1@ubuntu:/datos$ touch prueba1 prueba2 prueba3 prueba4

user1@ubuntu:/datos$ quota -g contabilidad

Disk quotas for group contabilidad (gid 1003):
Filesystem blocks quota limit grace files quota limit grace
/dev/md0 0 0 0 4* 2 4 7days

- En este momento nos logearemos con otro usuario del grupo e intentaremos crear otro fichero:

root@ubuntu:/datos# su user2

user2@ubuntu:/datos$ cd /datos/

user2@ubuntu:/datos$ ls

aquota.group aquota.user lost+found prueba1 prueba2 prueba3 prueba4

user2@ubuntu:/datos$ touch prueba5

touch: cannot touch `prueba5': Disk quota exceeded

- Para desactivar las cuotas, ejecutar como root:

root@ubuntu:/datos# quotaoff -aug

- Comprobamos que efectivamente las cuotas se han sido desactivadas:

root@ubuntu:/datos# su user1

user1@ubuntu:/$ cd datos

user1@ubuntu:/datos$ touch prueba5

user1@ubuntu:/datos$ ls

aquota.group aquota.user lost+found prueba1 prueba2 prueba3 prueba4 prueba5

- Para volver a activarlas, como root:

root@ubuntu:/datos# quotaon -aug

- Ahora vamos ha ver unos comandos que nos facilitaran la administración del sistema de cuotas:
  • Estado actual de nuestro sistema de cuotas, comando repquota:

    root@ubuntu:/home/antonio# repquota /datos/
     
    *** Report for user quotas on device /dev/md0
    Block grace time: 7days; Inode grace time: 7days
    Block limits File limits
    User used soft hard grace used soft hard grace
    ----------------------------------------------------------------------
    root -- 2 0 0 0 2 0 0
    user1 -+ 0 0 0 4 2 4 7days

    * Aunque se le definan una cuota al root, estas no se le aplicaran.
    Para ver un reporte de todos los dispositivos RAID, repquota -a.
  • Para añadir repquota al cron, para que nos haga un reporte diario:
  1. Editamos fichero /etc/cron.daily e insertamos:

    repquota /datos › reporte

* En esta parte, imaginación al poder, ya podemos hacer un script.
  • Quota nos da la posibilidad de que cuando un usuario halla rebasado su cuota de gracia se le envíe un correo, esto se configura editando el archivo /etc/warnquota.conf:
; ; and # type comments are allowed
# and even blank lines
# values can be quoted:
MAIL_CMD = "/usr/sbin/sendmail -t"
FROM = "ro
ot@localhost"
# but they don't have to be:
SUBJECT = cuota disco rebasada
CC_TO = "xxxxxx@gmail.com"
# Acordaos que en el anterior post ya configuramos postfix para que utilizara gmail
SUPPORT = "root@localhost"
PHONE = "xxx xxx xxx"
#
CHARSET = UTF-8
#
MESSAGE = Hola %i, tu cuota de disco en %h.%d esta a punto de llegar al límite, por favor borre archivos innecesarios, gracias.

IMPORTANTE. Impedir que todas la cuentas de usuario, excepto las de root, pueda iniciar sesión para que ningún usuario te haga un ssh y te lo “tumbe” todo. Para lo cual editamos el fichero /etc/passwd y modificamos su interprete de comandos, por ejemplo modificarlo con /bin/NOBODY.






No hay comentarios:

Publicar un comentario