A la découverte d'UNIX (FreeBSD)
Last updated on Tuesday, January 8, 2013
  • 4 semaines
  • Moyen

Free online content available in this course.

Got it!

Premier coup d'oeil

Cette installation ne vous a pas trop découragés, j'espère ? ;) Maintenant, nous y sommes. Votre machine redémarre et, dans quelques instants, vous allez commencer votre première visite au coeur de FreeBSD. Je vous préviens, il ne faut pas avoir peur du noir ! :diable:

A - Premier démarrage

FreeBSD est très bavard. :lol: Il va vous dire tout ce qu'il fait pendant cette phase de démarrage. Ne vous inquiétez pas si vous voyez passer des messages d'erreur : la plupart du temps, cela veut juste dire que votre imprimante est éteinte ou qu'il a détecté sur votre ordinateur une prise sur laquelle rien n'est branché.

Image utilisateur

Alors, que se passe-t-il, justement, pendant ce temps-là ? Entre l'allumage de l'ordinateur et celui où vous allez pouvoir commencer à lancer des commandes ?

Image utilisateur

1 - Au début, seule la carte mère de l'ordinateur est active. L'utilisateur peut afficher le menu BIOS Setup en appuyant sur une certaine touche. S'il ne le fait pas, la carte-mère passe la main au chargeur d'amorçage, le Boot Manager, situé sur le Master Boot Record, c'est à dire les 512 premiers octets du disque dur. Je vous ai déjà expliqué ça.

2 - S'il y a plusieurs OS sur l'ordinateur, le Boot Manager (GRUB ou boot0, selon ce que vous avez installé) affiche un menu demandant à l'utilisateur lequel il veut utiliser. Si ce dernier choisit FreeBSD, le Boot Manager lance le programme /boot/boot1.

3 - /boot/boot1 est un tout petit programme :honte: qui ne sait faire qu'une seule chose : lancer /boot/boot2

4 - /boot/boot2 est un programme un peu plus gros, qui va charger en mémoire le programme /boot/loader (chargeur).

5 - /boot/loader est un vrai programme bien complexe qui va examiner votre matériel :euh: et préparer le démarrage du noyau. Pour mener sa tâche à bien, il consulte plusieurs fichiers de configuration : /boot/loader.rc, /boot/device.hints, /boot/loader.conf, /boot/defaults/loader.conf. Vous ne devrez jamais modifier ce dernier. Mais les données qu'il contient seront ignorées s'il y a des données contradictoires dans /boot/loader.conf.

/boot/loader va aussi afficher le Menu de boot (celui où il est écrit FreeBSD en très gros à droite), qui vous permet de choisir quelques options pour le chargement du noyau. La plupart du temps, il est inutile de préciser quelque option que ce soit. ;)

6 - /boot/loader charge finalement en mémoire le noyau de FreeBSD. En Anglais, on utilise le mot kernel, qui signifie amande. Le noyau est un ensemble de processus (= programmes) qui vont rester actifs aussi longtemps que l'OS et assureront son bon fonctionnement. C'est un peu son ange gardien. :ange: L'utilisateur n'y aura d'ailleurs jamais accès. Pour l'instant, le noyau lance le programme init.

7 - init achève les préparatifs. Il consulte le fichier de configuration /etc/fstab pour charger en mémoire l'arborescence des fichiers. Et il lance successivement les programmes rc et getty.

8 - rc assure la configuration des ressources, à l'aide des fichiers /etc/rc.conf et /etc/defaults/rc.conf. Là encore, ce dernier ne doit jamais être modifié et ses données sont ignorées si elles sont contredites par celles de /etc/rc.conf. En fonction du contenu de ces deux fichiers, rc lance un certain nombre de DAEMONs. :diable: Les daemons sont des processus qui n'interagissent pas avec l'utilisateur. Mais contrairement à ceux du noyau, on peut leur envoyer occasionnellement des signaux, pour leur demander de s'arrêter par exemple. Les noms de daemons finissent généralement par un d, mais pas toujours. Il y a, entre autres, moused, qui gère la souris, ou cron, qui surveille l'horloge et se tient prêt à lancer des tâches programmées à l'avance pour une heure précise.

9 - getty configure la console en s'aidant du fichier /etc/ttys et lance le programme login, qui demande à l'utilisateur son identifiant et son mot de passe. :colere2:

