Paillasse/portail/public/js/contenus-plus-1.js

28 lines
9 KiB
JavaScript
Raw Permalink Normal View History

// Approfondissements premium (partie 1) : fusionnés par identifiant dans le cours
window.CONTENUS_PLUS = Object.assign(window.CONTENUS_PLUS || {}, {
binaire: {
cm: [{ t: 'Entiers signés : le complément à deux', d: '20 min', html: 'Pour coder un entier négatif sur n bits, on inverse tous les bits de sa valeur absolue puis on ajoute 1. Le bit de poids fort indique le signe. Sur 8 bits, on code de −128 à +127.', exemple: '+5 = 0000 0101\ninverser → 1111 1010\n+1 → 1111 1011 = −5\nVérification : 1111 1011 + 0000 0101 = 1 0000 0000 (la retenue sort) → 0' , attention: 'Un compteur sur 8 bits signé qui dépasse 127 repasse à −128 : c’est un débordement, à l’origine de bugs célèbres (vol 501 d’Ariane 5).' },
{ t: 'Opérations bit à bit', d: '15 min', html: 'ET (&), OU (|), OU exclusif (^) et décalages (<<, >>) travaillent bit par bit. Le ET logique entre une adresse IP et son masque donne l’adresse du réseau : c’est exactement ce que fait un routeur.', exemple: '192.168.10.65 = 11000000.10101000.00001010.01000001\n255.255.255.192 = 11111111.11111111.11111111.11000000\nET = 11000000.10101000.00001010.01000000 = 192.168.10.64' }],
cas: { titre: 'Mise en situation · Service informatique d’un lycée', texte: 'Le technicien doit vérifier qu’un nouveau poste, configuré en 10.20.37.200/22, appartient bien au réseau administratif 10.20.36.0/22. Il convertit les deux adresses en binaire, applique le masque et compare les parties réseau. Sa note d’intervention indique le calcul et la conclusion.' },
erreurs: ['Lire les restes des divisions dans le mauvais sens', 'Oublier de compléter à 8 bits avec des 0 à gauche', 'Confondre ko (1 000) et Kio (1 024)', 'Découper le binaire par 4 depuis la gauche pour l’hexadécimal'],
qcm: [['Que vaut 1111 1111 sur 8 bits en complément à deux ?', ['255', '−1', '−127', '−128'], 1, 'Inverser donne 0000 0000, +1 = 1 : c’est −1.'], ['Quel est le résultat de 1100 & 1010 ?', ['1110', '1000', '0110', '0100'], 1, 'ET bit à bit : seuls les bits à 1 des deux côtés restent.'], ['10.20.37.200/22 appartient au réseau :', ['10.20.37.0', '10.20.36.0', '10.20.32.0', '10.20.0.0'], 1, '37 = 0010 0101 ; avec 6 bits de masque sur le 3e octet → 0010 0100 = 36.']],
examen: { titre: 'Sujet type · 30 min · 10 points', q: ['Convertir 213 en binaire et en hexadécimal. (2 pts)', 'Donner le masque /21 en décimal pointé. (2 pts)', 'Calculer l’adresse réseau de 172.16.45.130/20. (3 pts)', 'Coder −20 sur 8 bits en complément à deux. (3 pts)'], r: ['1101 0101 · 0xD5', '255.255.248.0', '172.16.32.0', '+20 = 0001 0100 → 1110 1011 → 1110 1100'] },
prof: { deroule: [['0-10 min', 'Accroche : pourquoi un disque de 1 To affiche 931 Go'], ['10-40 min', 'CM parties 1 à 4, exemples au tableau'], ['40-55 min', 'QCM flash de vérification'], ['55-90 min', 'TD échauffement et application en binômes'], ['Séance 2', 'Hexadécimal, complément à deux, TP générateur']], diff: 'Élèves en difficulté : tableau des puissances de 2 affiché en permanence et exercices d’échauffement du générateur. Élèves avancés : opérations bit à bit et IEEE 754.', eval: 'Évaluation formative par le générateur (objectif 18/20 sur 20 conversions), sommative par le sujet type.' } },
terminal: {
cm: [{ t: 'Rechercher : find et locate', d: '15 min', html: '<code>find</code> parcourt l’arborescence en direct avec de nombreux critères (nom, taille, date, propriétaire). <code>locate</code> interroge une base indexée, beaucoup plus rapide mais pas toujours à jour (<code>updatedb</code>).', exemple: 'find /var/log -name "*.log" -mtime -1 # modifiés depuis 24 h\nfind /home -user alice -size +100M # gros fichiers d’alice\nfind . -name "*.tmp" -delete # nettoyage' },
{ t: 'Variables d’environnement et PATH', d: '10 min', html: '<code>echo $HOME</code>, <code>echo $USER</code>, <code>echo $PATH</code>. Le PATH liste les dossiers où le shell cherche les commandes. Une commande « introuvable » est souvent un problème de PATH.' }],
cas: { titre: 'Mise en situation · Serveur plein', texte: 'Le serveur de fichiers du lycée signale un disque plein à 98 %. Le technicien se connecte en SSH, repère les dossiers les plus lourds avec du -sh /* | sort -h, identifie des journaux non tournés dans /var/log et des fichiers temporaires, puis nettoie sans toucher aux données des utilisateurs.' },
erreurs: ['Confondre chemin absolu et relatif après un cd', 'Oublier -r pour copier un dossier', 'Lancer rm -rf avec une variable vide (rm -rf $DOSSIER/)', 'Taper une commande avec sudo par réflexe'],
qcm: [['Que fait find . -name "*.tmp" -delete ?', ['Liste les .tmp', 'Supprime les .tmp du dossier courant et des sous-dossiers', 'Crée des .tmp', 'Rien sans sudo'], 1, '-delete supprime chaque fichier trouvé.'], ['Pourquoi locate peut-il ne pas trouver un fichier créé il y a 5 minutes ?', ['Il est cassé', 'Sa base n’est pas encore mise à jour', 'Il ne cherche que dans /etc', 'Il faut être root'], 1, 'updatedb tourne en général une fois par jour.'], ['Quelle variable contient la liste des dossiers de commandes ?', ['$HOME', '$PATH', '$SHELL', '$PWD'], 1, 'PATH.']],
examen: { titre: 'Sujet type · 20 min · 10 points', q: ['Donner les commandes pour créer ~/tp/j1 et y copier /etc/hostname. (3 pts)', 'Trouver les fichiers de plus de 50 Mo dans /home. (3 pts)', 'Expliquer la différence entre /etc/hosts et etc/hosts. (2 pts)', 'Citer 2 précautions avant un rm -r. (2 pts)'], r: ['mkdir -p ~/tp/j1 && cp /etc/hostname ~/tp/j1/', 'find /home -size +50M', 'Absolu depuis la racine / relatif au dossier courant', 'Vérifier avec ls le chemin exact · ne pas utiliser sudo sans raison'] },
prof: { deroule: [['0-10 min', 'Démonstration : la même tâche à la souris et en 3 commandes'], ['10-40 min', 'CM : arborescence, chemins, commandes'], ['40-110 min', 'Lab VM en autonomie, indices débloqués après 3 essais'], ['110-120 min', 'Quiz flash de sortie']], diff: 'Difficulté : fiche mémo imprimée des 15 commandes. Avancés : OverTheWire Bandit niveaux 0 à 10.', eval: 'Validation automatique des étapes du lab et QCM de lecture du CM.' } },
droits: {
cm: [{ t: 'sudo et le principe du moindre privilège', d: '15 min', html: 'On ne travaille pas en root. <code>sudo</code> donne temporairement des droits d’administration, tracés dans <code>/var/log/auth.log</code>. Le fichier <code>/etc/sudoers</code> (édité avec <code>visudo</code>) précise qui peut lancer quoi.', exemple: '# /etc/sudoers.d/techniciens\n%techs ALL=(root) /usr/bin/systemctl restart apache2' },
{ t: 'Auditer les droits d’un serveur', d: '15 min', html: 'Un audit rapide cherche : les fichiers modifiables par tous (<code>find / -perm -o+w -type f</code>), les binaires SUID, les dossiers personnels trop ouverts, et les clés SSH lisibles par d’autres.' }],
cas: { titre: 'Mise en situation · Partage pédagogique', texte: 'Les enseignants de SIO veulent un dossier commun où chacun dépose ses sujets, où les collègues peuvent modifier, mais où les élèves ne voient rien. Le technicien crée le groupe profsio, le dossier /srv/sio en 2770 avec umask 007, vérifie avec su, puis documente la procédure.' },
erreurs: ['Mettre 777 « pour que ça marche »', 'Oublier x sur un dossier', 'usermod -G sans -a qui retire les autres groupes', 'Oublier que le changement de groupe nécessite une reconnexion'],
qcm: [['Pourquoi éviter chmod 777 ?', ['C’est lent', 'Tout le monde peut modifier ou remplacer le fichier', 'Ça ne marche pas', 'Ça efface le fichier'], 1, 'N’importe quel compte, y compris un service compromis, peut écrire.'], ['Quel outil édite sudoers sans risque de le casser ?', ['nano', 'visudo', 'vim', 'sudoedit'], 1, 'visudo vérifie la syntaxe avant d’enregistrer.'], ['Après usermod -aG devs bob, bob ne voit pas le dossier. Pourquoi ?', ['Erreur de commande', 'Il doit se reconnecter', 'Il faut redémarrer', 'Il faut chmod 777'], 1, 'Les groupes sont lus à l’ouverture de session.']],
examen: { titre: 'Sujet type · 40 min · 20 points', q: ['Traduire 2750 et expliquer chaque chiffre. (4 pts)', 'Écrire les commandes pour créer le partage /srv/compta (groupe compta, 2770). (6 pts)', 'Un fichier est en 640, propriétaire alice, groupe rh. Bob (groupe rh) peut-il le modifier ? Justifier. (4 pts)', 'Proposer 3 vérifications d’audit et leurs commandes. (6 pts)'], r: ['SGID + rwx r-x ---', 'addgroup compta ; mkdir /srv/compta ; chown root:compta /srv/compta ; chmod 2770 /srv/compta', 'Non : le groupe n’a que r (4)', 'find / -perm -4000 · find / -perm -o+w -type f · ls -ld /home/*'] },
prof: { deroule: [['0-15 min', 'Scénario : fuite d’un dossier de notes mal protégé'], ['15-60 min', 'CM et démonstration en direct'], ['60-90 min', 'TD : conversions et diagnostics'], ['Séance 2', 'Lab VM complet, puis sujet type en fin de séance']], diff: 'Difficulté : tableau r/w/x × fichier/dossier imprimé. Avancés : ACL et audit ANSSI.', eval: 'Étapes du lab corrigées dans la VM, sujet type sur 20.' } }
});