GNU/Linux

Introduction à Linux

GNU/Linux

Un système d'exploitation réunissant le noyau Linux et le système GNU

Un système Libre, basé sur UNIX

Massivement utilisé en embarqué, sur les super-calculateurs ou les serveurs

Créé en 1991 par Linus Torvalds

Propose de nombreuses déclinaisons sous forme de "distributions"

90%

Pourcentage de serveurs sous Linux...(Statistiques "The Cloud Market" via Amazon EC2)

Si vous voulez faire du développement web, vous devez connaître Linux !

Interface graphique

+ Simple

- Change selon les distributions, pas toujours disponible, moins puissante

Ligne de Commande

+ Puissante, rapide, permet de comprendre, toujours disponible, change peu

- Plus complexe au début

Ligne de commande

Les essentielles

Changer de répertoire

Ex : cd /home/username

Lister un répertoire

Ex : ls /home/username

Supprimer un fichier

Ex : rm /home/username/filename

Créer un dossier

Ex : mkdir /home/username/new_dir

Copier un fichier

Ex : cp /tmp/file /etc/file_copy

Déplacer un fichier

Ex : mv /old/dir/file /new/dir/file_copy

Chaque commande peut prendre des arguments :

Un argument peut être soit une simple lettre, soit une lettre et une valeur.

Ex : Se connecter à mysql avec l'utilisateur root (demande le pass) : mysql -u "root" -p

Ex : Lister un répertoire avec ses fichiers invisibles : ls -a

Un argument est précédé d'un tiret, parfois deux.

Read The Fucking Manual

Un doute sur une commande ? Deux possibilités :

Aide rapide, -h ou --help

Aide poussée, man

ls --help ou man ls

Exemple, obtenir des informations sur la commande "ls" :

L'autocomplétion :

Comment auto-compléter ?

Tapez le début de votre commande, appuyez sur "tab" !

Le système vous propose les commandes ou arguments possibles !

Pour aller plus loin...

La redirection de flux, LE mécanisme

Le principe ? Utiliser la sortie d'une commande comme entrée d'une autre commande !

Toute la philosophie Unix tient dans le pipe !

Petit exemple :

grep : permet de vérifier des expressions régulières

ls : permet de lister un dossier

Donc, on peut trouver les fichiers du répertoire courant et qui contiennent "text" dans leur nom avec la commande suivante :

ls -al | grep "text"

Quelques commandes utiles

Faire un lien symbolique

Ex : ln -s /path/file /path/link

Lire le contenu d'un fichier

Ex : cat home/username/filename

Créer un fichier vide

Ex : touch /home/username/new_file

Changer d'utilisateur

Ex : su new_user

Trouver les fichiers qui contiennent une chaîne

Ex : grep -r 'chaine' /path/to/repository

Remplacer une chaîne "search" par "replace" dans tous les fichiers ".php" d'un répertoire

Ex : find ./ -type f -exec sed -i '' 's#search#replace#' *.php {} \;

Télécharger un fichier ou une page via http

Ex : wget http://example.com/example.zip

Droits
Groupes
Utilisateurs

Un système multi-utilisateurs !

Plusieurs personnes peuvent utiliser l'ordinateur en-même temps

Gestion des droits

+

Gestion des propriétés

Gestion des utilisateurs

+

Gestion des groupes

Droits et propriétés

Trois droits, représentés par des chiffres !

Lire - R(ead)

Écrire - W(rite)

Exécuter - X(ecute ?)

4

2

1

On compte les permissions en additionant !

Exemples :

Lire et exécuter, soit  4 + 1 = 5

Lire, écrire et exécuter, soit 4 + 2 + 1 = 7

Trois catégories d'utilisateurs

Dans l'ordre :

Propriétaire - Groupe - Tous les autres

Les droits sont définis pour chaque catégorie, de gauche à droite !

Exemples :

Propriétaire, lire, écrire et exécuter

Groupe, lire et exécuter

Autres, aucun

750

Propriétaire, lire et écrire

Groupe, lire

Autres, lire

644

Modifier les droits : chmod

La commande s'utilise de la façon suivante :

chmod droits /path/to/target_file

Note : L'option -R avant les droits permet d'appliquer les droits au contenu d'un dossier et de ses sous-dossiers

Exemple, modifier droits du fichier "/home/test/file" :

Lire, écrire, exécuter pour le propriétaire

Lire, exécuter pour le groupe

Lire pour les autres

chmod 754 /home/test/file

Deux appartenances différentes pour un fichier :

Utilisateur

Groupe

:

 

Droit pour une seule personne

Droit pour plusieurs personnes

Modifier appartenance : chown

La commande s'utilise de la façon suivante :

chown proprietaire:groupe /path/to/target_file

Note : L'option -R avant propritaire:groupe permet d'appliquer la modification au contenu d'un dossier et de ses sous-dossiers

