Attivare le quote su un filesystem

Document-page-setup.png Attenzione: questo articolo è ancora incompleto e in fase di scrittura da parte del suo autore.

Sentitevi liberi di contribuire, proponendo modifiche alla guida tramite l'apposita pagina di discussione, in modo da non interferire con il lavoro portato avanti sulla voce. Per altre informazioni si rimanda al template.



File System

Sommario

  1. Principale
  2. File e permessi
  3. Quote utenti

Introduzione

In questo articolo vedremo come attivare e gestire le quote su base utenti e gruppi.

A cosa servono le quote?. Nel caso di sistemi con più utenti, il loro utilizzo è utile perché permette di impedire che pochi utenti occupino tutto lo spazio disponibile, a discapito degli altri.

Servono a limitare lo spazio di disco che gli utenti (es. max 500MB) ma anche il numero massimo di file/directory che possono creare. Questo perché anche i file vuoti occupano spazio su disco. Le quote si possono, quindi, impostare per:

  1. limitare il numero di file e directory (numero di inode)
  2. limitare lo spazio disco (numero di blocchi)

La limitazione può essere per utente e per gruppo. La limitazione per gruppo si riferisce allo spazio occupato/numero di file o directory, complessivo di tutti i membri dello stesso gruppo. Se vogliamo che ciascun utente di uno stesso gruppo (es. Studenti) abbia una identica policy di quota dobbiamo allora definire la quota per un utente qualsiasi del gruppo e poi "propagarla" (v. avanti) a tutti i restanti membri.

Nell'uso di quota sono definiti tre attributi:

  1. Limite soft (es. 100MB): "limite flessibile". L'utente riceve un warning ("disk quota exceeded") se prova a salvare/creare un file di dimensioni superiori al limite flessibile.
  1. Periodo di grazia (es. 7 giorni): al raggiungimento del limite flessibile, decorre un periodo di tempo durante il quale all'utente è concesso sforare tale limite, senza che riceva quindi l'errore di "quota disco superata"; sempre che non superi un secondo limite più grande (detto "rigido").
  1. Limite hard (es. 500MB): "limite rigido". L'utente non sarà in grado di creare/salvare file con una dimensione maggiore di quella definita nel limite hard. E' un limite che non può essere derogato temporaneamente come quello soft.

Requisiti

Occorre che il kernel abbia il supporto per le quote. I kernel precompilati hanno tale supporto. Se invece state usando un kernel compilato da voi, assicuratevi di aver incluso il supporto alle quote:

# echo 'quota_v2' >> /etc/modules

Installare quota e quota tool

# apt-get install quota quotatool

Modificare /etc/fstab

