Sur une machine, notamment sur un serveur soumis à de nombreuses solicitations en parallèle il peut être utile d'affecter des quotas de ressources.

Sous FreeBSD, bien que prévu en natif, cela n'est pas configuré par défaut et nécessite quelques paramétrages.

Création d'une nouvelle classe

La classe par défaut (default) donne une accès illimité à toutes les ressources. Pour modifier le quota des ressources, il faut commencer par créer une nouvelle classe.

le fichier /etc/login.conf

La définition des classes est réalisée dans le fichier /etc/login.conf. La classe par défaut est définie comme suit :

default:\
        :passwd_format=md5:\
        :copyright=/etc/COPYRIGHT:\
        :welcome=/etc/motd:\
        :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\
        :path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X11R6/bin ~/bin:\
        :nologin=/var/run/nologin:\
        :cputime=unlimited:\
        :datasize=unlimited:\
        :stacksize=unlimited:\
        :memorylocked=unlimited:\
        :memoryuse=unlimited:\
        :filesize=unlimited:\
        :coredumpsize=unlimited:\
        :openfiles=unlimited:\
        :maxproc=unlimited:\
        :sbsize=unlimited:\
        :vmemoryuse=unlimited:\
        :priority=0:\
        :ignoretime@:\
        :umask=022:

Avec les significations suivantes :

Variable Description Exemple
copyright
welcome Fichier contenant le message de bienvenue lors d'une connexion
setenv Définition de variables d'environnement, séparées par des virgules MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES
path Chemin de recherche de sexécutables et bibliothèques par défaut, chaque chemin étant séparé par des espaces /sbin /bin /usr/sbin /usr/bin /usr/games
nologin
cputime Temps CPU maximal qu'un processus a le droit d'utiliser
datasize La taille mémoire maximale de données qu'un processus peut consommer
stacksize Quantité maximale de m"moire de la pile pour un processus
memorylocked Quantité maximale de mémoire qu'un processus peut verrouiller
memoryuse Quantité maximale de mémoire qu'un processus peut utiliser
filesize Taille maximale d'un fichier
coredumpsize Taille maximale d'un coredump
openfiles Nombre maximal de fichier qu'un processus peut ouvrir
maxproc Nombre maximal de processus qu'un utilisateur peut avoir
sbsize Taille maximale d'un tampon de socket qu'une application de l'utilisateur peut utiliser
vmemoryuse
priority Priorité des processus de l'utilisateur
timezone Valeur par défaut de la variable d'environnement TZ
minpasswordlen Taille minimale du mot de passe. Il faudra vérifier que tous les mots de passe actuels de la classe respectent cette règle minpasswordlen=15
mixpasswordcase Oblige à définir un mot de passe mélangeant des majuscules et des minuscules
ignorenologin Si cette variable est présente, l'utilisateur peut se connecter même si /var/run/nologin existe
ftp-chroot L'utilisateur est redirigé vers une encapsulation (chroot) lors d'une connexion FTP
passwd_format Définit le hachage utilisé pour stocker les mots de passe dans le fichier /etc/master.passwd. la valeur par défaut est md5, mais l'on peut utiliser des (DES), blf (Blowfish) ou nthash (Windows NT).
times.allow Définit les jours et heures où l'utilisateur peut se connecter. Le jour est noté Mo, Tu, We, Th, Fr, Sa et Su, accolé des heures (24 heures) séparées par un tiret (-), le tout séparé par des virgules times.allow=Mo8-18,Tu8-19,We8-17
times.deny de la même façon que times.allow, cette variable indique quand l'utilisateur ne peut pas se connecter. Un utilisateur déjà connecté n'est pas déconnecté. En cas de conflit avec times.allow, c'est la sécurité qui prime, donc times.deny qui a la priorité times.allow=Mo12-14,Tu12-14,We12-14