Mit Hilfe von Quotas kann der Speicherplatz, welchen die Benutzer zur Verfügung haben, eingeschränkt werden. Dazu muss die Quota Option in der Kernelkonfiguration vorhanden sein:
options QUOTA
Ist die Option noch nicht vorhanden, muss der Kernel neu gebaut werden:
# cd /usr/src && make kernel KERNCONF=<Name der Kernelkonfiguration>
Nun können die Quotas in der /etc/rc.conf aktiviert werden. Normalerweise werden die Quotas beim Systemstart überprüft. Da die Überprüfung unter Umständen einige Zeit in Anspruch nehmen kann, kann sie mit check_quotas="NO" in der rc.conf deaktiviert werden:
# echo 'enable_quotas="YES"' >> /etc/rc.conf
# echo 'check_quotas="NO"' >> /etc/rc.conf
In der /etc/fstab kann nun festgelegt werden, auf welchen Dateisystemen Quotas eingerichtet werden sollen. Möchte man die Quotas pro Benutzer aktivieren, benutzt man die Option userquotas, für Gruppen groupquota:
# cat /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1e /tmp ufs rw 2 2
/dev/ad0s1f /usr ufs rw 2 2
/dev/ad0s1g /usr/home ufs rw,userquota 2 2
/dev/ad0s1d /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
Nun muss die Maschine neu gestartet werden, um den neuen Kernel zu laden und die Quotas zu aktvieren:
# shutdown -r now
Ist die Maschine neu gestartet, können die Quotas für die Benutzer festgelegt werden. Dazu verwendet man die -u Option von edquota. Sollen die Quotas pro Gruppe festgelegt werden, verwendet man die -g Option:
# edquota -u test
edquota: creating quota file /usr/home/quota.user
Nun wird ein Texteditor geöffnet. Damit können die Limits für den verwendeten Speicherplatz und/oder die belegten Inodes gesetzt werden. Das Soft-Limit kann vom Benutzer für eine gewisse Zeit (normalerweise 7 Tage) überschritten werden, das Hard-Limit kann nicht überschritten werden:
Quotas for user test:
/usr/home: kbytes in use: 0, limits (soft = 1024000, hard = 2048000)
inodes in use: 0, limits (soft = 1024, hard = 2048)
Nach dem Speichern der Datei kann die aktuelle Quota-Konfiguration abgerufen werden:
# quota -v test
Disk quotas for user test (uid 1001):
Filesystem usage quota limit grace files quota limit grace
/usr/home 20 1024000 2048000 10 1024 2048
Überschreitet der Benutzer das Soft-Limit, wird die Zeit, wie lange das Soft-Limit noch überschritten werden kann, angezeigt:
# quota -v test
Disk quotas for user test (uid 1001):
Filesystem usage quota limit grace files quota limit grace
/usr/home 1152644* 1024000 2048000 7days 13 1024 2048
Das Hard-Limit kann nicht überschritten werden:
# quota -v test
Disk quotas for user test (uid 1001):
Filesystem usage quota limit grace files quota limit grace
/usr/home 2047974* 1024000 2048000 7days 15 1024 2048
# cp /tmp/ports.tar.gz ~
/usr/home: warning, user disk quota exceeded
/usr/home: write failed, user disk limit reached
cp: ports.tar.gz: Disc quota exceede
Mehr Informationen zu Quotas findet man in den Manpages quota(1) und edquota(8).