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
3.1 apt et sources.list
3.2 En ligne de commande
3.3 Synaptic
3.4 KPackage
3.5 Compiler des sources
3.6 Chargement de modules
Un grand intérêt d'Unix est 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.
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 utilisateur... le mot de passe root est donc une question de vie ou de mort 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 console, on utilise la commande su puis on saisit le mot de passe superutilisateur. De $ (par défaut), l'invite devient #, qui est la signature d'une console disposant des droits de superutilisateur. On peut alors utiliser les applications en mode console, telles que les éditeurs vim ou emacs, et les commandes dont il sera question ci-dessous. mc permet la navigation et l'édition intuitive des fichiers de configuration.
On quitte le mode superutilisateur en saisissant exit (attention: su toto revient à l'utilisateur toto, mais un exit à ce stade revient au mode superutilisateur).
Les distributions actuelles ne permettent pas de lancer une application graphique à partir d'une console "superutilisateur". 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:
su apt-get install gksu
Il suffit de lancer, d'une console "simple utilisateur" la commande gksu votre_application.
La commande ls -l dans n'importe quel répertoire non vide retourne des informations de ce genre:
-rwxr----- 1 toto toto 46284 2008-07-03 19:54 LTR.py drwxr-x--- 12 toto nini 4096 2008-07-04 15:00 musique -rw-r--r-- 1 toto toto 46284 2008-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 personnes appartenant à un groupe (les groupes sont désignés dans la deuxième colonne de noms. Les trois derniers caractères concernent tout le monde.
Pour affilier nini au groupe toto, il faut l'y inscrire:
# addgroup nini toto
ou l'ajouter (également en mode superutilisateur) dans le fichier /etc/group en regard de toto:
lp:x:7:jcl,nini,toto audio:x:29:jcl,nini,toto video:x:44:jcl,nini,toto games:x:60: toto:x:1000:nini nini:x:501: jcl:x:502: etc.
On voit dans ce fichier toto, jcl et nini ont accès à l'imprimante, au son et à la vidéo. nini a les droit de groupe de toto. Le ligne
drwxr-x--- 12 toto nini 4096 2008-07-04 15:00 musique
permet à nini de pénétrer (x) et lire (r) le répertoire musique.
Les trois derniers caractères concernent tous les utilisateurs. C'est ainsi que jcl a le droit de lire nature.txt bien qu'il ne soit pas toto et ne fasse pas partie du groupe toto.
Pour modifier les droits d'un fichier ou d'un répertoire, on utilise chmod:
chmod 754 fichier
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 à ceux qui n'appartiennent pas au 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 à l'utilisateur, au groupe
et au reste du monde, celui d'édition et d'exécution au propriétaire seulement
Notes
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é.
ps -e permet de visualiser les processus en cours, par exemple (non exhaustif):
toto@diderot:~$ ps -e
PID TTY TIME CMD
1 ? 00:00:01 init
...
1165 ? 00:00:00 gdm3
1174 ? 00:00:00 gdm-simple-slav
1177 ? 00:00:00 acpid
1185 tty7 00:00:36 Xorg
...
2802 ? 00:00:03 gedit
2822 ? 00:00:00 gnome-terminal
2823 ? 00:00:00 gnome-pty-helpe
2824 pts/0 00:00:00 bash
2831 pts/0 00:00:00 ps
kill n 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 (n représente son numéro, voir ci-dessus).
Le système d'installation de Debian s'appelle apt (Advanced Packaging Tool). Il a été repris par les systèmes basés sur Debian, comme Ubuntu et déclinaisons ou Knoppix... Les commandes apt recherchent et installent les applications de façon très faciles.
Lors de toute installation, les commandes apt interrogent un fichier qui lui indiquent où se trouvent les paquets à installer: /etc/apt/sources.list.
# deb cdrom:[Debian GNU/Linux 6.0 r3 _Squeeze_ - NetInstall amd64... deb http://ftp.debian.org/debian/ squeeze main non-free contrib # deb-src http://ftp.debian.org/debian/ squeeze main non-free contrib deb http://security.debian.org/ squeeze/updates main contrib non-free # deb-src http://security.debian.org/ squeeze/updates main contrib non-free deb http://www.debian-multimedia.org/ squeeze main # deb http://www.backports.org/debian/ lenny-backports main contrib # utile à la version amd64 de lenny
su apt-get install application_souhaitée permet l'installation d'une application en ligne de commande, à partir de CD, clé USB ou connexion Internet.
su apt-get remove [--purge] application désinstalle [complètement] 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 les noms et descriptifs des applications
apt-cache search video mp3 sélectionne les applications dont les noms et descriptifs contiennent en même temps video et mp3
apt-cache show paquet donne les informations disponibles sur un paquet particulier
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:
su apt-get update remet à jour la base de données des dépôts indiqués dans le fichier /etc/apt/sources.list
su apt-get upgrade recherche les nouvelles versions des applications installées sur votre système et remplace les anciennes
su 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.
su 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é)
su dpkg-reconfigure nom_du_paquet permet de reparamétrer un paquet
Synaptic est une interface utilisateur pour les commandes apt. Elle se lance avec gksu synaptic.
Il 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, Tout mettre à jour et, s'il y a de nouvelles versions de paquets: Appliquer
Configuration -> Dépôts permet une gestion aisée des dépôts (comme apt-get, Synaptic se base sur le fichier /etc/apt/sources.list).
Si synaptic n'est pas installé, il faudra peut-être utiliser... la ligne de commande
su apt-get install synaptic
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.
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.
Le compilateur le plus indiqué est gcc, actuellement dans sa version 4.x. Contrôlez bien que cpp, libgcc1, libc6, libc6-i686 [ou libc6-amd64] soient installés, parce que les Error 1, Error 2... ne sont pas toujours explicites. Attention: gcc-4.4 peut être installé bien que la compilation annonce une absence de compilateur. C'est probablement que gcc manque.
Les headers (fichier 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 2.6.26-amd64, les headers à installer pour le noyau tournant actuellement sont linux-headers-2.6.26-amd64.
Après installation, ils seront disponibles à l'adresse /usr/src/. Il fallait auparavant le lien symbolique /usr/src/linux vers les headers:
su ln -s /usr/src/linux-headers-votre-version /usr/src/linux
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!):
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.
su 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.