site sans réclame GNU/LinuxDebianÉcrireS'abonner

Opérations basiques sur GNU/Linux, orienté Debian

1. Les droits

1.1 Root: le superutilisateur
1.2 Les droits sur un fichier
1.3 Modifier les droits d'un fichier
1.4 Changer de propriétaire

2. Gestion des processus

2.1 ps
2.2 kill et killall

3. Installer un logiciel

3.1 sources.list
3.2 apt et dpkg (Debian et dér.)
3.3 Multi-Arch
3.4 Synaptic
3.5 KPackage
3.6 Compiler des sources
3.7 Chargement de modules

4. Systèmes de fichiers

4.1 montage
4.2 /etc/fstab
4.3 lsblk
4.4 dd
4.5 foremost
4.6 testdisk

1. Les droits

Un des grands intérêts d'Unix est d'avoir été conçu dès le départ avec la notion de droits: les personnes utilisant le même poste de travail peuvent très bien (et c'est recommandé) avoir leurs espaces séparés pour ne pas risquer d'abîmer le travail des autres, voire de rendre le système inutilisable.

1.1 Root: le superutilisateur

La personne qui installe le système détient les droits de superutilisateur, qui lui permettent d'administrer le système, c'est-à-dire installer ou désinstaller des logiciels, des périphériques, d'interdire ou de permettre de nouveaux utilisateurs... le mot de passe root est donc une question de survie pour un système Unix. Par ailleurs, l'administrateur ne devrait jamais utiliser les droits de superutilisateur pour son travail personnel, au risque d'abîmer le système ou les fichiers des autres utilisateurs. En utilisant des droits plus limités, on fait moins de bêtises...

En console, on utilise la commande su [Enter] puis on saisit le mot de passe super-utilisateur. De $ (par défaut), l'invite devient #, qui est la signature d'une console disposant des droits de superutilisateur. On peut alors utiliser les éditeurs vim, emacs ou nano pour éditer les fichiers sensibles, et certaines commandes qui requièrent les droits les plus élevés. mc permet la navigation et l'édition intuitive des fichiers de configuration.

On quitte le mode super-utilisateur en saisissant exit (attention: su toto revient à l'utilisateur toto, mais un exit à ce stade revient au mode superutilisateur).

Les distributions sérieuses actuelles ne permettent pas de lancer une application graphique à partir d'une console "super-utilisateur". On contourne cette interdiction (dans les cas rarissimes nécessitant une mise au point ou pour les applications nécessitant ces droits, comme un installateur d'applications ou l'administration du système) en installant gksu:

suEn mode super-utilisateur: su [Enter] apt-get install gksu

Il suffit de lancer, d'une console "simple utilisateur" la commande gksu votre_application.

1.2 Les droits sur un fichier

La commande ls -l dans n'importe quel répertoire non vide retourne des informations de ce genre:

-rwxr-----  1 toto toto   46284 2011-07-03 19:54 LTR.py
drwxr-x--- 12 toto nini    4096 2013-07-04 15:00 musique
-rw-r--r--  1 toto toto   46284 2014-07-03 19:54 nature.txt

La première colonne a une largeur de 10 caractères. Le premier donne la nature du fichier: d pour directory (répertoire), un trait pour un fichier simple, l pour un lien...

Les trois caractères suivants concernent le propriétaire du fichier (le premier nom qui suit, à savoir, toto). Le r (read) signifie que toto a le droit de lire le fichier; le w (write) que toto a le droit d'écrire (modifier ou effacer) et x (execute pour les fichiers et ouverture pour les répertoires). Viennent ensuite trois caractères concernant les permissions octroyées aux personnes inscrites à un groupe (dont le nom est désigné dans la deuxième colonne de noms). Les trois derniers caractères concernent les permissions conférées à tout le monde.

Pour affilier nini au groupe toto, il faut l'y inscrire:

suEn mode super-utilisateur: su [Enter] addgroup nini toto

ou l'ajouter (également en mode superutilisateur) dans le fichier /etc/group en regard de toto:

lp:x:7:peps,nini,toto
audio:x:29:peps,nini,toto
video:x:44:peps,nini,toto
games:x:60:
toto:x:1000:nini
nini:x:501:
peps:x:502:
 etc.

On voit dans ce fichier toto, peps et nini ont accès à l'imprimante, au son et à la vidéo. nini a les droits de groupe de toto. La ligne:

-rwxr-----  1 toto toto   46284 2011-07-03 19:54 LTR.py

... permet à nini de lire le fichier LTR.py (mais pas de l'exécuter) car elle appartient au groupe toto qui y a le droit de le lire mais pas de l'exécuter (r--) ; le propriétaire toto a tous les droits sur ce fichier (rwx).

Les trois derniers caractères concernent tous les utilisateurs. Le 3e r permet à quiconque de lire un fichier, dont peps bien qu'il ne soit pas toto et ne fasse pas partie du groupe toto:

-rw-r--r--  1 toto toto   46284 2014-07-03 19:54 nature.txt

Par contre, peps ne peut pénétrer dans le répertoire musique, n'étant pas le propriétaire, n'appartenant pas au groupe nini et le troisième r n'existant pas:

drwxr-x--- 12 toto nini  4096 2013-07-04 15:00 musique

1.3 Modifier les droits d'un fichier

Seul le propriétaire d'un fichier ou d'un répertoire peut en modifier les droits. Toto peut changer les droits du fichier nature.txt, puisqu'il lui appartient:

drwxr-x--- 12 toto nini    4096 2013-07-04 15:00 musique

... avec chmod:

toto@villon:~$ chmod 754 nature.txt

Les chiffres représentent respectivement les droits du propriétaire (user), du groupe (group) et de tout le monde (other). Chaque chiffre se décompose ensuite:

7 = 4 (r) + 2 (w) + 1 (x)  = rwx (tous les droits)
6 = 4 (r) + 2 (w)          = rw- (droits de lecture et d'écriture)
5 = 4 (r)         + 1 (x)  = r-x (droits de lecture et d'exécution)
4 = 4 (r)                  = r-- (droits de lecture seule; s'utilise surtout pour le groupe et pour "tout le monde")
3 =         2 (w) + 1 (x)  = -wx (écriture et exécution: très rare)
2 =         2 (w)          = -w- (écriture seule: très rare)
1 =               + 1 (x)  = --x (exécution seule: très rare)
0 =                        = --- (aucun droit; s'utilise surtout pour "tout le monde")

Il existe une autre manière de changer les droits, utilisant les lettres u (user), g (group), o (other), a (all: les trois catégories), en plus des r, w et x:

chmod g=rwx accorde tous les droits au groupe
chmod o= retire tous les droits aux autres, ni utilisateur ni groupe
chmod g+rx ajoute les droits de lecture et d'exécution au groupe
chmod a-x retire le droit d'exécution à tout le monde (y compris au propriétaire)
chmod a=r,u=wx (pas d'espace après la virgule) accorde le droit de lecture à tout le monde, celui d'édition et d'exécution au propriétaire seulement

Notes

1.4 Changer de propriétaire et de groupe

Pour modifier la propriété d'un fichier ou d'un répertoire, on utilise chown:

chown toto:nini LTR.py fixe le propriétaire toto et le groupe nini au fichier LTR.py

À part le superutilisateur, seul le propriétaire d'un fichier peut en changer la propriété.

2. Gestion des processus

2.1 ps

ps -ef permet de visualiser les processus en cours, par exemple (non exhaustif):

toto@diderot:~$ ps -ef
UID    PID  PPID  C STIME TTY        TIME CMD
root     1     0  0 09:14 ?      00:00:00 init [2]  
root     2     0  0 09:14 ?      00:00:00 [kthreadd]
  ...
toto  5115     2  0 11:39 ?      00:00:00 [kworker/u16:0]
jc    5158     1  2 11:42 ?      00:00:01 pluma /home/toto/sites/linux/basiques.htm
toto  5170  3174 15 11:43 ?      00:00:00 mate-terminal
toto  5178  5170  0 11:43 ?      00:00:00 gnome-pty-helper
toto  5179  5170  1 11:43 pts/0  00:00:00 bash
toto  5221  5179  0 11:43 pts/0  00:00:00 ps -ef

2.2 kill et killall

kill nnn permet de détruire un processus lors d'une impossibilité de quitter une application par la voie normale, ce qui empêche parfois de la relancer (nnn représente son ProcessusIDentification, voir ci-dessus la colonne PID).

killall nom permet de détruire un processus par son nom de commande (voir ci-dessus la colonne CMD).

3. Installer un logiciel

3.1 sources.list

Le système d'installation de Debian s'appelle apt (Advanced Packaging Tool), repris par les systèmes basés sur Debian. Les commandes apt recherchent et installent les applications de façon très automatique, en recherchant et installant les éventuelles librairies nécessaires. Les dépôts qui seront visités figurent dans le fichier /etc/apt/sources.list

# deb cdrom:[Debian GNU/Linux 8.0.0 _Jessie_ - Official amd64 NETINST Binary-1 20150425-12:50]/ jessie main 

deb http://ftp.be.debian.org/debian/ jessie main non-free contrib 
deb-src http://ftp.be.debian.org/debian/ jessie main non-free contrib 

deb http://security.debian.org/ jessie/updates main contrib non-free 
deb-src http://security.debian.org/ jessie/updates main contrib non-free 

# jessie-updates, previously known as 'volatile'
deb http://ftp.be.debian.org/debian/ jessie-updates main contrib non-free 
deb-src http://ftp.be.debian.org/debian/ jessie-updates main contrib non-free 

# jessie-backports, previously on backports.debian.org
deb http://ftp.be.debian.org/debian/ jessie-backports main contrib non-free
deb-src http://ftp.be.debian.org/debian/ jessie-backports main contrib non-free 

deb http://www.deb-multimedia.org/ jessie non-free main  

Ce fichier modifié, il est nécessaire de remettre à jour la base de données de la logithèque apt avec:

suEn mode super-utilisateur: su [Enter] apt-get update

3.2 apt et dpkg

suEn mode super-utilisateur: su [Enter] apt-get install application_souhaitée permet l'installation d'une application en ligne de commande, à partir de CD, clé USB ou connexion Internet.
suEn mode super-utilisateur: su [Enter] apt-get remove [--purge] application désinstalle [complètement: fichiers de configuration y compris] un paquet

Bien que Debian ait opté pour des noms simples débarrassés des numéros de version, on ne sait pas toujours comment s'appelle exactement une application:

apt-cache search mot_clé recherche un mot clé dans le noms et le descriptif des applications
apt-cache search video mpg4 sélectionne les applications dont le nom et le descriptif contiennent en même temps video et mpg4
apt-cache show paquet donne les informations disponibles sur un paquet particulier

L'installation consiste en un placement des paquets .deb en /var/cache/apt/archives/, en une décompression des paquets et le placement d'exécutables, de la documentation ou des données en /usr/bin ou /usr/share, en tenant compte des dépendances (librairies nécessaires), en l'actualisation de la base de données et l'édition éventuellement de fichiers de configuration. De plus, le menu de lancement de logiciel de votre bureau est le plus souvent actualisé avec les nouvelles applications.

Attention: apt-get ne peut fonctionner tant qu'une installation par dpkg est en cours ou lorsque synaptic est ouvert, car la base de données des applications est verrouillée, ce qui empêche deux opérations d'installation contradictoires.

Mises à jour

Il est bon de temps en temps de vérifier qu'il n'existe pas de nouvelle version corrigeant les éventuels défauts ou problèmes de sécurité des applications se trouvant sur votre système. Cela se fait en deux temps:

suEn mode super-utilisateur: su [Enter] apt-get update remet à jour la base de données des dépôts indiqués dans le fichier /etc/apt/sources.list
suEn mode super-utilisateur: su [Enter] apt-get upgrade recherche les nouvelles versions des applications installées sur votre système et remplace les anciennes

Attention: il peut exister des conflits entre versions différentes d'un paquet situées sur des dépôts différents. Il faut alors spécifier le dépôt:

suEn mode super-utilisateur: su [Enter] apt-get -t jessie-backports install nom-du-paquet

suEn mode super-utilisateur: su [Enter] apt-get clean détruit les paquets .deb téléchargés lors d'une installation, ce qui permet de récupérer de la place.

dpkg

suEn mode super-utilisateur: su [Enter] dpkg -i nom_du_paquet.deb installe un paquet téléchargé, à condition de disposer des paquets dont il dépend (ce n'est pas conseillé, le système Debian étant un tout structuré). Il est possible que l'installation ne puisse se faire parce qu'il manque de librairies. Utiliser alors la commande suEn mode super-utilisateur: su [Enter] apt-get install --fix-missing

suEn mode super-utilisateur: su [Enter] dpkg-reconfigure nom_du_paquet permet de reparamétrer un paquet

suEn mode super-utilisateur: su [Enter] dpkg --remove nom_du_paquet permet d'éliminer un paquet mal configuré, qui empêche toute nouvelle installation ou configuration (tel une tentative d'installation de ttf-mscorefonts-installer sur Jessie/KDE - quatre ont été réussies sur Jessie/Mate-desktop).

Pour sauvegarder la liste des applications actuellement installée sur votre système Debian:

dpkg --get-selections > paquets.txt

Ce fichier (à conserver sur une clé USB ou sur une partition qui ne sera pas reformatée) sera utile pour réinstaller ces applications après réinstallation du système:

suEn mode super-utilisateur: su [Enter] apt-get update
suEn mode super-utilisateur: su [Enter] dpkg --set-selections < paquets.txt
suEn mode super-utilisateur: su [Enter] apt-get dselect-upgrade

Attention: dpkg ne peut fonctionner tant qu'une installation par apt-get est en cours ou lorsque synaptic est ouvert, car la base de données des applications est verrouillée.

3.3 Multi-Arch

Le système Multi-Arch permet d'utiliser des binaires prévus pour une autre architecture. Dans cet exemple, il s'agit d'utiliser skype écrit pour une architecture 32bits avec une distribution 64 bits:

suEn mode super-utilisateur: su [Enter] dpkg --add-architecture i386
suEn mode super-utilisateur: su [Enter] apt-get update
suEn mode super-utilisateur: su [Enter] apt-get -f install
suEn mode super-utilisateur: su [Enter] dpkg -i skype-debian_4.3.0.37-1_i386.deb

Note: il faut parfois relancer suEn mode super-utilisateur: su [Enter] apt-get -f install avant une nouvelle réinstallation du paquet .deb

3.4 Synaptic

Synaptic est une interface utilisateur pour les commandes apt. Elle se lance avec gksu synaptic. Appelée par le menu Gnome ou Mate-desktop, le mot de passe du super-utilisateur est de toute façon exigé.

Synaptic permet la recherche d'applications dans la base de donnée Debian, donne un aperçu de leur utilité, les installe en vérifiant leurs dépendances (une application se base en général sur des librairies, ou sont des versions graphiques d'applications en ligne de commande) et les configure.

Avec une connexion rapide, cela permet de suivre l'évolution des applications et de leur sécurité: Synaptic permet l'update en cliquant successivement sur les trois gros boutons de la barre en haut, Recharger (apt-get update), Tout mettre à jour (apt-get upgrade) et, s'il y a de nouvelles versions de paquets: Appliquer

Comme apt-get, synaptic se base sur le fichier /etc/apt/sources.list), mais la gestion est plus aisée, par Configuration -> Dépôts:

URI: http://ftp.us.debian.org/debian/ (ou similaire)
Distribution: wheezy (ou testing si vous vous y connaissez)
Catégorie(s): contrib non-free main (ou seulement main pour les puristes)

Un petit carré vert devant le nom d'un paquet signifie qu'il est installé. Avec une petite étoile jaune, cela signifie qu'un des dépôts contient une version plus récente. Il n'est pas toujours conseillé de procédéer à la mise à niveau, une application d'un dépôt nécessitant peut-être sa version plus ancienne.

Si synaptic n'est pas installé, il faudra utiliser... la ligne de commande

suEn mode super-utilisateur: su [Enter] apt-get install synaptic

Attention: synaptic verrouille la base de données des applications, rendant l'utilisation simultanée de apt-get ou dpkg impossible.

3.5 KPackage

Avec KDE, on peut préférer les outils déjà installés. K» Système» KPackage est comme synaptic une interface graphique pour apt-get, mais il demande le mot de passe superutilisateur à chaque installation, et l'affichage alphabétique de tous les paquets (genres mélangés) ne semble pas possible.

3.6 Compiler des sources

Certaines applications n'existent que sous forme d'archives à compiler, soit qu'elles n'existent pas dans un paquet officiel de votre distribution, soit pas sous une version comprenant une fonctionnalité dont vous avez besoin. Une compilation n'est pas nécessairement difficile, si l'on veut bien faire attention à ce que la machine raconte.

Les headers (fichiers de description des sources) de votre noyau linux (kernel) doivent également être installés. Le nom dépend du noyau linux installé. Si uname -r indique par exemple la version 3.16.0-4-amd64, les headers à installer pour le noyau tournant actuellement sont linux-headers-3.16.0-4-amd64.

Après installation, ils seront disponibles à l'adresse /usr/src/. Il fallait auparavant le lien symbolique /usr/src/linux vers les headers:

suEn mode super-utilisateur: su [Enter] ln -s /usr/src/linux-headers-votre-version /usr/src/linux

Le compilateur le plus indiqué est gcc, actuellement dans sa version 4.x. Contrôlez bien que cpp, libgcc1, libc6, parfois build-essential soient installés, parce que les Error 1, Error 2... ne sont pas toujours explicites. Attention: gcc-4.8 peut être installé bien que la compilation annonce une absence de compilateur, c'est probablement que le lien gcc manque.

Cela ne semble plus nécessaire: la compilation est plus intelligente, intégrant la version du système dans l'adresse des fichiers de la version des headers à intégrer. Il est donc possible de disposer de plusieurs noyaux, et le compilateur choisit la version des headers en fonction du noyau utilisé.

Pour la compilation proprement dite, il faut décompresser votreapplication.tar.gz et d'abord lire le fichier README ou INSTALL qui s'y trouve. La procédure à suivre est (le plus généralement!):

  1. tar -xvjf répertoire-à-décompresser.tar.bz2
  2. cd répertoire-décompressé
  3. Lire le README ou INSTALL, qui indique parfois une méthode particulière, sinon:
  4. ./configure lance le fichier configure du répertoire, qui fabrique le fichier makefile
  5. make lance la commande make normalement disponible sur votre système (sinon, installer make)
  6. suEn mode super-utilisateur: su [Enter] make install lance l'installation.

Parfois, un script d'installation ./install remplace la procédure ./configure / make / make install.

En général, les erreurs surviennent lors des deux premières étapes, par exemple:

Error 1: libc6 library not found

doit vous inciter à installer le paquet libc6.

3.7 Chargement de modules

suEn mode super-utilisateur: su [Enter] modprobe module permet de charger un module et ses dépendances. Pour automatiser cela, inscrire les modules (dans l'ordre des dépendances: le module spécifié en dernier lieu) dans le fichier /etc/modules (pour Mandriva, ce serait le fichier /etc/modprobe.preload).

lsmod permet de déceler les modules dépendants, mais peut-être vaut-il mieux comparer avant et après modprobe – pas trop pratique.

4. Systèmes de fichiers

En Unix, données, entrées/sorties et processus sont reliés à un unique système de fichier, dont le sommet ("/") est appelé root (voir partitions). Tout se passe de façon de plus en plus automatique, mais il est parfois utile de savoir comment cela se passe.

4.1 Montage: mount

Monte un périphérique à un endroit précis du système de fichiers.

suEn mode super-utilisateur: su [Enter] mount -t iso9660 /dev/sr0 /media/cdrom

... monte le CD (/dev/sr0 pour le premier lecteur) de données (iso9660) dans le répertoire /media/cdrom

suEn mode super-utilisateur: su [Enter] mount -o loop -t iso9660 image.iso /repertoire

... monte une image CD comme système de fichier visible en /repertoire

mount sans argument liste toutes les partitions actuellement montées, même celles du système, comme /proc (il s'agit du fichier /etc/mtab légèrement reformaté).

suEn mode super-utilisateur: su [Enter] umount /dev/sdb ou suEn mode super-utilisateur: su [Enter] umount /media/data démonte le second disque dur (ou la clé USB) identifié comme sdb et monté en /media/data.

La prochaine section explique comment simplifier le montage des périphériques.

4.2 /etc/fstab

Le fichier /etc/fstab contient les connexions entre périphériques et leur situation sur l'arborescence des fichiers. Il n'est modifiable que par le super-utilisateur. Avec Debian, il contient quelque chose qui ressemble à ça:

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump> <pass>
proc            /proc           proc    defaults         0     0
/dev/sda1       none            swap    sw               0     0
/dev/sda2       /               ext4    defaults,errors=remount-ro  0  1
/dev/sda3       /home           ext3    rw,auto          0     0
/dev/sda4       /archives       ext3    rw,user,noauto   0     0
/dev/sr0        /media/cdrom    udf,iso9660 user,noauto  0     0
/dev/sdb1       /media/usbkey   auto    rw,user,noauto   0     0

Attention: une modification de la ligne consacrée à la partition / risque de rendre le système non bootable.

L'interface graphique reconnaît souvent automatiquement le branchement d'un disque USB ou l'insertion d'un CD ou DVD, qu'il monte dans le répertoire /media/... (sur Debian). Cependant, la ligne:

/dev/sdb1 /media/data auto user,noauto  0  0

dans /etc/fstab permet à un simple utilisateur de monter très simplement le périphérique avec mount /dev/sdb1 ou mount /media/data

4.3 lsblk

liste les périphériques de block:

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 298,1G  0 disk 
├─sda1   8:1    0   4,7G  0 part [SWAP]
├─sda2   8:2    0    14G  0 part /
├─sda3   8:3    0  93,1G  0 part /home
└─sda4   8:4    0 186,3G  0 part /archives
sdb      8:16   1   3,8G  0 disk 
└─sdb1   8:17   1   3,8G  0 part /media/toto/F009-64A5
sr0     11:0    1  1024M  0 rom

4.4 dd

Un périphérique contient des données mais également l'organisation de ces données sur le support. dd copie la structure et les données de façon linéaire d'un périphérique dans un fichier, ou l'inverse. Cela permet par exemple de fabriquer une clé bootable permettant d'installer un système GNU/Linux. if (input file) est ce qui est lu, of (output file) est ce qui est écrit.

Attention! cette manipulation vers un périphérique efface irrémédiablement sa structure et ses données.

suEn mode super-utilisateur: su [Enter] dd if=/dev/sdb1 of=/home/toto/cle-usb.img

... copie l'entièreté de la partition sdb1 (clé USB par exemple) dans le fichier cle-usb.img de la partition personnelle de l'utilisateur toto.

mount -o loop -t ext3 fichier.img /home/toto/data

... monte un fichier issu de la commande dd (s'il est issu d'un système de fichier ext3; si cela ne fonctionne pas, tentez avec -t auto) dans le répertoire existant /home/toto/data

4.5 foremost

Récupération des fichiers effacés (les systèmes de fichiers journalisés comme ext3 doivent être démontés; ne fonctionne pas avec ext4).

foremost /dev/sdb1 -t jpg

... recopie les fichiers effacés d'un périphérique de stockage dans un répertoire, sous certaines conditions: les fichiers effacés doivent être d'un seul tenant sur la partition, il ne doivent pas avoir été recouverts par d'autres fichiers...

-t pour préciser les types de fichiers (jpeg, mov, pdf, avi, etc.), tous par défaut
-o pour préciser le nom du répertoire de sortie (~/output/ par défaut)

4.6 testdisk

Réparation de partition ou récupération des fichiers inaccessibles sur mémoire de masse, en mode console.

suEn mode super-utilisateur:
su [Enter] + mdp root
testdisk /dev/sdb

permet de travailler sur le disque sdb (second disque dur du système ou premier disque dur externe ou clé USB...

La suite n'est pas trop intuitive, cela dépend du problème rencontré. Si le boot-secteur ou la FAT est détruite, il faut impérativement lancer une analyse du périphérique, qui peut prendre quelques heures pour un téra-octet. Une fois le périphérique scanné, il faut décider des fichiers ou répertoires à copier et d'en endroit pour les recevoir.

Attention si vous utilisez l'option /log, qui nécessite plusieurs Go de place et peut saturer votre partition courante.