# Certification Linux LPI/Administrateur système débutant/Examen 101/GNU et commandes Unix/Unix et Linux
## Objectifs

Unix est l'OS original d'Internet. NFS, TCP/IP, RPC… ont été développés sur et pour Unix. Unix est en fait une spécification de ce que doit être ce genre d'OS. Il en existe plusieurs implémentations. Citons pour l'exemple AIX d'IBM, HP-UX d'HP, Solaris de Sun, ou les *BSD. Linux est une implémentation Unix entièrement réécrit par Linus Torvalds et son équipe de développeurs volontaires répartis sur l’ensemble de la planète et mis en contact grâce à Internet. Unix comme Linux sont : Portable, multi-utilisateurs, multi-tâches, rendu indépendants des périphériques d'entrées et de sorties, capables de gérer les ressources matérielles, d'une grande performance, sécurisés, équipé d'une ligne de commande puissante et d'une interface graphique.
Linux est compatible avec la norme POSIX et supporte d'autres API standard comme BSD ou SVR4. Linux possède toutes les fonctionnalités que l’on peut attendre d’un Unix moderne, dont le multi-tâche, multi-utilisateurs, mémoire virtuelle, librairies partagées, chargement à la demande, shared copy-on-write executables, gestion propre de la mémoire et utilisation de TCP/IP pour le réseau.
De plus en plus d'entreprises sélectionnent Linux pour ses performances, son cout faible et l'absence de royalties.

### Unix et Linux

Unix est l'OS d'origine d'Internet. Il a été développé en 1970 aux laboratoires A&T Bell Labs. Il a ensuite été distribué gratuitement notamment aux gouvernements et aux universités. Divers organismes en supporte différentes distributions :
* System V
* BSD
* SCO
La plupart des Unix sont soumis à des licences de copyright.
Linux a été diffusé pour la première fois par Linus Torvalds en 1991. Son modèle de développement est libéré du droit d'auteur. Il adopte la licence GPL créée par Richard Stallman quelques années auparavant. Richard Stallman est également à l'origine du projet GNU, sans lequel Linux ne servirait pas à grand chose. Certaines personnes préfèrent ainsi parler de système GNU/Linux. Linux implémente la plupart des commandes system V, BSD et Unix.

### Se logger et se délogger

Entrer dans une session est le premier pas pour accéder à un système Linux. Vous avez besoin d’un identifiant (ID) et d’un mot de passe pour pouvoir commencer à utiliser le système. L'identifiant "root" est l'identifiant du super-utilisateur qui a tous les privilèges et n'est normalement assigné qu’à l'administrateur du système. Lorsque l’on a réussi à entrer dans le système, quelques variables d'environnement vont être initialisées et le shell assigné au compte correspondant à l'identifiant sera lancé.
Exemples de variables initialisées au loggin: $HOME, $SHELL, $PATH, et d'autres. En modifiant le fichier /etc/login.defs, l'administrateur peut régler quelques paramètres du logging et les variables pour tous les utilisateurs. Comme par exemple:
Pour sortir, utilisez les commandes exit ou logout.

### Mot de passe

Personne ne peut voir votre mot de passe, même l'administrateur. Pour changer votre mot de passe d’utilisateur ou de groupe, utilisez passwd.
Options courantes: -l, -u : bloque et débloque un compte. -g [| r]: Utilisé pour les groupes. -g défini un mot de passe pour le groupe, et -r le remplace. -x|n : Nombre de jours maximum et minimum pendant lequel un mot de passe reste valide.
En règle générale, un mot de passe doit:
* avoir une longueur minimale.
* ne contenir aucun mot du langage courant.
* Contenir des caractères alphanumériques
* Contenir un mélange de lettres majuscules et minuscules.

### Information sur les utilisateurs

Une ligne est définie dans le fichier /etc/passwd pour chaque compte utilisateur. Le mot de passe crypté est stocké dans le fichier /etc/shadow. Le format de /etc/passwd est:
Le champs x est l'ancienne localisation pour le mot de passe.
Le format de /etc/shadow est:
L'* pour le mot de passe crypté veut dire qu'aucun mot de passe n'a encore été défini. Le ! devant le mot de passe crypté veut dire que le compte est bloqué.

### Information sur les groupes

Il y a une ligne dans le fichier /etc/group pour chaque groupe d’utilisateurs. Le mot de passe crypté est stocké dans /etc/gshadow. Le format de /etc/group est:
Le format de /etc/gshadow est:
Les mots de passe pour les groupes ne sont pas souvent implémentés car il faut passer un membre du groupe pour en changer …

### Commandes variées

Pour obtenir des informations sur une session, jouez la commande id.
Options courantes: -g : N'imprime que l'identifiant du groupe. -u : N'imprime que l'identifiant de l'utilisateur.
Exemple:
Pour lancer un shell avec un nouvel utilisateur et/ou groupe, jouez la commande su.
Options courantes: -s : Sélectionne un autre shell.
Exemple:

### Shell

Un shell est un interpréteur de lignes de commandes qui :
* attend les commandes (en affichant ce qu'on appelle l'invite)
* Les interprète (ceci inclus les redirections d'entrée-sortie, les tuyaux, la génération de nom de fichiers, etc.)
* les exécute
* exécute des langages de script
Il y a plusieurs shells populaires :
* sh: Bourn shell, le shell de scripts standard.
* csh: Berkley shell, permet le contrôle de tâches, l’historique des commandes, les alias …
* ksh: Korn shell, Les syntaxes du Bourn avec les fonctionnalités du Berkley.
* Bash: Bourne Again shell, libre, shell clone du Korn. Shell traditionnel de Linux.
* Tcsh: Libre, clone du Berkley avec beaucoup d'extensions.
La plupart des shell vous permettent de personnaliser son invite et son environnement.
Pour le bash, la variable du prompt est PS1
Pour le bash, les fichiers utilisés pour la personnalisation de l'environnement sont:
.bashrc exécuté à chaque nouvelle session bash.
.bash_profile exécuté à la connexion au shell.
.bash_logout exécuté à la sortie du shell.

## Exercices

* Solution des exercices
| Sommaire | Travailler en ligne de commande |