488 lines
12 KiB
Markdown
488 lines
12 KiB
Markdown
|
::: frame
|
||
|
:::
|
||
|
|
||
|
# GNU/Linux
|
||
|
|
||
|
::: frame
|
||
|
### Linux
|
||
|
|
||
|
::: block
|
||
|
Noyau
|
||
|
|
||
|
- Pilotage des périphériques
|
||
|
|
||
|
- Communication entre eux
|
||
|
|
||
|
- Base n'effectuant pas d'opérations mais propose des appels systèmes
|
||
|
|
||
|
- Permet une abstraction forte pour le développeur (exemple : écrire
|
||
|
un fichier)
|
||
|
:::
|
||
|
|
||
|
::: block
|
||
|
Linux
|
||
|
|
||
|
- Ensemble de logiciels
|
||
|
|
||
|
- Usage commun de l'informatique
|
||
|
:::
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
::: block
|
||
|
Projet GNU
|
||
|
|
||
|
- Contrôle complet de l'ordinateur
|
||
|
|
||
|
- Liberté d'utilisation, de conception et de distribution du software
|
||
|
|
||
|
- Suite logicielle autour du système, alternative à UNIX et ses
|
||
|
verrous propriétaires
|
||
|
:::
|
||
|
|
||
|
::: block
|
||
|
GNU/Linux
|
||
|
|
||
|
- Noyau linux avec une partie de la suite GNU : GNU/Linux
|
||
|
|
||
|
- Chaque logiciel a une tâche simple qui la remplit efficacement
|
||
|
|
||
|
- Pannel d'outils combinables
|
||
|
:::
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
::: block
|
||
|
Distribution
|
||
|
|
||
|
- Debian, Ubuntu
|
||
|
|
||
|
- RHEL, centos
|
||
|
|
||
|
- archlinux
|
||
|
|
||
|
- architecture différente
|
||
|
|
||
|
- fonctionnement différentes
|
||
|
|
||
|
- baties sur une même base
|
||
|
:::
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
::: block
|
||
|
Réutilisable
|
||
|
|
||
|
- Organisation commune des applications
|
||
|
|
||
|
- Abstraction des appels système
|
||
|
:::
|
||
|
|
||
|
::: block
|
||
|
Utilisation
|
||
|
|
||
|
- Multi-utilisateurs
|
||
|
|
||
|
- Ouverture, liberté et fonctionnement fait le succès
|
||
|
|
||
|
- Ecosystème avec beaucoup de choix facilement intégrables pour une
|
||
|
même tâche
|
||
|
|
||
|
- Serveurs
|
||
|
|
||
|
- Cluster
|
||
|
|
||
|
- Cloud
|
||
|
|
||
|
- Embarqué
|
||
|
|
||
|
- PC, Bureautique, multimedia
|
||
|
:::
|
||
|
:::
|
||
|
|
||
|
# SHELL
|
||
|
|
||
|
::: frame
|
||
|
### SHELL
|
||
|
|
||
|
::: block
|
||
|
SHELL
|
||
|
|
||
|
- Interface utilisateur textuelle (clavier)
|
||
|
|
||
|
- Appelé aussi CLI (Command Line Interface) a la différence de GUI
|
||
|
(Graphical User Interface)
|
||
|
|
||
|
- Dans un environnement graphique, on utilise un Terminal pour avoir
|
||
|
une fenêtre invoquant un shell
|
||
|
|
||
|
- On indique le nom de l'outil, et lui passe des paramètres pour
|
||
|
adapter son comportement
|
||
|
:::
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
Plutôt que de parcourir l'arborescence par des clics et enfin ouvrir le
|
||
|
fichier, on peux le faire directement:
|
||
|
|
||
|
$ more /home/jeanjack/build/maker/MWAS/data/pyu-protein.fasta
|
||
|
|
||
|
>FM_Phyra1_1:jgi|Phyra1_1|43043|gwEuk.18.6.1
|
||
|
MSDEEQDCCPLCMEELDITDKTFNACPCGYQVCLWCWHQIKNEYNALCPACRQPYAELSK
|
||
|
QKNPLDRDECQRKQKEKSERRSAAQAKHSTVNRKSLQNVRVMQRNLVYVIGLPVRFAEED
|
||
|
ILRSNECFGQYGKIVKAVVNKSHLSADRANATASAYITFANKEDALCCIVAIDGYYLDGS
|
||
|
MLRASFGTTKYCNFFLRNMQCNNPDCLYLHELGDDDDSFTKEEMQSGTRR
|
||
|
>FM_Phyra1_1:jgi|Phyra1_1|44351|gwEuk.21.14.1
|
||
|
KTRMSIDDIHAMVGSIRANVVNMRVTNIYDVQGQGDGGAAKTYILKLHQPPFPKVFLLLE
|
||
|
SGVRFHTSKYARDAKAGSALPSQFTMKLRKHLRGKRLSALTQLEGDRVVDLTFGQDALQC
|
||
|
|
||
|
On utilise le logiciel more, qui permet de consulter le contenu d'un
|
||
|
fichier page par page, avec une page faisant la taille de votre
|
||
|
terminal. Chaque outil dispose de son manuel, qu'on invoque avec 'man'
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
$ man more
|
||
|
more - file perusal filter for crt viewing
|
||
|
SYNOPSIS
|
||
|
more [options] file...
|
||
|
DESCRIPTION
|
||
|
more is a filter for paging through text one screenful at a time. This version is especially primitive. Users should realize that less(1) provides more(1) emulation plus extensive enhancements.
|
||
|
OPTIONS
|
||
|
Options are also taken from the environment variable MORE (make sure to precede them with a dash (-)) but command-line options will override those.
|
||
|
-d, --silent
|
||
|
Prompt with "[Press space to continue, 'q' to quit.]", and display "[Press 'h' for instructions.]"
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
::: block
|
||
|
man On y lit la description, l'utilisation en ligne de commande et
|
||
|
l'usage.
|
||
|
|
||
|
Des options sont listées, comme l'invocation avec l'option -d
|
||
|
:::
|
||
|
|
||
|
::: block
|
||
|
entrées et sorties standard
|
||
|
|
||
|
- shell : purement textuel, tout est une chaine de charactère
|
||
|
|
||
|
- sortie standard : écran
|
||
|
|
||
|
- entrée standard : clavier
|
||
|
|
||
|
- sortie standard d'erreur: écriture à l'écran également
|
||
|
|
||
|
- orienter les entrées/sorties vers un fichier
|
||
|
|
||
|
- rediriger la sortie d'un outil vers l'entrée d'un autre : pipe \"\"
|
||
|
|
||
|
- =\>pipeline
|
||
|
:::
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
On va voir l'utilité de grep
|
||
|
|
||
|
$ man grep |grep -A 1 NAME
|
||
|
NAME
|
||
|
grep, egrep, fgrep, rgrep - print lines that match patterns
|
||
|
|
||
|
- le résultat (la sortie) de man est passé dans l'entrée de grep
|
||
|
|
||
|
- grep n'affiche que les lignes contenant NAME
|
||
|
|
||
|
- grep avec -A 1 affiche 1 ligne de plus a chaque \"match\"
|
||
|
|
||
|
Plus intéressant : essayons d'afficher le nombre de séquences sur le
|
||
|
fichier fasta. On va tout d'abord utiliser grep pour n'afficher que les
|
||
|
lignes comprenant un chevron
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
|
||
|
$ grep ">" /home/abi/jeanjack/build/maker/MWAS/data/pyu-protein.fasta
|
||
|
[...]
|
||
|
|
||
|
>sp|Q9WU83|DPM1_CRIGR
|
||
|
|
||
|
>sp|Q9XG77|PSA6_TOBAC
|
||
|
|
||
|
>sp|Q9ZSB5|UBP10_ARATH
|
||
|
|
||
|
On a en sortie la liste des séquences, mais il nous faut des nombres !
|
||
|
|
||
|
$ man cat
|
||
|
NAME
|
||
|
cat - concatenate files and print on the standard output
|
||
|
SYNOPSIS
|
||
|
cat [OPTION]... [FILE]...
|
||
|
DESCRIPTION
|
||
|
-n, --number
|
||
|
number all output lines
|
||
|
|
||
|
ca pourrait fonctionner vu qu'on a une ligne par séquence
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
grep ">" pyu-protein.fasta | cat -n
|
||
|
1303 >sp|Q9WU83|DPM1_CRIGR
|
||
|
1304 >sp|Q9XG77|PSA6_TOBAC
|
||
|
1305 >sp|Q9ZSB5|UBP10_ARATH
|
||
|
|
||
|
Ça fait beaucoup d'informations inutile par rapport au résultat attendu
|
||
|
( avoir un simple nombre ) !
|
||
|
|
||
|
WC(1) User Commands WC(1)
|
||
|
|
||
|
NAME
|
||
|
wc - print newline, word, and byte counts for each file
|
||
|
|
||
|
SYNOPSIS
|
||
|
wc [OPTION]... [FILE]...
|
||
|
wc [OPTION]... --files0-from=F
|
||
|
|
||
|
DESCRIPTION
|
||
|
[...]
|
||
|
|
||
|
-l, --lines
|
||
|
print the newline counts
|
||
|
|
||
|
wc avec l'option \"-l\" (compter le nombre de retours à la ligne) me
|
||
|
paraît beaucoup plus approprié
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
$ grep ">" pyu-protein.fasta | wc -l
|
||
|
1305
|
||
|
|
||
|
On a exactement ce qu'on veux : le nombre de séquences. pas une
|
||
|
information de plus, pas une de moins. en combinant deux outils qui font
|
||
|
chacun une tache simple (filtrer et compter). Le tout réside dans la
|
||
|
connaisance du panel d'outils à disposition, et la bonne lecture des
|
||
|
manuels.
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
### Variables d'environnement
|
||
|
|
||
|
- Lues par différents logiciels
|
||
|
|
||
|
- Donnent des informations sur l'environnement
|
||
|
|
||
|
- Influent sur le comportement des outils
|
||
|
|
||
|
- Influe sur le shell lui-même
|
||
|
|
||
|
```{=html}
|
||
|
<!-- -->
|
||
|
```
|
||
|
$ env
|
||
|
SHELL=/bin/bash
|
||
|
EDITOR=vim
|
||
|
PAGER=less
|
||
|
PWD=/home/user
|
||
|
LOGNAME=user
|
||
|
HOME=/home/user
|
||
|
LANG=fr_FR.UTF-8
|
||
|
USER=user
|
||
|
PATH=/usr/local/bin:/usr/bin:/bin
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
\$PWD indique le répertoire courant et \$PATH est très importante car
|
||
|
elle indique où chercher les logiciels invoqués par le shell. Par
|
||
|
exemple:
|
||
|
|
||
|
$ whereis cat
|
||
|
cat: /bin/cat /usr/share/man/man1/cat.1.gz
|
||
|
|
||
|
quand on tape cat, le shell parcours les répertoires indiqués par PATH
|
||
|
avant de trouver le binaire en question
|
||
|
:::
|
||
|
|
||
|
# Système de fichiers
|
||
|
|
||
|
::: frame
|
||
|
### système de fichiers
|
||
|
|
||
|
Dans les différents exemples, on a vu beaucoup de chemins de fichiers.
|
||
|
Dans les systèmes de la famille UNIX, on a une structure bien définie
|
||
|
|
||
|
- tout commence à la racine, le rootfs, \"/\"
|
||
|
|
||
|
- / est le point de départ de toute arborescence
|
||
|
|
||
|
- tout chemin commençant par / est un chemin absolu, peu importe où on
|
||
|
se trouve, il est accessible
|
||
|
|
||
|
- peu importe où on se trouve dans l'arborescence, un fichier est
|
||
|
accessible par son chemin absolu
|
||
|
|
||
|
- à la racine, on a une organisation prédéfinie: voir le Filesystem
|
||
|
Hierarchy Standard
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
- bin : les fichiers binaires ( executables ) de base, les outils
|
||
|
UNIX/POSIX
|
||
|
|
||
|
- boot : les fichiers du gestionnaire de démarrage ( bootloader )
|
||
|
|
||
|
- dev : les fichiers représentant les périphériques ( devices )
|
||
|
|
||
|
- etc : les fichiers de configuration du système (
|
||
|
|
||
|
- home : les dossiers spécifiques aux utilisateurs
|
||
|
|
||
|
- lib : les librairies partagés ainsi que les modules du noyau
|
||
|
|
||
|
- lost+found : forcément présent sur une partition de type ext4 ( plus
|
||
|
de détails plus tard )
|
||
|
|
||
|
- media : point de montage des périphériques de stockage amovibles
|
||
|
|
||
|
- mnt : point de montage temporaire ( souvent lié à l'administration )
|
||
|
|
||
|
- opt : chemin d'installation pour des applications spécifiques
|
||
|
|
||
|
- proc : représentation du noyau en mode fichier
|
||
|
|
||
|
- root : équivalent du home réservé à l'administrateur
|
||
|
|
||
|
- run : fichiers résidents en mémoire vive
|
||
|
|
||
|
- sbin : les binaires réservés à l'administrateur
|
||
|
|
||
|
- srv : données liés aux applications ( services ) du serveur
|
||
|
|
||
|
- sys : semblable à /proc, mais plus lié au matériel
|
||
|
|
||
|
- tmp : fichiers temporaires
|
||
|
|
||
|
- usr : arborescence semblable à / pour les outils non essentiels à
|
||
|
linux, souvent les fichiers de taille fixes ( binaires, code source
|
||
|
)
|
||
|
|
||
|
- usr/bin : binaires installés par la distribution
|
||
|
|
||
|
- usr/local/bin : binaires installés manuellement ( compilation et
|
||
|
make install )
|
||
|
|
||
|
- var : données variables, de taille grandissantes, souvent utilisé
|
||
|
par les logiciels du système
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
### chemins relatifs
|
||
|
|
||
|
À l'inverse des chemins absolus, il existe les chemins relatif. Par
|
||
|
exemple si on est dans le chemin /usr , on peux lister le contenu de
|
||
|
/usr/local/bin de la manière suivante :
|
||
|
|
||
|
/usr$ ls local/bin
|
||
|
|
||
|
- si \"/\" au début, chemin absolu
|
||
|
|
||
|
- \".\" répertoire courant
|
||
|
|
||
|
- \"..\" répertoire parent, naviguation aisée dans l'arborescence
|
||
|
|
||
|
- \"\" représente votre home
|
||
|
|
||
|
Par exemple pour retourner dans le home si on est l'utilisateur \"user\"
|
||
|
:
|
||
|
|
||
|
cd ../home/user
|
||
|
|
||
|
A noter que vu qu'on passe par la racine, on peux indiquer le chemin
|
||
|
absolu :
|
||
|
|
||
|
cd /home/user
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
Mais si vous voulez vraiment gagner du temps pour retrouver votre home,
|
||
|
de n'importe où, vous pouvez indiquer :
|
||
|
|
||
|
cd ~
|
||
|
|
||
|
Et si vous voulez afficher le contenu d'un des fichiers de user dans un
|
||
|
répertoire précis :
|
||
|
|
||
|
cat ~/repertoire/fichier
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
### privilèges
|
||
|
|
||
|
- Séparation nette entre root (l'admin), ses droits sur les fichier et
|
||
|
les programmes executables
|
||
|
|
||
|
- Utilisateurs et leurs infos dans /etc/passwd (par exemple leur home)
|
||
|
|
||
|
- Système identifie l'utilisateur par l'User ID (uid)
|
||
|
|
||
|
- root à l'uid 0
|
||
|
|
||
|
- de 1 à 999, comptes \"systèmes\"
|
||
|
|
||
|
- utilisateurs \"humains\" à partir de 1000
|
||
|
|
||
|
- droits par fichiers
|
||
|
|
||
|
- r pour Read (4)
|
||
|
|
||
|
- w pour Write (2)
|
||
|
|
||
|
- x pour eXecute (1)
|
||
|
|
||
|
- utilisateur propriétaire
|
||
|
|
||
|
- groupe propriétaire
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
Ce fonctionnement permet une gestion fine des droits d'accès. Il y a des
|
||
|
outils pour l'élèvation de privilèges au cas où la machine est
|
||
|
administrée par plusieurs utilisateurs par exemple. Sudo permet de
|
||
|
passer de simple utilisateur à utilisateur privilégié le temps d'une
|
||
|
commande
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
### OpenSSH
|
||
|
|
||
|
- Ouvrir un shell distant par le réseau
|
||
|
|
||
|
- Vrai couteau suisse du réseau
|
||
|
|
||
|
- Protocole standardisé SSH
|
||
|
|
||
|
On utilise la commande \"ssh\", spécifie la machine à atteindre (par son
|
||
|
IP ou son nom) et l'utilisateur ( sauf dans le cas où votre utilisateur
|
||
|
local - sur votre machine - porte le même nom ). Pour ouvrir un shell
|
||
|
sur la machine \"hôte\" avec l'utilisateur user, on utilise par exemple
|
||
|
la commande :
|
||
|
|
||
|
ssh user@hote
|
||
|
|
||
|
En fonction de la configuration machine hôte, il peut être demandé le
|
||
|
mot de passe du compte, ou l'utilisation de clés SSH ( authentification
|
||
|
plus robuste et plus élaborée en terme de sécurité ).
|
||
|
:::
|
||
|
|
||
|
::: frame
|
||
|
Les clés SSH fonctionnent par paire
|
||
|
|
||
|
- une clé privée, restant sur l'ordinateur et qu'il est nécessaire de
|
||
|
bien protéger ( c'est vraiment la clé pour rentrer sur le serveur ),
|
||
|
c'est pourquoi on utilise souvent une passphrase ( long mot de passe
|
||
|
) pour la déverouiller.
|
||
|
|
||
|
- une clé publique, qui est plus de l'ordre du cadenas et que
|
||
|
l'administrateur va déposer sur le serveur en l'associant à votre
|
||
|
compte utilisateur, qui peut être communiqué plus aisément qu'un mot
|
||
|
de passe
|
||
|
:::
|