10 - Une fois rassuré sur votre identité, :) login ouvre csh, votre shell. C'est ce dernier qui va vous permettre dans quelques instants de taper vos premières commandes.

B - Votre point de départ

A la fin de cette séquence, FreeBSD vous indique la date, l'heure, l'année, sa version, le nom de votre ordinateur et un (ttyv0) qui signifie que vous regardez actuellement le terminal principal. Eh oui, il y a plusieurs terminaux. On y reviendra.

login : signifie que vous devez maintenant vous identifier. Tapez donc l'identifiant que vous avez défini lors de la création de l'utilisateur puis votre mot de passe.

Vous avez alors droit à un sympathique message d'accueil... :) En Anglais bien sûr. Il vous indique où vous pouvez trouver de l'aide. En général, c'est sur le site www.FreeBSD.org. A la fin, on vous dit que vous pouvez taper sysinstall pour revenir au programme d'installation si vous voulez modifier quelque chose.

Pour finir, vous voyez ce symbole : %

C'est l'invite de commande. Il signifie quelque chose comme « Que puis-je faire pour vous ? »
Vous devez donc taper une commande. Le problème, c'est que vous ne connaissez rien à ce nouveau système. Vous ne savez pas quels fichiers il contient et où vous êtes actuellement parmi ces fichiers. :euh: Commencez-donc par demander votre position. En langage shell, cela se dit :

% pwd

Aussitôt, FreeBSD vous répond : /usr/home/[votre identifiant].

Sous UNIX, je vous le rappelle, la racine du disque s'appelle / et les noms de répertoires (on dit des dossiers) finissent par des /, qui ne sont d'ailleurs pas toujours indiqués quand il n'y a rien derrière. Vous remarquerez que c'est la même chose pour les adresses web.

Le dossier home/ est un sous-dossier de usr/, qui, lui, dépend directement de la racine / .

COMMANDE UNIX ----- pwd (print working directory)

Indique le chemin d'accès complet au dossier actuel.

_________________________________________________________________________

Vous êtes donc dans le dossier /usr/home/[votre identifiant]. C'est votre dossier personnel, celui où vous arrivez automatiquement lorsque vous vous loguez. Que contient-il ? Pour le savoir, tapez :

% ls

Cette commande vous donne la liste des fichiers présents dans le dossier où vous vous trouvez. Et que remarquez vous ? Aucune réponse. En apparence, votre dossier personnel est vide.

En apparence seulement ! Il contient en réalité des fichiers cachés, :ninja: que vous pouvez démasquer en tapant ls -a. Vous voyez qu'il n'est pas vide ce dossier. Il contient plusieurs fichiers et dossiers et tous les noms commencent par un point. Là encore, ça ne va pas plaire aux Windowsiens, :colere2: pour qui un point sert à séparer un nom de fichier de son extension. Sous UNIX, il n'y a pas toujours d'extension et on peut mettre un point (ou même plusieurs) où on veut dans le nom d'un fichier. S'il est au début, alors le fichier est caché et n'apparait que si vous ajoutez à ls l'option -a.

Pour connaître toutes les subtilités de la commande ls et quels autres paramètres on peut lui ajouter, consultez son manuel en tapant man ls. Pour toutes les commandes, c'est pareil : tapez man et vous saurez tout. Vous pouvez parcourir les pages du manuel à l'aide des touches fléchées ou utiliser Entrée pour descendre. Lorsque vous arrivez en bas de la page, la main vous est rendue.

COMMANDE UNIX ----- man (manual)

man nomDeCommande

Affiche le manuel de cette commande

_________________________________________________________

Si vous restez plusieurs minutes à lire cette page sans appuyer sur aucune touche ni déplacer la souris, vous verrez certainement votre économiseur d'écran se déclencher :

Image utilisateur

Vous n'avez peut-être pas le même que moi. Tout dépend de ce que vous avez choisi pendant l'installation.

Cela ne m'avance pas à grand chose de savoir que je suis dans mon dossier personnel : je ne sais toujours pas ce qu'il y a autour. Il n'y aurait pas une carte ?

Pour lire la carte et tout savoir sur l'arborescence des dossiers :

% man hier

