###### Tags: `IndieCamp` `Kerbors` `atelier geek` # [[IndieCamp Kerbors](https://frama.link/indiecamp-kerbors-2017)] Atelier Geek - Session #0 * [Atelier #0](https://hackmd.io/s/rJw31KgDb) * [Atelier #1](https://hackmd.io/s/rJDXkRHDW) * [Atelier #2](https://hackmd.io/s/SyHcRZPPb) Ce PAD décrit un atelier d'initiation aux **commandes Linux** réalisé sur l'indiecamp à Kerbors. Ce document est mis à disposition par tou.te.s les contributeurs et contributrices de l'Indiecamp Kerbors 2017, selon les termes de la [licence Creative Commons CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/). <img style="display: block; margin: 0 auto;" src="https://mirrors.creativecommons.org/presskit/buttons/88x31/png/by-sa.png" width="40%"> # 1er exercice ## Informations sur le système **Quel est le système installé ?** uname -a **Qui sont les utilisateurs du système ?** who ## Ouvrir & fermer le terminal **Ouvrir un terminal avec un autre compte** su user **Fermer ce terminal** exit ## Utiliser la commande `man` **Tester la commande man** ```! TCPDUMP(8) System Manager's Manual TCPDUMP(8) NAME tcpdump - dump traffic on a network SYNOPSIS tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ] [ -c count ] [ -C file_size ] [ -G rotate_seconds ] [ -F file ] [ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ] [ --number ] [ -Q in|out|inout ] [ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ] [ -E spi@ipaddr algo:secret,... ] [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ] [ --time-stamp-precision=tstamp_precision ] [ --immediate-mode ] [ --version ] [ expression ] DESCRIPTION Tcpdump prints out a description of the contents of packets on a network interface that match the boolean expression; the description is preceded by a time stamp, printed, by default, as hours, minutes, seconds, and fractions of a second since midnight. It can also be run with the -w flag, which causes it to save the packet data to a file for later analysis, and/or with the -r flag, which causes it to read from a saved packet file rather than to read packets from a network interface (please note tcpdump is protected via an enforcing appar‐ mor(7) profile in Ubuntu which limits the files tcpdump may access). It can also be run with the -V flag, which causes it to read a list of saved packet files. In all cases, only packets that match expression will be processed by tcpdump. Tcpdump will, if not run with the -c flag, continue capturing packets until it is interrupted by a SIGINT signal (generated, for example, by typing your interrupt character, typically control-C) or a SIGTERM signal (typically generated with the kill(1) command); if run with the -c flag, it will capture packets until it is interrupted by a SIGINT or SIGTERM signal or the specified number of packets have been processed. When tcpdump finishes capturing packets, it will report counts of: packets ``captured'' (this is the number of packets that tcpdump has received and processed); packets ``received by filter'' (the meaning of this depends on the OS on which you're running tcpdump, and possibly on the way the OS was configured - if a filter was specified on the command line, on some OSes it counts packets regardless of whether they were Manual page tcpdump(8) line 1 (press h for help or q to quit) ``` **Les commandes documentées** ```! man man ``` ![](https://i.imgur.com/Fb9fcNR.png) ## Explorer des répertoires & fichiers **Lister le contenu du répertoire /etc** ls /etc ![](https://i.imgur.com/XUpzwSj.png) **Lister de manière détaillée le contenu du répertoire /etc.** ls -l /etc ls -la /etc **Lister le contenu du répertoire /dev** ls -l /dev **Lister le contenu du fichier /etc/passwd** cat /etc/passwd ```! root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh ... user,,,:/var/run/hplip:/bin/false nico:x:1000:1000:Nico,,,:/home/nico:/bin/bash ``` **Lister le contenu du fichier /etc/shadow** cat /etc/shadow **Afficher par ordre alphabétique les utilisateurs définis dans le fichier /etc/passwd** cat /etc/passwd | sort ```! backup:x:34:34:backup:/var/backups:/bin/sh bin:x:2:2:bin:/bin:/bin/sh cupsys:x:100:106::/home/cupsys:/bin/false daemon:x:1:1:daemon:/usr/sbin:/bin/sh dhcp:x:101:101::/nonexistent:/bin/false games:x:5:60:games:/usr/games:/bin/sh ... root:x:0:0:root:/root:/bin/bash sync:x:4:65534:sync:/bin:/bin/sync syslog:x:102:102::/home/syslog:/bin/false sys:x:3:3:sys:/dev:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh ``` **Rechercher les fichiers du répertoire /etc contenant la chaine de caractères "root"** grep root /etc/* **Localiser le fichier "stdio.h" dans le système de fichiers de votre installation** find / -name stdio.h ```! find: /tmp/kde-root: Permission non accordée /usr/include/bits/stdio.h /usr/include/stdio.h ``` **À l'aide de la commande `od`, illustrer la différence entre les fichier de type ASCII (texte) DOS, UNIX et MAC. Utiliser le fichier ASCII Dos `montexte.dos` fourni en lien et créer les fichiers ASCII Unix `montexte.unix` et ASCII MAC `montexte.mac` avec le même contenu au moyen d'un éditeur texte (e.g. Kate) puis comparer (v. Macintosh si l'éditeur le permet).** od -x monfichier.dos` ```! 0000000 6e75 0a0d 6564 7875 0a0d 7274 696f 0d73 0000020 710a 6175 7274 0d65 630a 6e69 0d71 730a 0000040 7869 0a0d 6573 7470 0a0d 0a0d 0a0d 0a0d 0000060 0a0d 0a0d 0000064 od -c monfichier.dos 0000000 u n \r \n d e u x \r \n t r o i s \r 0000020 \n q u a t r e \r \n c i n q \r \n s 0000040 i x \r \n s e p t \r \n \r \n \r \n \r \n 0000060 \r \n \r \n 0000064 od -x monfichier.unix 0000000 6e75 640a 7565 0a78 7274 696f 0a73 7571 0000020 7461 6572 630a 6e69 0a71 6973 0a78 6573 0000040 7470 0a0a 0a0a 0a0a 0000050 od -c monfichier.unix 0000000 u n \n d e u x \n t r o i s \n q u 0000020 a t r e \n c i n q \n s i x \n s e 0000040 p t \n \n \n \n \n \n 0000050 od -x monfichier.mac 0000000 6e75 640d 7565 0d78 7274 696f 0d73 7571 0000020 7461 6572 630d 6e69 0d71 6973 0d78 6573 0000040 7470 0d0d 0d0d 0d0d 0000050 od -c monfichier.unix 0000000 u n \r d e u x \r t r o i s \r q u 0000020 a t r e \r c i n q \r s i x \r s e 0000040 p t \r \r \r \r \r \r 0000050 ``` :::info * Codage des fins de ligne sous Dos par les deux caracteres 0x0D et 0x0A. * Codage des fins de ligne sous Unix par le seul caractere 0x0A. * Codage des fins de ligne sous Macintosh par le seul caractere 0x0D. ::: **Tester le contenu d'un fichier texte en version Unix / Dos / Mac** cmp monfichier.unix monfichier.dos diff monfichier.unix monfichier.dos diff monfichier.unix monfichier.mac **Combien de lignes, de mots et de caractères comportent les fichiers "montexte.unix", "montexte.dos" et "montexte.mac"?** wc monfichier.unix ```! 12 7 40 monfichier.unix ``` wc monfichier.dos ```! 12 7 52 monfichier.dos ``` wc monfichier.mac ```! 0 7 40 monfichier.mac ``` # 2e exercice **Se localiser dans la hiérarchie** pwd **Détecter la présence de fichiers** ls -la ```! drwxr-xr-x 2 nico nico 4096 2007-02-01 11:25 . drwxr-xr-x 22 nico nico 4096 2007-02-01 11:25 .. ``` > Ce sont les entrées vers la racine du repertoire et la racine du répertoire père **Entrer du texte dans Mon_fichier** echo aaaaaaaaaaaaaaaaaa > Mon_fichier **Lister le contenu de Mon_fichier** cat Mon_fichier ```! aaaaaaaaaaaaaaaaaa ``` **Lister son propre répertoire** ls ```! Mon_fichier ``` ls -l ```! total 12 drwxr-xr-x 2 nico nico 4096 2007-02-01 11:28 . drwxr-xr-x 22 nico nico 4096 2007-02-01 11:25 .. -rw-r--r-- 1 nico nico 19 2007-02-01 11:28 Mon_fichier ``` **Lister les catalogues /bin et /dev** ls /bin ls /dev **Créer les sous-répertoires `Source` et `Data`** mkdir Source Data **Se positionner dans `Source`** cd source **Lister les répertoires** ls -la ```! total 8 drwxr-xr-x 2 nico nico 4096 2007-02-01 11:29 . drwxr-xr-x 4 nico nico 4096 2007-02-01 11:29 .. ``` **Revenir sous le répertoire de départ et détruire `Source`** cd .. rmdir Source **Créer un deuxième fichier `Mon_fichier_2`** touch Mon_fichier_2 ls -la ```! total 16 drwxr-xr-x 3 nico nico 4096 2007-02-01 11:31 . drwxr-xr-x 22 nico nico 4096 2007-02-01 11:31 .. drwxr-xr-x 2 nico nico 4096 2007-02-01 11:29 Data -rw-r--r-- 1 nico nico 19 2007-02-01 11:28 Mon_fichier -rw-r--r-- 1 nico nico 0 2007-02-01 11:31 Mon_fichier_2 ``` **Copier chaque fichier en fichier .old** cp Mon_fichier Mon_fichier.old cp Mon_fichier_2 Mon_fichier_2.old ls -la ```! total 20 drwxr-xr-x 3 nico nico 4096 2007-02-01 11:39 . drwxr-xr-x 22 nico nico 4096 2007-02-01 11:31 .. drwxr-xr-x 2 nico nico 4096 2007-02-01 11:29 Data -rw-r--r-- 1 nico nico 19 2007-02-01 11:28 Mon_fichier -rw-r--r-- 1 nico nico 0 2007-02-01 11:31 Mon_fichier_2 -rw-r--r-- 1 nico nico 0 2007-02-01 11:38 Mon_fichier_2.old -rw-r--r-- 1 nico nico 19 2007-02-01 11:38 Mon_fichier.old ``` **Créer un répertoire `Old`** mkdir old **Déplacer les fichiers avec l’extension .old dans le répertoire `Old`** mv *.old Old ls -la Old ```! total 12 drwxr-xr-x 2 nico nico 4096 2007-02-01 11:39 . drwxr-xr-x 4 nico nico 4096 2007-02-01 11:39 .. -rw-r--r-- 1 nico nico 0 2007-02-01 11:38 Mon_fichier_2.old -rw-r--r-- 1 nico nico 19 2007-02-01 11:38 Mon_fichier.old ``` ls -l ```! total 20 drwxr-xr-x 4 nico nico 4096 2007-02-01 11:39 . drwxr-xr-x 22 nico nico 4096 2007-02-01 11:31 .. drwxr-xr-x 2 nico nico 4096 2007-02-01 11:29 Data -rw-r--r-- 1 nico nico 19 2007-02-01 11:28 Mon_fichier -rw-r--r-- 1 nico nico 0 2007-02-01 11:31 Mon_fichier_2 drwxr-xr-x 2 nico nico 4096 2007-02-01 11:39 Old ``` **Copier les fichiers sans extension dans le répertoire `Data`** cp * Data ls -la Data ```! total 12 drwxr-xr-x 2 nico nico 4096 2007-02-01 11:41 . drwxr-xr-x 4 nico nico 4096 2007-02-01 11:39 .. -rw-r--r-- 1 nico nico 19 2007-02-01 11:41 Mon_fichier -rw-r--r-- 1 nico nico 0 2007-02-01 11:41 Mon_fichier_2 ``` ls -l ```! total 20 drwxr-xr-x 4 nico nico 4096 2007-02-01 11:39 . drwxr-xr-x 22 nico nico 4096 2007-02-01 11:31 .. drwxr-xr-x 2 nico nico 4096 2007-02-01 11:41 Data -rw-r--r-- 1 nico nico 19 2007-02-01 11:28 Mon_fichier -rw-r--r-- 1 nico nico 0 2007-02-01 11:31 Mon_fichier_2 drwxr-xr-x 2 nico nico 4096 2007-02-01 11:39 Old ``` **Sous le répertoire de départ, créer un lien matériel `Mon_lien` équivalent à `Mon_fichier_2`** ln Mon_fichier_2 Mon_lien ls -la ```! total 20 drwxr-xr-x 4 nico nico 4096 2007-02-01 11:54 . drwxr-xr-x 22 nico nico 4096 2007-02-01 11:43 .. drwxr-xr-x 2 nico nico 4096 2007-02-01 11:41 Data -rw-r--r-- 1 nico nico 19 2007-02-01 11:28 Mon_fichier -rw-r--r-- 2 nico nico 0 2007-02-01 11:31 Mon_fichier_2 -rw-r--r-- 2 nico nico 0 2007-02-01 11:31 Mon_lien drwxr-xr-x 2 nico nico 4096 2007-02-01 11:39 Old ``` **Lister les deux fichiers `Mon_lien` et `Mon_fichier_2` en affichant leur numéro d’inode** ls -lai ```! total 20 16457 drwxr-xr-x 4 nico nico 4096 2007-02-01 11:54 . 868403 drwxr-xr-x 22 nico nico 4096 2007-02-01 11:43 .. 16619 drwxr-xr-x 2 nico nico 4096 2007-02-01 11:41 Data 16624 -rw-r--r-- 1 nico nico 19 2007-02-01 11:28 Mon_fichier 16597 -rw-r--r-- 2 nico nico 0 2007-02-01 11:31 Mon_fichier_2 16597 -rw-r--r-- 2 nico nico 0 2007-02-01 11:31 Mon_lien 16632 drwxr-xr-x 2 nico nico 4096 2007-02-01 11:39 Old ``` > Leurs numéros d'inode sont identiques donc ces deux fichiers n'en sont physiquement qu'un seul. **Supprimer `Mon_lien`. `Mon_fichier_2` a-t-il disparu ?** rm Mon_lien ls -lai ```! total 20 16457 drwxr-xr-x 4 nico nico 4096 2007-02-01 11:56 . 868403 drwxr-xr-x 22 nico nico 4096 2007-02-01 11:43 .. 16619 drwxr-xr-x 2 nico nico 4096 2007-02-01 11:41 Data 16624 -rw-r--r-- 1 nico nico 19 2007-02-01 11:28 Mon_fichier 16597 -rw-r--r-- 1 nico nico 0 2007-02-01 11:31 Mon_fichier_2 16632 drwxr-xr-x 2 nico nico 4096 2007-02-01 11:39 Old ``` > "Mon_fichier_2" existe toujours. **Sous votre répertoire de départ, créez un lien symbolique `Mon_nouveau_lien` sur `Mon_fichier_2`** ``` ln -s Mon_fichier_2 Mon_nouveau_lien ``` **Lister les deux fichiers `Mon_nouveau_lien` et `Mon_fichier_2`** ls -la ```! total 20 drwxr-xr-x 4 nico nico 4096 2007-02-01 11:57 . drwxr-xr-x 22 nico nico 4096 2007-02-01 11:43 .. drwxr-xr-x 2 nico nico 4096 2007-02-01 11:41 Data -rw-r--r-- 1 nico nico 19 2007-02-01 11:28 Mon_fichier -rw-r--r-- 1 nico nico 0 2007-02-01 11:31 Mon_fichier_2 lrwxrwxrwx 1 nico nico 13 2007-02-01 11:57 Mon_nouveau_lien -> Mon_fichier_2 drwxr-xr-x 2 nico nico 4096 2007-02-01 11:39 Old ``` > Le lien est clairement mis en evidence par le caractere `l` et par l'affichage du nom du fichier lie. La taille n'est pas bonne. **Supprimer `Mon_fichier_2`. `Mon_nouveau_lien` a-t-il disparu ?** rm Mon_fichier_2 ls -la ```! total 20 drwxr-xr-x 4 nico nico 4096 2007-02-01 11:59 . drwxr-xr-x 22 nico nico 4096 2007-02-01 11:43 .. drwxr-xr-x 2 nico nico 4096 2007-02-01 11:41 Data -rw-r--r-- 1 nico nico 19 2007-02-01 11:28 Mon_fichier lrwxrwxrwx 1 nico nico 13 2007-02-01 11:57 Mon_nouveau_lien -> Mon_fichier_2 drwxr-xr-x 2 nico nico 4096 2007-02-01 11:39 Old ``` > Le lien existe toujours mais est brisé. Il est caracterisé par un code couleur spécifique dans le shell utilisé. **Quelle est la taille totale des fichiers contenus dans votre répertoire ?** du -b ```! 4115 ./Old 4115 ./Data 12358 . ``` > La taille est approximative en raison de l'utilisation de blocs de 512 octets. **Effacer tous les fichiers créés** rm -r * ls -la ```! total 8 drwxr-xr-x 2 nico nico 4096 2007-02-01 12:03 . drwxr-xr-x 22 nico nico 4096 2007-02-01 11:43 .. ``` # 3e exercice ## Créer un espace de travail pour 4 utilisateurs **1. Création des groupes et des utilisateurs** Création de 2 groupes : groupadd group1 groupadd group2 cat /etc/group ... group1:x:1001: group2:x:1002: Création de 4 utilisateurs : ``` useradd -m u1 useradd -m u2 useradd -m u3 useradd -m u4 cat /etc/passwd ... u1:x:1001:100::/home/u1:/bin/sh u2:x:1002:100::/home/u2:/bin/sh u3:x:1003:100::/home/u3:/bin/sh u4:x:1004:100::/home/u4:/bin/sh ``` ``` ls -l /home ``` ``` total 20 ... drwxr-xr-x 2 u1 users 4096 2007-02-01 12:12 u1 drwxr-xr-x 2 u2 users 4096 2007-02-01 12:12 u2 drwxr-xr-x 2 u3 users 4096 2007-02-01 12:12 u3 drwxr-xr-x 2 u4 users 4096 2007-02-01 12:12 u4 ``` Placement des utilisateurs dans leurs groupes : usermod -G group1 u1 usermod -G group1,group2 u2 usermod -G group2 u3 usermod -G group1,group2 u4 cat /etc/group ... group1:x:1001:u1,u2,u4 group2:x:1002:u2,u3,u4 Changement de propriétaire des répertoires : ``` chown u1:group1 /home/u1 chown u2:group1 /home/u2 chown u3:group2 /home/u3 chown u4:group2 /home/u4 ``` Création des répertoires communs : ``` mkdir /home/group1 mkdir /home/group2 ``` Mise en place des permissions pour permettre aux utilisateurs d'écrire dans le répertoire de leur groupe : ``` chgrp group1 /home/group1 chgrp group2 /home/group2 ``` Mise en place de la permission pour protéger de l'effacement tout en autorisant l'écriture : > À ce stade, on ne sait pas résoudre la dernière problématique. Soit on fait confiance aux utilisateurs, soit on passe par `root` pour ajouter les fichiers et on ne donne pas la permission «w». Cas le plus permissif chmod g=rwx /home/group1 ou chmod 770 /home/group1 Cas le moins permissif chmod g=700 /home/group1 Activation d'un utilisateur passwd u1 Enter new UNIX password: Retype new UNIX password: passwd : le mot de passe a été mis à jour avec succès cat/etc/shadow ... u1:$1$kiUUra9s$AxchvKz0J9OBJPXO8qNf./:13545:0:99999:7::: u2:!:13545:0:99999:7::: u3:!:13545:0:99999:7::: u4:!:13545:0:99999:7::: **2. Modification du profil** Script possible, dans `/etc/profile` pour éviter de le recopier pour chaque utilisateur echo "Bienvenue" echo "entrez U pour travailler dans votre repertoire" echo "entrez G pour travailler dans le repertoire de votre groupe" read CHX while [ $CHX != 'U' ] && [ $CHX != 'G' ] do echo "Entrez U ou G ..." read CHX done if [ $CHX == "G" ] then case $USER in "u1") export HOME=/home/group1;; "u2") export HOME=/home/group1;; "u3") export HOME=/home/group2;; "u4") export HOME=/home/group2;; esac cd $HOME fi **3. Choix de la valeur du umask** Les valeurs conseillées sont: - 066 pour échanger facilement des fichiers avec l'ensemble des utilisateurs - 067 pour échanger des fichiers seulement avec les membres des groupes dont on est membre, - 077 pour travailler seul Les valeurs 066 et 067 offrent le meilleur compromis entre la sécurité et la souplesse. Elles permettent le parcours des répertoires sans en autoriser l'examen avec la commande "ls" tout en autorisant l'accès à des répertoires fils dont les droits seront plus permissifs, utilisés pour échanger des fichiers…" dans "Unix utilisation administration système et réseau" par Christian Pellisier. Dans notre exemple, on choisit plutôt la valeur 067.