Loggarsi sul gestore grafico come root (eviterà l'impegno della partizione /home). Assicurarsi che non ci siano utenti collegati con il comando who:

# who

In tal caso riavviare il sistema

# shutdown -r now "Riavvio del sistema per manutenzione"

Per prima cosa dobbiamo abilitare nel file /etc/fstab le quote sul filesystem che ci interessa; solitamente si attivano sul punto di mount relativo alla directory radice delle home. Nel caso non ci sia un punto di mount per /home (es. una partizione dedicata alle home dir. utenti) occorrerà applicare le modifiche all'intero filesystem (punto di mount: /):

# cp /etc/fstab  /etc/fstab.orig
# nano /etc/fstab

Quindi accodare la stringa ,usrquota,grpquota al campo "dump" della riga relativa al punto di mount dell'home, nell'esempio /home è montata su /dev/hda5:

/dev/hda5       /home           ext3      defaults,usrquota,grpquota        0       2

L'opzione usrquota attiva le quote per gli utenti, mentre grpquota le attiva per i gruppi.

N.B. Scrivere tutto su una sola riga e senza spazi prima o dopo le virgole (si consiglia l'editor predefinito nano).

Creazione file quota

Occorrerà creare i due file "vuoti" quota (es. in /home)

# quotaoff -avug    
# touch /home/aquota.user aquota.group
# chmod 600 /home/aquota.user aquota.group

Per rendere attive la nuova configurazione, dobbiamo smontare e rimontare il filesystem.

# mount -o remount /home 

Se tutto è andato bene con il comando:

# cat /etc/mtab

dovremmo leggere le nuove opzioni: usrquota,grpquota

Attivare quota

# quotacheck -avugcmf 
# quotaon -avug 

Impostare la quota per un utente

Per impostare la quota di un utente, bisogna dare il comando edquota (username va sostituito con la userid dell'utente):

# edquota username

Si aprirà il vostro editor predefinito, che mostrerà una schermata simile a questa:

  Disk quotas for user user (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/hda5                      1848      49600      50000        244        0        0
  • La prima cifra indica i blocchi attualmente in uso da parte dell'utente.
  • La seconda indica il limite soft espresso in blocchi.
  • La terza il limite hard, sempre espresso in blocchi.
  • La quarta cifra indica il numero di inode utilizzati dall'utente, e le successive due sono i limiti soft e hard sugli inode.

Un valore 0 significa che quella proprietà non è impostata.

Le modifiche effettuate vengono controllate quando si chiude l'editor. In caso abbiate commesso qualche errore vi verrà segnalato.

Impostare il periodo di grazia

Il periodo di grazia è definito a livello di punto di mount e si può modificare con il comando:

edquota -t

può essere specificato con le seguenti unità di misura: 'seconds', 'minutes', 'hours', and 'days' (es. '7days')


Usare quotatool

quotatool è uno strumento che consente di semplificare le operazione di gestione delle quote degli utenti, rispetto edquota, anche in modo dinamico: cioè è possibile modificare, in più o in meno, i diversi limiti. Ad esempio il seguente comando:

quotatool -v -u mariorossi -b -q 30M  -l 50M  /home

Imposta per l'utente 'mariorossi' i limiti di spazio disco soft/hard: 30MB/50MB

Mentre il successivo comando:

quotatool -v -u mariorossi -b -q +20M  /home

Incrementa di 20MB il limite soft sempre dell'utente 'mariorossi'

E' possibile anche modificare il periodo di grazia. Es:

quotatool -u -b -t "1 week" /home

Imposta per tutti gli utenti che hanno una quota su /home il periodo di grazia a 1 settimana.

Per altri esempi di utilizzo di questo utile strumento consultare la documentazione: [1]

Impostare una stessa quota per ogni utente

Dopo aver impostato la quota di un utente, se volessimo usare le stesse impostazioni per altri utenti, sarà sufficiente scrivere, per esempio:

# edquota -p mariorossi mariobianchi

Tale comando copierà le impostazioni sulla quota di mariororssi e le utilizzerà anche per l'utente mariobianchi.

E' consigliabile crearsi un utente predefinito al quale applicare la quota desiderata. Quando verrà creato un nuovo utente con il comando:

# edquota -p   uid_predefinito   uid_nuovo_utente

verrà assegnata al nuovo utente la stessa quota dell'utente predefinito.

Oppure usare il seguente script che automatizza il compito, per tutti gli utenti:

# edquota -p uid_predefinito `awk -F: '$3 > 999 {print $1}' /etc/passwd`

Per utenti LDAP:

# edquota -p uid_predefinito `getent passwd | awk -F: '$3 > 999 {print $1}'`

Report quota

Con il comando repquota è possibile visualizzare una tabella con tutte le quote impostate a livello di gruppo, di utente e con limite di blocchi e di inode.:

# repquota -agus

Es.

*** Report for user quotas on device /dev/mapper/vg_system-server+home
Block grace time: 7days; Inode grace time: 7days
                       Space limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --    292K      0K      0K             51     0     0       
frank     --    535M    800M   1200M           2709     0     0       
mariobianchi -- 143M    800M   1200M           2149     0     0       
marioverdi --  54408K    800M   1200M           1595     0     0
*** Report for group quotas on device /dev/mapper/vg_system-server+home
Block grace time: 7days; Inode grace time: 7days
                       Space limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --    292K      0K      0K             51     0     0       
mail      --    272K      0K      0K             68     0     0       
frank     --    479M      0K      0K           2299     0     0       
faculty   --  56752K      0K      0K            410     0     0

Se qualcosa va storto?

Può capitare di impostare valori insufficienti nei limiti e bloccare così i login. Niente panico:

# quotaoff -avug

E verranno disattivate tutte le quote ;)