Exemple, modifier appartenance "/home/test/file" :

On donne le fichier à l'utilisateur toto

On donne le fichier au groupe toto_group

chown toto:toto_group /home/test/file

Utilisateurs et groupes

Un utilisateur c'est :

Un login

Un mot de passe

Un groupe, parfois plusieurs

Éventuellement un dossier

Un utilisateur peut appartenir à un, ou plusieurs groupes !

Les groupes permettent souvent de gérer facilement des droits sur un fichier pour plusieurs utilisateurs !

Les commandes basiques

Ajouter un utilisateur

Ex : useradd new_user

Ajouter un groupe

Ex : groupadd new_group

Modifier le groupe principal d'un utilisateur

Ex : usermod -g new_group user

Supprimer un utilisateur

Ex : deluser user

Ajouter un groupe secondaire à un utilisateur

Ex : usermod -a -G new_group user

Supprimer un groupe

Ex : delgroup group

Root et sudo

Root, le super utilisateur

Tous les droits sur tous les fichiers !

N'utiliser qu'en cas de besoin !

Dossier personnel séparé, dans /root

En ligne de commande, le fait d'être root est symbolisé par le signe #

SUDO

Permet d’exécuter une commande avec les privilèges "root" en la préfixant avec "sudo"

Seulement pour les utilisateurs du groupe "sudo" ou ceux définis dans le fichier /etc/sudoers

Exemple, lister les fichiers dans "/root/" :

ls /root → Permission non accordée

sudo ls /root

Installation et mise à jour 

Trois modes d'installation

Téléchargement et désarchivage

Paquets et dépots

Compilation du

code

Linux repose sur des dépôts !

Ils regroupent des paquets (logiciels près à être installés) !

Chaque distribution à ses propres dépôts, souvent plusieurs !

Il est possible d'ajouter d'autres dépôts !

Les dépôts gèrent aussi les mises à jour !

Pour employer les dépôts, on utilise un gestionnaire de paquets, APT

Mettre à jour

On utilise le gestionnaire de paquets APT

Le gestionnaire APT demande des droits administrateur (root ou sudo)

Mettre à jour la liste des logiciels disponibles dans les dépôts, apt-get update

Mettre à jour les logiciels installés, apt-get upgrade

Installer un logiciel

Chercher un logiciel (à partir d'une partie de son nom par exemple), apt-cache search bout_nom_logiciel

Installer un logiciel (APT installera aussi ses dépendances), apt-get install nom_logiciel

Supprimer un logiciel

Désinstaller un logiciel, apt-get remove nom_logiciel

Désinstaller un logiciel en supprimant les fichiers de configuration, apt-get purge nom_logiciel

Désinstaller un logiciel et ses dépendances, apt-get autoremove nom_logiciel

Éditeur de texte

(ligne de commande)

VS

Deux éditeurs inclus de base

VIM

NANO

Vi iMproved

Basé sur le logiciel Vi, créé en 1976

Il repose sur un système de mode (normal, commande, édition)

Un éditeur plutôt à destination des programmeurs

Ultra puissant

Hautement personnalisable

Extrêmement léger

+

Optimisé pour rester sur le clavier

Difficile à prendre en main

Long à apprendre

-

GNU Nano

Partie du projet GNU, créé en 1999

Pas de système de mode, utilise plutôt des combinaisons de touches

Un éditeur pour débuter ou faire de l'édition occasionnelle

Simple à apprendre

Relativement intuitif

Pensé pour intéragir avec la souris

+

Peu puissant

Atteint rapidement ses limites

-

Ressources et informations utiles

Les têtes à connaître

Richard Stallman (rms), 1953 :

Fondateur du projet GNU, créateur de Emacs, président de la Free Software Foundation.

Linus Torvalds, 1969 :

Créateur du noyau Linux, créateur du logiciel Git. A été (cruellement) mordu par un manchot !

Quelques textes pour comprendre le libre

Analyse des avantages de l'open source :

La cathédrale et le bazar - http://framasoft.net/IMG/cathedrale-bazar.pdf

Pourquoi le libre est différent (mieux) que l'open source :

En quoi l'open source... - http://www.gnu.org/philosophy/open-source-misses-the-point.html

La licence GNU/GPL3, intéressante à connaître :

Licence GNU/GPL3 - http://www.linux-france.org/article/these/gpl.html

Quelques sites utiles

Forum, doc, wiki Ubuntu (fr) :

http://ubuntu-fr.org/

Wiki de très bonne qualité (fr) : http://lea-linux.org/

Actualités et articles (fr) :

http://linuxfr.org/

Nicolargo, bon blog Linux (fr) : http://blog.nicolargo.com/

Des tutos complets Debian (fr) : http://raspbian-france.fr/