Gestion de comptes utilisateurs sous Linux

Parmi les tâches assignées à un administrateur système se trouve la gestion des comptes utilisateurs. C'est à dire permettre à plusieurs personnes d'accéder à des ressources, de manière sécurisée, en tenant compte des besoins de chacun et si possible, simple à mettre en œuvre.

Lorsqu'il s'agit d'une ou deux personnes à ajouter, de manière ponctuelle, la création d'un compte sur le système peut se faire manuellement en utilisant adduser (qui fonctionne de manière interactive) ou useradd (qui nécessite plusieurs paramètres). Évidemment les choses deviennent plus compliquée dès que plus de personnes sont concernées ("Two is company, three's a crowd").

adduser est une solution à exclure, useradd peut-être utile pour écrire votre propre script, qui est généralement la solution préconisée.

Une autre solution existe : la commande newusers ; cette commande est effectivement destinée à ajouter des utilisateurs en masse. Le principe est de préparer un fichier équivalent à /etc/passwd, à ce détail que le mot de passe est conservé en clair, et de l'utiliser comme argument pour cette commande. Tous les utilisateurs listés seront crées, ainsi que leur répertoires personnels.

Admettons que vous ayez une série de nouveaux utilisateurs à créer, votre fichier d'import ressemblera à ceci :

ash:o+uykC49Hw:2001:500:Ash:/home/ash:/bin/bash
ava:ct2yYGu2o*:2002:500:Ava:/home/ava:/bin/bash
bender:sF8\guswB1:2003:500:Bender:/home/bender:/bin/bash
ed-209:tko+8Cj1Kk:2004:500:ED-209:/home/ed-209:/bin/bash
glados:hn3+qep4EO:2005:500:GLaDOS:/home/glados:/bin/bash
hal:Oya4uF8sj{:2006:500:HAL:/home/hal:/bin/bash
jarvis:a%bfi2ID1t:2007:500:Jarvis:/home/jarvis:/bin/bash
joshua:udH}8Gmzq4:2008:500:Joshua:/home/joshua:/bin/bash
optimus:po8uh#M5oZ:2009:500:Optimus Prime:/home/optimus:/bin/bash
r2-d2:9@lIh3inQa:2010:500:R2-D2:/home/r2-d2:/bin/bash
t-800:z5flLDw=1z:2011:500:T-800:/home/t-800:/bin/bash
wall-e:e5q%3NMfut:2012:500:Wall-E:/home/wall-e:/bin/bash

Générer ce fichier requiert quelques étapes préliminaires :

- Définir les comptes utilisateurs. Notre exemple ne comporte pas vraiment de cas particulier, mais vous pouvez vous retrouver à à gérer des noms particulièrement longs, ou avec des caractères spéciaux (espace, apostrophe, accents, ...). Ces identifiants seront probablement aussi ceux que vous utiliserez pour le répertoire personnel de chacun, vous devez donc vous assurer qu'ils n'engendreront pas de problème au niveau du système de fichiers.

Une règle que vous pouvez choisir d'appliquer est normaliser tous les identifiants en n'acceptant que certains caractères (de a à z, minuscules uniquement, chiffres et le symbole tiret). La gestion des collisions (deux personnes ayant un identifiant potentiellement identique) doit aussi être préparée à l'avance. La lecture du chapitre 8 "Namespaces" du livre "The Practice of System and Network Administration" à ce sujet est recommandée.

- Générer des mots de passe. Vous pouvez assigner un mot de passe unique à chaque utilisateur avec l'aide de la commande mkpasswd. Vous pouvez facilement contrôler l'utilisation de chiffres, caractères spéciaux et la longueur du mot de passe.

La première chose à s'assurer est que ce fichier est proprement sécurisé (droits d'accès minimum, une seule copie de travail, ...). Vous devrez conserver au moins une copie après utilisation pour founir le mot de passe initial à chaque utilisateur, après cela le fichier pourra être supprimé.

Une fois votre fichier d'import préparé, il est fortement recommandé de le tester avant utilisation. Là encore, une commande existe pour cette tâche en particulier : pwck. Utilisez cette commande avec les options -q et -r sur votre liste pour repérer les possibles erreurs.

Si votre liste d'utilisateurs est facilement accessible en consultation (base de données, annuaire, ...) la mise en place d'une solution automatique pour ajouter de nouveaux utilisateurs peut se faire aisément.

publié le 20 juin 2016