[howto] Ajout de become_nounou.md
parent
87bb7bc0ca
commit
ba7f565d23
|
@ -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
|
||||
|
||||
```
|
||||
<oper
|
||||
name=<nick>
|
||||
password="<pass-hash>"
|
||||
hash="sha256"
|
||||
host="*"
|
||||
type="Deity"
|
||||
fingerprint="<fingerprint certificat>"
|
||||
autologin="on"
|
||||
>
|
||||
```
|
||||
Où le hash du mot de passe peut être obtenu en envoyant `/quote mkpasswd
|
||||
hmac-sha256 <password>`. 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 !
|
Loading…
Reference in New Issue