Salut à tous!
Hier après-midi, j’ai commencé à coder un petit logiciel en C qui permet d’ajouter facilement une masse conséquente d’utilisateurs sous Linux, et de leur appliquer des quotas au passage.
Le code source en C:
http://bluelambda.free.fr/etuadmin-src.tar.gz
Ce logiciel commence par charger son fichier de configuration (etuadmin.cfg) et traite les données du fichier.
Ensuite il va lire un fichier (etudiants) dans lequel il y a le Nom Prénom de chaque utilisateur. Un utilisateur par ligne.
Il va écrire le fichier de sortie (comptes etudiants) qui contient l’UID attribué, le Nom Prénom, le login et le passe en clair généré aléatoirement.
Il crypte le mot de passe, et il utilise la commande useradd pour créer l’utilisateur.
Tout cela marche bien, je peux ensuite me logguer sans souci sur les comptes créés.
Pour finir, le programme est censé (mais alors censé hein) appliquer les quotas disque pour chaque utilisateur nouvellement créé, via la fonction quotactl (voir ‘man quotactl’).
(Voir lignes 210 à 257 de mon programme).
Seulement, au moment de l’application des quotas, il me renvoie l’erreur ‘EINVAL’: “‘type’ n’est pas un type de quota supporté. Ou bien ‘special’ n’a pas pu être trouvé.” (définition de l’erreur d’après man).
Dans mon programme, ces variables sont aux valeurs:
type: USRQUOTA, comme indiqué dans les pages de man.
special: le système de fichiers concerné.
Je précise que mes quotas sont bien configurés sur le système de fichiers en question. Je les gère via Webmin sans aucun souci.
Le fichier aquota.user est présent à la racine.
aquota.group ne l’est pas car je n’utilise pas les quotas de groupe.
C’est tout, c’est la première fois que j’utilise cette fonction, donc si il y a des personnes expérimentées là dedans, ou des pros du quota disque, ce serai simpa de me donner un petit coup de pouce, car là je bloque.
PS: j’ai examiné quelques codes source sur Internet qui utilisent cette commande, mais aucun de ceux que j’ai trouvé ne fait ce que je veux faire, ils ne m’ont pas éclairé.
Je vous remercie, bye!