From ba7f565d23386781fa0b0d96f8171551f2682004 Mon Sep 17 00:00:00 2001 From: shirenn Date: Sat, 16 Apr 2022 18:33:34 +0200 Subject: [PATCH] [howto] Ajout de become_nounou.md --- howto/become_nounou.md | 156 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 howto/become_nounou.md diff --git a/howto/become_nounou.md b/howto/become_nounou.md new file mode 100644 index 0000000..8dfb916 --- /dev/null +++ b/howto/become_nounou.md @@ -0,0 +1,156 @@ +# Comment devenir nounou ? +Bonjour jeune apprenti⋅e, tu regardes surement avec des œils pleins d'étoiles +tes ainé⋅es qui actuellement disposent des droits suprèmes sur l'infrastructure +du crans. Ce petit document est là pour t'expliquer comment toi aussi un jour tu +pourras devenir l'un⋅e d'elleux. Et quand il sera temps et que tu commenceras à +t'encrouter comment tu pourras rendre tes droits. + +Déjà commençons par une question un peu conne mais néanmoins légitime « Qui +"mérite" d'être nounou ? » Premièrement, devenir nounou **N'EST PAS** une +question de compétence. Pas besoin de connaître l'infrastructure par cœur, tous +les fichiers de conf, être un pro d'apt, d'ansible et de la couche 2. Tout ce +qu'on attend d'une nouvelle nounou c'est d'être capable de ne pas faire +n'importe quoi avec ces droits. Devenir nounou ce n'est pas avoir fini son +apprentissage mais bien la deuxième étape de celui-ci où on commence à mettre +les mains dans le camboui. Et ça ça présuppose seulement qu'on va pas causer du +tort en utilisant ces droits. + +Détaillons les un peu ces droits, ce qu'il permette de faire et qu'est ce qu'on +entends par « causer du tort ». En devenant nounou, vous débloquez les accès à +toute l'infrastructure. Techniquement, il n'y a plus de fichiers que vous ne +pouvez pas voir, modifier ou supprimer et ce sur toutes les machines du crans. +De même, on chiffre pour vous tous les mots de passe qui ont trait au technique +du crans. Ce sont des droits très extensifs. D'où la possibilité de faire une +erreur de manipulation. Normalement tout est fait dans l'infrastructure pour +limiter la casse possible. On a de la redondance où c'est possible et +nécessaire, on fait des backups quotidiennes à la fois des données utilisateurs +mais aussi des données d'administration. Cependant, tout ça ne change pas le +fait qu'une mauvaise commande rentrée dans votre shell peut rendre le +crans hors ligne pour quelques heures ou supprimer de manière irreversible des +données. Quand vous devenez nounou, on vous fait confiance pour éviter ce genre +de choses au maximum. Après les erreurs ça arrive toujours. La personne qui +écrit ces lignes en a fait un certain nombre avec des conséquences diverses +qui compte ce n'est pas de ne pas en faire du tout, c'est d'en faire peu, +d'apprendre de celle ci et de s'assurer qu'elles ne sont pas irreversible. + +Il y a aussi quelque chose qu'il faut souligner. Et normalement quand vous +deviendrez nounou vous allez le voir assez fréquement (à chaque fois que vous +faîtes un sudo pour la première fois sur une machine) : +``` +We trust you have received the usual lecture from the local System +Administrator. It usually boils down to these three things: + + #1) Respect the privacy of others. + #2) Think before you type. + #3) With great power comes great responsibility. +``` +Ce court texte résume bien ce que je veux aborder ici. Les droits que vous vous +voyez confier sont une intrusion phénoménale dans la vie privée des gens. Si +vous voulez une métaphore, vous pouvez voir ça comme si les adhérent⋅es du crans +vous avait donné la clé de leur maison pour que vous puissiez réparer quand il y +a une fuite d'eau, mais pas pour que vous fouillez dans le bureau pour voir leur +papier. Beaucoup de nos adhérent⋅es utilisent les outils qu'on met à leur +disposition pour organiser une partie de leur vie, que ce soit d'utiliser +l'adresse mail qui leur est fournie ou stocker des données dans leur owncloud, +et nous en sommes très heureux⋅ses. La charte que vous avez signé en devenant +apprenti⋅e mentionne déjà ces problématiques mais il est important que ce soit +très clair. **Vous ne pouvez consulter ou diffuser les données personnelles +d'un⋅e adhérent⋅e qu'avec son consentement explicite.** On a parfois tendance à +l'ENS à faire des abus de droits une blague, ce n'est pas le cas au crans ! + +Bon maintenant que ces clarifications et rappels ont été faits, on va pour +passer aux choses plus intéréssantes: comment on se donne ces droits (et dans la +marge, comment on se les retire) ? + +## Rentre dans le cercle +Le groupe des superadministrateurs au crans est le groupe nounou. On va donc +faire un petit tour dans le ldap et sous ou=groups,cn=_nounou on rajoute les +uids correspondant au⋅x personne⋅s qu'on souhaite ajouter. Voilà, vous avez +normalement:tm: les accès roots sur toutes les machines du crans. Cependant, +vous allez peut-être constater qu'il y a certaines machines où cela ne +fonctionne pas. C'est sûrement dû à ces ~~conneries~~ de replicat ldap. Il faut +à ce moment là aller faire un tour dessus pour forcer la resynchro (c.f. +`tools/ldap.md`). + +## Give me the password +Vous avez *50* nouveaux mot de passes. Il est maintenant nécessaire de +rechiffrer le pass pour vous. C'est un peu chiant mais on s'y fait. Voilà la +procédure: + + 1. On se souvient du hash de commit courant : + `HASH=$(git rev-parse HEAD)` + 1. On ajoute toutes les personnes concernées dans le groupe nounou dans le + fichier `.groups.yml` du store et on commit ces changements `git commit -m + toto1234`. + 1. On rechiffre tous les fichiers à rechiffrer + `cat .last_group.json | jq -r '. | with_entries( select(.value | any( .== + "nounou"))) | keys[]' | while read passfile; do pass crans reencrypt + $passfile; done` + 1. On supprime tous les commits inutiles : + `git reset --soft $HASH; git commit -m 'Coucou les copains'` + 1. On vérifie que ça marche et on push :) + +Petit point pour quand on retire des droits au gens. Là où pour tous les autres +droits, quand vous les retirez à quelqu'un⋅e bah iel les a plus, ce n'est pas le +cas pour les mots de passe. Il reste dans l'historique de git un moment où la +personne qui perds ces droits à toujours les mots de passes chiffrées pour elle. +On choisit généralement de s'en tamponner l'oreille avec une babouche. +Cependant, il peut y avoir certains moments où on veut effectivement retirer +complètement à quelqu'un⋅e la possibilité d'utiliser un mot de passe. Dans ce +cas il faut le changer :( + +## Thank you for your services +Au crans on a **plein** de services. Certains sont gentils et écoutent +directement le ldap pour savoir qui a des droits, d'autres s'en foutent et ils +faut se rajouter dans les admins à la main. Petite liste ci dessous. + +### Gitlab +Il faut aller dans la zone d'administration, puis dans la liste +d'utilisateur⋅ices et changez le profil de l'utilisateur⋅ice de regular à admin. + +### Horde +Si le service existe encore (ce que je ne vous souhaite pas), il faut aller +faire un tour dans la configuration dans `/etc/horde/horde/config.php` et +rajouter son login ldap **adhérents** à la liste. + +### Mailman +Il faut se connecter normalement au logiciel, puis allez dans la section admin +https://lists.crans.org/admin, dans la sous page utilisateur⋅ices, on peut +rechercher les personnes concernées pour leur donner les deux statuts admin +(accès à la zone d'administration) et superutilisateur (bypass tous les checks +de droits). + +### Owncloud +Il faut aller dans la zone d'administration et rajouter les utilisateur⋅icess au +groupe d'administration. + +### Re2o +Oh lad, j'espère que ça aussi ça existe plus. Il faut aller dans la section +gestion des groupes et rajouter les personnes aux groupes nounous et au groupe +superutilisateur. + +### Kiwi +On edite le fichier de conf du wiki sous `/etc/moin/mywiki.py` et on rajoute son +compte wiki dans la liste des administrateurs. + +### IRC +On édite le fichier `/etc/inspircd/opers.conf` pour rajouter un bloc suivant + +``` + + password="" + hash="sha256" + host="*" + type="Deity" + fingerprint="" + autologin="on" +> +``` +Où le hash du mot de passe peut être obtenu en envoyant `/quote mkpasswd +hmac-sha256 `. Pour rendre les changements effectifs on reload le +service inspircd (tips, la manière la plus rapide de perdre ses droits est de +restart le serveur plutôt que de le reload ^^). + +Voilà, tu as maintenant gagné le droit de t'ajouter ou de te retirer de +https://wiki.crans.org/CransNounous !