Je ne vais pas tous vous les présenter mais en voici tout de même quelques-uns à bien connaître :

  • / : La racine du système. Tous les autres dossiers sont dedans.

  • /bin/ et /sbin/ : Les programmes exécutables du système de base.

  • /boot/ : Les fichiers permettant le démarrage du système.

  • /dev/ : Chacun des fichiers de ce dossier représente l'un de vos périphériques.

  • /etc/ : Des fichiers de configuration et tout ce qu'il faut pour gérer les DAEMONs. Vous n'avez pas fini d'en entendre parler ! ;)

  • /root/ : Dossier personnel du superutilisateur. :zorro:

  • /tmp/ : En général, les fichiers de ce dossier ne seront plus là au prochain démarrage.

  • /var/ : En quelque sorte le "journal de bord" de FreeBSD.

  • /usr/bin/ et /usr/sbin/ : Fichiers exécutables des applications préinstallées.

  • /usr/include/ : Bibliothèques pour programmer en langage C.

  • /usr/home/ : Les dossiers personnels des utilisateurs. C'est là qu'ils rangeront tous leurs documents.

  • /usr/local/ : Les applications que vous avez installées. Lui-même est subdivisé en sous-dossiers /usr/local/bin/, /usr/local/etc/, /usr/local/include/, etc.

  • /usr/src/ : Les code-sources de FreeBSD et des logiciels installés.

C - La racine

Maintenant que vous avez une carte, vous pouvez vous mettre en route. Et si vous alliez à la racine ? La commande pour changer de dossier est cd. Vous devez donc entrer :

% cd /

Vous y voila. Qu'y a-t-il à la racine ? ls vous l'indique mais comment savoir si les noms qu'elle vous présente sont ceux de fichiers ou de dossiers. Demandons-lui quelques précisions en ajoutant l'option -l.

% ls -l

Vous avez maintenant une présentation détaillée de chaque élément présent à la racine. Dans la colonne de gauche, le tout premier caractère est ? pour un fichier ordinaire, d pour un dossier et l pour un lien (un raccourci, si vous préférez). Nous voyons donc que COPYRIGHT est le seul fichier ordinaire situé à la racine. Compat, home et sys sont des liens et la colonne de droite vous indique vers quoi ils pointent. Les autres sont des dossiers, et vous pouvez relire man hier pour savoir ce qu'ils contiennent. Tous ces éléments « appartiennent » à l'utilisateur root et au groupe wheel. Vous comprenez, maintenant, pourquoi il était essentiel de vous inscrire comme membre du groupe wheel ?

Lisez le fichier COPYRIGHT. Vous connaîtrez ainsi la fameuse licence BSD (nouvelle version). Elle est à peine plus complexe que ce que je vous en disais dans le premier chapitre. Pour lire un fichier, la commande est less.

% less COPYRIGHT

Cette fois, quand vous avez fini de lire, il faut appuyer sur q pour revenir à l'invite de commande. Pour des fichiers plus courts, qui tiennent sur un seul écran, vous pouvez aussi utiliser la commande cat, qui affiche tout et vous rend aussitôt la main.
Reprenons l'examen de la racine. Il faut pour cela refaire un ls -l, mais Stop ! Lisez d'abord cette astuce :

Donc, affichez à nouveau cet écran :

Image utilisateur

Les caractères à gauche indiquent qui a le droit de faire quoi dans chaque fichier ou dossier. Les caractères 2, 3 et 4 indiquent les droits de lecture, d'écriture et d'exécution du propriétaire (root). Vous constatez que root :zorro: a tous les droits, sauf celui d'écrire dans les dossiers dev/ et proc/ ou dans le fichier COPYRIGHT. Les 3 caractères suivants montrent les droits du groupe propriétaire (wheel) et les trois derniers les droits des autres utilisateurs.

Les colonnes plus à droite indiquent l'espace disque occupé par le dossier et la date de dernière modification. Vous voyez que certains n'ont pas bougé depuis la création de cette version de FreeBSD (la 8.2). D'autres indiquent l'heure à laquelle vous avez installé FreeBSD sur votre machine et d'autres encore ont été modifiés il y a seulement quelques minutes.

Et maintenant, quelle heure est-il ? Vous pouvez le savoir en faisant appel à date ou à grdc :

Image utilisateur

Oulah, il se fait tard. :o Rentrons vite à la maison. Quittez d'abord grdc avec les touches Ctrl c.

D - Retour au bercail

Dites moi, sauriez-vous maintenant retourner dans votre dossier personnel ?

Il y a quatre façons d'y parvenir :

  • Le plus simple est de taper cd. L'absence d'arguments après cd vous envoie dans votre dossier personnel. cd ~ fonctionne aussi.

  • La deuxième méthode consiste à utiliser le chemin que vous a indiqué pwd au début de ce chapitre :

