Préliminaires

La procédure qui suit ne concerne que la création du compte et la possibilité d'y accéder par ssh. Le reste de la configuration du compte peut impliquer la modification de fichiers relatifs à d'autres applications ou services.

Dans la mesure où le compte créé n'a aucun privilège, cette procédure peut être appliquée pour la création d'autres comptes que ceux des admin. sys. (par exemple pour toute personne dont le rôle au sein de Nos oignons peut nécessiter l'accès à un shell sur la VM de bureautique.

Pour créer un compte sans shell associé à un espace de stockage de fichiers accessible par sftp ou scp mais pas par ssh, voir plutôt ici.

Récupération des clefs publiques

Il est d'abord nécessaire d'obtenir les clefs publiques ssh et gpg de la personne dont le compte va être créé.

Idéalement, elles devraient être recueillies en personne par un membre existant de l'équipe d'admin sys., plus pragmatiquement, un trust path sur la clef gpg depuis un des membres existant permet d'acheminer la clef ssh, en attendant de pouvoir faire une vérification ultérieure, en personne.

Création du compte

La procédure doit rester minimale et être identique pour tous les types de compte, pour toutes les machines; le rôle ou la fonction de sa titulaire au sein de Nos oignons ne devraient pas intervenir à cette étape.

Soit « libellule » l'identifiant du compte à créer:

sudo -s

pour accéder à un shell root; puis créer le compte avec un mot de passe provisoire et y ajouter la clef publique ssh :

adduser --quiet --gecos "" libellule
passwd --expire libellule
mkdir -p --mode 0700 /home/libellule/.ssh
cp /chemin/ssh-key.pub /home/libellule/.ssh/authorized_keys
chmod 600 /home/libellule/.ssh/authorized_keys
chown -R libellule:libellule /home/libellule

Le répertoire personnel de libellule est prêt. Au besoin, modifier la configuration du serveur ssh de la machine (si la directive AllowUsers y est définie) et redémarrer le service; cela n'interrompt pas les connexions en cours :

if grep -q '^\s*AllowUsers\s' /etc/ssh/sshd_config; then
    sed -i "s,^\s*AllowUsers\s.*,& libellule," /etc/ssh/sshd_config
    service ssh restart
fi

Et enfin:

etckeeper commit "Création du compte de 'libellule'."

Automatisation

Le script shell add user permet de réaliser en une seule commande l'ensemble de ce processus:

sudo ./add_user -l libellule -k /chemin/ssh-key.pub -i

Ce script peut être téléchargé sur n'importe quelle machine depuis ce wiki:

wget https://nos-oignons.net/wiki-admin/Procédures/Créer_un_compte_user/add_user

Il est possible d'ajouter l'utilisateur dans des groupes avec l'option -G, séparés par une virgule, par exemple -G sudo,adm,staff.

Informer la titulaire du compte

Envoyer un mail chiffré en spécifiant :

  • l'identifiant de connexion ;
  • le mot de passe provisoire ;
  • le ou les noms complets de la machine ;
  • la ou les adresses IP (IPv4 et IPv6) de la machine ;
  • les empreintes des clefs ssh du serveur de la machine ; elles peuvent être obtenues avec la commande

    for k in /etc/ssh/ssh_host*key; do ssh-keygen -lf $k; done

Ne pas hésiter à rappeler le bon usage de etckeeper après le changement de mot de passe.