% cd /usr/home/[votre identifiant]
  • Troisième méthode : vous avez remarqué qu'il existe à la racine un raccourci nommé home vers le dossier /usr/home. Donc vous pouvez taper :

% cd home/[votre identifiant]
  • Dernière méthode : y aller à pieds.

Taper cd usr puis cd home puis cd [votre identifiant].

Une fois arrivé "chez vous", faites un pwd pour vérifier que vous êtes bien là où vous croyez être.

Si vous connaissez Linux, vous avez certainement remarqué que les commandes UNIX sont bien souvent les mêmes que sous GNU/Linux. Normal : le but du projet GNU est de réimplémenter UNIX, c'est à dire d'écrire un nouveau code-source donnant le même résultat.

N'hésitez donc pas à lire le tutoriel de m@teo sur les commandes de Linux, en complément de celui-ci. Presque toutes les commandes qui y sont présentées fonctionnent sous UNIX, sauf celles qui sont indiquées comme spécifiques à Debian/Ubuntu.

E - Utilisateurs et superutilisateur.

Supposons maintenant que vous vouliez ajouter un nouvel utilisateur ou modifier votre mot de passe. Une première solution consiste à retourner dans le programme d'installation en tapant sysinstall. Mais il est plus simple de faire les modifications souhaitées directement dans la console.

Les commandes permettant de gérer les utilisateurs commencent par le préfixe magique pw. :magicien: Il y a :

  • pw useradd : ajouter un utilisateur.

  • pw userdel : supprimer un utilisateur.

  • pw usershow : afficher les caractéristiques d'un utilisateur.

  • pw usermod : modifier un utilisateur.

  • pw groupadd : ajouter un groupe.

  • pw groupdel : supprimer un groupe.

  • pw groupshow : afficher les caractéristiques d'un groupe.

  • pw groupmod : modifier un groupe.

  • pwd : Ah non, pardon, ça n'a rien à voir... :D

  • etc.

Par exemple, pour créer un nouvel utilisateur du nom de martin et lui préparer dans home/ un dossier personnel bien douillet, il faut taper pw useradd martin -s csh -m. Le paramètre -s vous permet de définir le shell utilisé par martin et le -m final demande la création de son dossier personnel. Essayez, pour voir.

Ah non, ça ne fonctionne pas. Où est l'erreur ? :euh:

L'erreur, c'est que vous n'avez pas le droit d'appeler pw et de modifier des utilisateurs, comme ça, selon votre bon vouloir. Pour ça, vous avez besoin des pouvoirs de root. :zorro: Il faut donc commencer par vous substituer à l'utilisateur root en tapant :

% su

Saisissez le mot de passe de root, et votre invite de commande va changer :

[Nom de l'ordinateur]#

Ce # signifie que vous avez maintenant les pleins pouvoirs. Faites-en bon usage et veillez à ne rien casser. Donc, pour martin :

[Nom de l'ordinateur]# pw useradd martin -s csh -m

Vous voulez que martin puisse, comme vous, devenir root si nécessaire ? Il faut donc l'inscrire dans le groupe wheel :

[Nom de l'ordinateur]# pw usermod martin -g wheel

Tout compte fait, martin préfère le sh au csh :

[Nom de l'ordinateur]# pw usermod martin -s sh

Vous avez compris ? Avec usermod, l'option -g permet d'inscrire l'utilisateur dans un groupe et -s peut modifier son shell.

Il y a d'autres options possibles ?

Oh que oui ! Il y en a à la pelle ! Si vous voulez tout savoir, tapez man pw. Attention, c'est très long. :D

Il y a aussi d'autres commandes (adduser, par exemple) mais pw suffit la plupart du temps. Vous devez tout de même connaître passwd. Pour définir (ou, plus tard, pour modifier) le mot de passe de martin, tapez :

[Nom de l'ordinateur]# passwd martin

Si son mot de passe ne lui convient pas, martin pourra toujours le changer en tapant juste passwd.

C'est aussi en tant que root que vous pourrez demander l'extinction de l'ordinateur, avec la commande shutdown -p now. reboot permet de redémarrer. Quant à halt, elle interrompt tous les processus et met le système en pause jusqu'à ce qu'on appuie sur une touche quelconque, ce qui provoque le reboot.

Example of certificate of achievement
Example of certificate of achievement