Les bases d'UNIX et de Linux 1
L’origine d'UNIX. 3
Les avantages d’Unix. 3
Introduction au système de fichiers UNIX. 5
Les droits d'accès sur UNIX. 9
Les utilisateurs. 9
Les groupes. 10
Droits sur les fichiers et dossiers. 11
Les droits étendus. 17
Le droit SGID.. 17
Les principales commandes UNIX. 19
L’éditeur VI 36
Supervision du système. 37
Le répertoire /proc. 42
En 1965, deux enterprises, Bell Labs, General Electric, et le MIT (Massachussets Institute of Technology) débutent la conception d’un système d'exploitation ambitieux, Multics
Ce projet échoue et cinq ans après cet abandon, deux employés de Bell Labs, Dennis Ritchie et Ken Thompson, conçoivent un système d'exploitation capable de répondre aux besoins de leur entreprise. Ce système d'exploitation sera baptisé UNIX
En 1985 au Pays-Bas, un professeur, Adrew Tannenbaum, conçoit Minix durant ses heures de loisirs, basé sur l’architecture UNIX. Ce système d'exploitation à comme but de faire découvrir la programmation des systèmes d’exploitation aux étudiants Hollandais
Cinq ans plus tard, en Finlande, un étudiant en informatique, Linus Torvalds, découvre Minix, et décide de concevoir son propre système d'exploitation capable de fonctionner sur son 386. Linus envoie un message sur Internet invitant toute personne à récupérer son projet avec ses codes source et un compilateur, afin de le modifier et lui apporter des améliorations, avant de le redistribuer. Ce système est baptisé Linux
Bien que non certifié UNIX par l’Open Group, le noyau de Linux est bien un clone d’UNIX dont les sources sont libres; plus de 300 distributions s'appuyent aujourd'hui sur ce système, dont parmis les plus connues Red Hat, Mandriva, Ubuntu, Suse ou Turbo Linux en Asie . Ce nombre laisse évidemment songeur, et pour de nombreuse personnes, cette richesse est aussi un des talons d'Achille à l'adoption de ce système
A la différence de Linux, MAC OS X Léopard, est partiellement propriétaire, qui vient d’être certifié par l’Open Group comme un véritable UNIX
Aujourd’hui, Linux continue d’évoluer, financé par de grandes sociétés, comme IBM, Google, Red Hat ou Novell. Linux Torvald participe encore à certaines décisions importantes, comme les dates de publication de nouvelles versions de noyau
Très modulaire et facilement portable, il peut être installé sur de nombreuses architectures, allant du téléphone portable aux super ordinateurs. La plupart des super ordinateurs fonctionnent avec Linux (top500.org) sur des machines à plusieurs milliers de processeurs

Plus stable, il demande moins de redémarrage, donc moins d’administration et de maintenance
Le modèle de sécurité par défaut est très sûr, l’utilisateur ne peut mettre en péril le système ni y accéder de manière dérobée
La scalabilité et les performances sont importantes, assurant un rendement optimum de la plateforme matériel utilisée
La plupart des serveurs Internet fonctionnent sous Linux / Apache, ce qui challenge le système tant du point de vue de la charge que de la sécurité
L’installation de nouvelles versions demande rarement des mises à jours matériel
Peu de virus ou de spywares existent sur cette plateforme aujourd'hui
L’interface est standardisée depuis de nombreuses années, et se retrouve sur une grande variété de systèmes UNIX
UNIX, ou Linux, sont des environnement très utilisés dans le monde académique, mais aussi dans le monde industriel
UNIX est le second système le plus utilisé au monde derrière Windows, puisqu'on trouve plus de 30 millions d'utilisateurs de MAC OS X, qui est un UNIX
On m’a parlé du coût d’acquisition… Ce n’est pas un critère, car le TCO devrait aussi être comparé, de même que le support, ce qui difficile à réaliser de manière objective tant les intérêts sont concurrents
Inévitablement, on arrive à l’Open Source et la GPL…Il s’agit d’un modèle particulier présentant des avantages et des inconvénients, répondant de manières diverses aux différentes interrogations
Sur les systèmes UNIX tout élément est représenté sous forme de fichier. L'ensemble des fichiers est architecturé autour d'une unique arborescence dont la base, appelée racine, est notée /
La hiérarchie des fichiers sous Unix
L'arborescence du système est complexe, mais relativement bien ordonnée. Elle respecte généralement les règles ci-dessous
/ | Répertoire à partir duquel tous les répertoires sont repérés, qu'ils soient distants, locaux ou situés sur une autre partition |
/bin | Binaires de base du système d’exploitation. Contient aussi les commandes de bases utilisables à partir du shell (grep, mount, cp, etc.) |
/boot | Contient les informations nécessaires au démarrage de la machine ainsi que le kernel à charger |
/dev | Device files. Fichiers faisant le lien entre le système et les périphériques. Un fichier correspond à chaque périphérique |
/etc | La plupart des fichiers de configuration et d’initialisation |
/home | Contient les répertoires personnels des utilisateurs, par exemple /home/olivier est le répertoire personnel et privé de l'utilisateur olivier. C'est le seul endroit qui lui appartienne. Il est l’équivalent du C:\Documents and settings\ de windows XP. En général, on configure /home sur une autre partition à part ou sur un autre disque dur que le système pour récupérer plus facilement les données |
/lib | Libraries. Contient les principales bibliothèques partagées (équivalent aux DLL de Windows) |
/lost+found | Contient les fichiers perdus. C'est là que sont entreposés les résultats des scandisk quand ils ont lieux |
/mnt | les répertoires utilisés pour monter temporairement un système de fichiers. /mnt/floppy pour la disquette, /mnt/cdrom pour le cdrom ou /mnt/windows_c pour la partition C: de windows |
/opt | Optional. Composants optionnels du système, comme KDE ou Gnome, ou encore Lotus, etc |
/proc | répertoire virtuel dont les fichiers contiennent des infos sur l'état du système et des processus en cours d'exécution. Contrairement aux autres répertoires, /proc est sauvegardé en mémoire et non sur votre disque dur |
/root | répertoire personnel et privé de l'administrateur système root |
/sbin | system binaries. Contient les commandes de base nécessaires a l'administration système (fsck, mke2fs ...) |
/tmp | Dossier temporaire. C'est l'équivalent du C:\windows\Temp\ |
/usr | Dossier d’installation des programmes. C'est l'équivalent de C:\Programme Files\ Mais en plus ordonné. Veillez à allouer un espace important à cette partition |
/usr/X11R6 | Tout ce qui concerne X-Window. Organisation similaire à /usr |
/usr/bin | les exécutables |
/usr/doc | la documentation sur les applications installées |
/usr/etc | des fichiers de configuration, qui ne sont pas dans /etc/ |
/usr/games | Le répertoire d'installation de jeux |
/usr/include | les fichiers d'en-tête pour la programmation |
/usr/info | la doc au format GNU info |
/usr/lib | les bibliothèques partagées (DLL) non vitales |
/usr/local | une sous-hiérarchie qui contient des logiciels compilés sur place à partir des sources. Organisation similaire à /usr |
/usr/man | le manuel en ligne. Les fichiers sont compressés |
/usr/sbin | Des exécutables pour l'administration réseau et système |
/usr/share | Des fichiers de données système, comme des sons, des papiers peints, des icônes, etc. |
/usr/spool | Un lien symbolique vers /var/spool |
/usr/src | les sources de certains logiciels, principalement le noyau de Linux (/usr/src/linux) |
/var | Contient des données fréquemment réécrites, comme les logs |
/var/catman | les pages du manuel décompressées (cela se fait à la demande) |
/var/lib | Des bases de données, des fichiers de configuration... |
/var/local | complète /usr/local de la même façon que /var complète /usr |
/var/lock | Des fichiers qui servent à marquer l'utilisation de certaines ressources. Par exemple, quand un logiciel se sert du modem, il crée un fichier ici pour le signaler. |
/var/log | le journal (log) du système. Notamment /var/log/messages par lequel le noyau vous tient son monologue |
/var/run | principalement des infos sur les serveurs en fonctionnement |
/var/spool | les spools: tout ce qui est "de passage" en attendant d'être utilisé par un logiciel. Ca inclut entre autres le mail, les news, les files d'attente des imprimantes... |
/var/tmp | La corbeille de /var |
Types de fichiers
Les systèmes UNIX définissent différents types de fichiers :
· Les fichiers physiques, enregistrés sur le disque dur. Il s'agit du fichier au sens où on l'entend généralement
· Les répertoires sont des fichiers (noeuds) de l'arborescence pouvant contenir des fichiers ou d'autres répertoires. Un répertoire contient au moins un répertoire parent (noté ..), correspondant au répertoire de plus haut niveau, et un répertoire courant (noté .), c'est-à-dire lui-même
· Les liens sont des fichiers spéciaux permettant d'associer plusieurs noms (liens) à un seul et même fichier. Ce dispositif permet d'avoir plusieurs instances d'un même fichier en plusieurs endroits de l'arborescence sans nécessiter de copie, ce qui permet notamment d'assurer un maximum de cohérence et d'économiser de l'espace disque. On distingue deux types de liens :
o Les liens symboliques représentant des pointeurs virtuels (raccourcis) vers des fichiers réels. En cas de suppression du lien symbolique le fichier pointé n'est pas supprimé. Les liens symboliques sont créées à l'aide de la commande ln -s selon la syntaxe suivante :
ln -s nom_fichier_réel nom_lien_symbolique
o Les liens physiques (aussi appelées liens durs ou en anglais hardlinks) représentent un nom alternatif pour un fichier. Ainsi, lorsqu'un fichier possède deux liens physiques, la suppression de l'un ou l'autre de ces liens n'entraine pas la suppression du fichier. Plus exactement, tant qu'il subsiste au minimum un lien physique, le fichier n'est pas effacé. En contrepartie lorsque l'ensemble des liens physiques d'un même fichier est supprimé le fichier l'est aussi. Il faut noter toutefois qu'il n'est possible de créer des liens physiques qu'au sein d'un seul et même système de fichiers. Les liens physiques sont créées à l'aide de la commande ln (sans l'option -n) selon la syntaxe suivante :
ln nom_fichier_réel nom_lien_physique
· Les fichiers virtuels n'ayant pas de réelle existence physique car ils n'existent qu'en mémoire. Ces fichiers, situés notamment dans le répertoire /proc contiennent des informations sur le système (processeur, mémoire, disques durs, processus, etc.)
· Les fichiers de périphériques, situés dans le répertoire /dev/, correspondent aux périphériques du système. Cette notion peut être déroutant pour un nouvel utilisateur dans un premier temps
Notion de point de montage
Contrairement à Windows qui organise les disques ou les périphériques dans des lecteurs indépendants dans l'Explorer, les fichiers d'un système UNIX sont organisés dans une arborescence unique
Il est toutefois possible d'avoir plusieurs partitions grâce à un mécanisme appelé montage, permettant de raccorder une partition à un répertoire de l'arborescence principale. Ainsi le fait de monter une partition dans le répertoire /mnt/partition rendra l'ensemble des fichiers de la partition accessible à partir de ce répertoire, appelé point de montage
Lorsque les données sont accessibles à partir d'un point de montage, on dit que la partition ou le périphérique sont montés
Dans les systèmes Unix, le point de montage par défaut est /mnt ou plus rarement /media
Par exemple, une disquette sera généralement montée en /mnt/fd0 et un cdrom en /mnt/cdrom ou /media/cdrom. Le point de montage par défaut des périphériques est spécifié dans un fichier de configuration système : /etc/fstab
La commande Unix permettant de monter des répertoires est mount. La commande inverse, qui démonte, est umount
Montage et démontage sous Unix
La commande mount permet de relier une partition ou un périphérique à un répertoire, répertoire par lequel les données présentes sur la partition ou le périphérique sont accessibles
Pour monter un périphérique ou une partition avec la commande mount, il faut indiquer :
· le type du système de fichiers par l'option -t
· le fichier spécial représentant le périphérique ou la partition (généralement /dev/*)
· le répertoire de montage
Par exemple, la commande mount -t iso9660 /dev/cdrom /media/cdrom monte le périphérique /dev/cdrom sur /mnt/cdrom en indiquant que le système de fichier est ISO 9660
La commande mount -t vfat /dev/sda /mnt/cle monte la clé USB avec son système de fichier VFAT dans le dossier /mnt/cle
Certaines indications peuvent être omises lorsqu'elles sont spécifiées dans le fichier de configuration listant les points de montage par défaut (/etc/fstab sous Linux). On peut omettre le type de système de fichiers si la version de mount utilisée est assez « intelligente »
Lorsque le montage a réussi, une mise à jour est effectuée dans un fichier système recensant les montages en cours (/etc/mtab)
Démontage
Pour démonter une partition ou un périphérique, il faut utiliser la commande umount. Par exemple : umount /media/cdrom
Le démontage ne marche que si la partition n'est pas utilisée, à savoir :
· aucun fichier n'est en train d'être lu ou écrit sur la partition
· aucun processus n'a son répertoire de travail sur la partition
Toute entité (personne physique ou programme particulier) devant interagir avec un système UNIX est authentifiée sur cette machine par un utilisateur. Ceci permet d'identifier un acteur sur un système UNIX. Un utilisateur est reconnu par un nom unique et un numéro unique. La correspondance nom / numéro est stockée dans le fichier /etc/passwd

Tous les utilisateurs UNIX n'ont pas les mêmes droits sur la machine (ils ne peuvent pas tous faire la même chose), et ceci simplement pour des raisons de sécurité et d'administration. Par exemple, pour éviter tout problème sur Internet, l'utilisateur qui gère le serveur HTTP ne peut pas exécuter des commandes localement
Certains utilisateurs ne peuvent en effet pas s'authentifier sur la machine et accéder à un interpréteur de commandes. Cela ne veut toutefois pas dire qu'ils ne peuvent rien faire sur la machine : il leur est possible de lire ou écrire des fichiers mais cela nécessite que le super-utilisateur démarre un programme pour cet utilisateur. Ce mécanisme est généralement utilisé pour les démons : le super utilisateur démarre le démon et pour éviter que ce dernier puisse faire tout et n'importe quoi sur la machine, il est par exemple attribué à l'utilisateur bin
Sur tout système UNIX, il y a un super-utilisateur, généralement appelé root, qui a tous les pouvoirs. Il peut accéder librement à toutes les ressources de la machine, y compris à la place d'un autre utilisateur, c'est-à-dire sous son identité. En général, du moins sur les systèmes de production, seul l'administrateur système possède le mot de passe root. L'utilisateur root porte le numéro 0
Les autres utilisateurs (other)
Ici on parle d’utilisateurs non déclaré sur la machine, donc ne faisant pas partie du système. Les autres utilisateurs ne doivent pas avoir de droits criques sur le système, ni accéder à des informations sensibles
Créer un compte pour un nouvel utilisateur
useradd nom_utilisateur crée l'utilisateur le répertoire personnel /home/nom_utilisateur, portant par défaut le nom du compte et crée une nouvelle entrée dans les 2 fichiers fondamentaux /etc/passwd et /etc/group. Lors de la création d’un utilisateur, un groupe par défaut est créé qui porte le même nom que l’utilisateur, son groupe primaire
Pour attribuer un mot de passe
passwd nom_utilisateur assigne un mot de passe. Il faudra le saisir et le confirmer. Si l’on tape passwd sans plus d’indications, cela nous permettra de changer notre propre mot de passe
Pour supprimer un utilisateur
userdel [-r] nom_utilisateur permet de supprimer un utilisateur. L'option -r supprime aussi le répertoire personnel et les fichiers de l'utilisateur. La commande supprime toute trace de l'utilisateur dans le fichier de configuration : /etc/passwd y compris dans les groupes d'utilisateurs auquel il aurait fait partie
Un utilisateur UNIX appartient à un ou plusieurs groupes. Les groupes servent à rassembler des utilisateurs afin de leur attribuer des droits communs sur des mêmes fichiers et dossiers. Par exemple, sur un système doté d'une carte son, il y a souvent un groupe audio qui regroupe les utilisateurs autorisés à en faire usage. Les groupes sont définis dans le fichier /etc/group
Chaque utilisateur doit faire partie au moins d'un groupe, son groupe primaire. Celui-ci est défini au moment de la création du compte, et par défaut, l'utilisateur appartient à un nouveau groupe créé, portant son nom
Dans /etc/passwd chaque utilisateur possède un groupe par défaut, précisé par son identifiant gid dans ce fichier
L'appartenance au groupe primaire n'étant pas exclusive, tout utilisateur peut faire partie de plusieurs autres groupes, appelés ses groupes secondaires. Le rôle joué par le groupe primaire demeure prépondérant, comme nous le verrons dans le système des permissions des fichiers
Pour lister tous les groupes (primaire et secondaires) d'un utilisateur
groups nom_utilisateur
Pour créer un nouveau groupe
groupadd nom_groupe
Supprimer un groupe
groupdel nom_groupe le groupe est supprimé du fichier /etc/group
Pour ajouter un utilisateur à un groupe Il y'a plusieurs possibilités pour effectuer cette manipulation
On peut éditer le fichier /etc/group et d'ajouter une liste d'utilisateurs (séparés par des virgules) sur la ligne du groupe
Plusieurs commandes font aussi l'affaire
- adduser - utilisateur nom_group
- gpasswd -a utilisateur nom_groupe
Pour supprimer un utilisateur d'un groupe
gpasswd -d utilisateur nom_groupe, ou toujours l'édition de notre fichier /etc/group
Tout fichier UNIX possède un propriétaire et des droits donnés pour lui, pour son groupe et les autres utilisateurs
Au départ, c'est l'utilisateur qui a créé le fichier qui en est propriétaire, mais il possible de transférer cette appartenance à un autre utilisateur
Seul le propriétaire du fichier et le super utilisateur (root) peuvent changer l'appartenance de ce fichier et ses droits
Seul root peut prendre l’appartenance d’un fichier, mais un utilisateur ordinaire peut donner l’appartenance d’un de ses fichiers à un autre utilisateur
Un fichier UNIX appartient aussi à un groupe. Ceci donne pleinement son sens à la notion de groupe. On définit ainsi les actions du groupe sur ce fichier
Ce groupe est souvent le groupe d'appartenance du propriétaire, mais ce n'est pas obligatoire. Tout dépend en fait de ce qu'on veut faire
On peut imaginer un scénario de délégation d'administration : le super utilisateur (root) est propriétaire d'un fichier de configuration, mais autorise tous les utilisateurs du groupe admin (les administrateurs) à modifier ce fichier. Le fichier en question aura donc root comme propriétaire et appartiendra au groupe admin
Rappelons que les répertoires sous UNIX sont aussi des fichiers. Les droits sur les répertoires (mais aussi les périphériques, etc.) fonctionnent exactement de la même façon que sur des fichiers ordinaires
Droits d'accès à un fichier
À chaque fichier est associée une liste de permissions, qui déterminent ce que chaque utilisateur a le droit de faire du fichier
Les différents droits
Les droits sur un fichier s'attribuent sur trois « actions » différentes possibles : la lecture (r), l'écriture (w) et l'exécution (x). Pour les répertoires, x correspond à l'accès au répertoire
Sur un fichier donné, ces 3 flags doivent être définis pour son propriétaire, son groupe, mais aussi les autres utilisateurs (différents du propriétaire et n'appartenant pas au groupe)
Seuls root et le propriétaire d'un fichier peuvent changer ses permissions d'accès sans restriction particulière
Représentation des droits
Cet ensemble de 3 droits sur 3 entités se représente généralement de la façon suivante : on écrit côte à côte les droits r, w puis x respectivement pour le propriétaire (u), le groupe (g) et les autres utilisateurs (o). Les codes u, g et o sont utilisés par les commandes UNIX qui permettent d'attribuer les droits et l'appartenance des fichiers
L'affichage des droits est représenté par une chaîne de 9 caractères, précédée d'un caractère, représentant le type de fichier
Lorsqu'un flag est attribué à une entité, on écrit ce flag (r, w ou x), et lorsqu'il n'est pas attribué, on écrit un '-'
Exemple : rxwr-xr-- signifie que le propriétaire peut lire, écrire et exécuter le fichier, mais que les utilisateurs du groupe attribué au fichier ne peuvent que le lire et l'exécuter, et enfin que les autres utilisateurs ne peuvent que lire le fichier
Une autre manière de représenter ces droits est sous forme binaire grâce à une clef numérique fondée sur la correspondance entre un nombre décimal et son expression binaire. On l’appelle aussi notation octale :
Binaire | Droit | Octal |
000 | --- | 0 |
001 | --x | 1 |
010 | -w- | 2 |
011 | -wx | 3 |
100 | r-- | 4 |
101 | r-x | 5 |
110 | rw- | 6 |
111 | Rwx | 7 |
A l'expression binaire en trois caractères sont associés les 3 types de droits (r w x) ; il suffit donc de déclarer pour chacune des catégories d'utilisateur (user, group, others) un chiffre entre 0 et 7 auquel correspond une séquence de droits d'accès. Par exemple :
Octal | droit u | droit g | droit o |
777 | r w x | r w x | r w x |
605 | r w - | - - - | r - x |
644 | r w - | r - - | r - - |
666 | r w - | r w - | r w - |
Une astuce permet d'associer rapidement une valeur décimale à la séquence de droits souhaitée. Il suffit d'attribuer les valeurs suivantes pour chaque type de droit :
lecture (r) >> 400
écriture (w) >> 200
exécution (x) >> 100
et d'additionner ces valeurs selon qu'on veuille ou non attribuer le droit en correspondant.
propriétaire | groupe | autre |
lecture | écriture | exécution | lecture | écriture | exécution | lecture | écriture | exécution |
400 | 200 | 100 | 40 | 20 | 10 | 4 | 2 | 1 |
Ainsi, rwx « vaut » 7 (4+2+1), r-x « vaut » 5 (4+1) et r-- « vaut » 4. Les droits de rwxr-xr-- sont donc équivalent à 754
Une manière directe d'attribuer les droits est de les écrire sous cette forme et d'utiliser le code à 3 chiffres résultant avec chmod (voir ci-après)
Utilisation
Pour voir quels droits sont attribués à un fichier, il suffit de taper ls -l nom_du_fichier (ou ll qui est un raccourci fonctionnant sous certaines versions de Linux)
Ex. # ls -l publipostage.doc
-rwxr-xr-- jean compta 12345 Nov 15 09:19 publipostage.doc
La sortie signifie que le fichier publipostage.doc (de taille 12345) appartient à un utilisateur nommé jean, qu'on lui a attribué le groupe compta, et que les droits sont rwxr-xr--- soit autrement dit 784
On remarque qu'il y a en fait 10 caractères sur la zone de droits
Le premier - n'est pas un droit, c'est un caractère réservé pour indiquer le type de fichier (on aura par exemple un d à la place pour indiquer un répertoire) selon le tableau ci-dessous
Types de fichier
Le premier caractère que l’on rencontre lorsqu’on affiche un fichier indique s’il s’agit d’un fichier, d’un dossier ou autre, comme indiqué dans ce tableau dans la colonne symbole. Les autres colonnes indiquent simplement les valeurs possibles pour les droits comme expliqués jusqu’ici
Signification | Symbole | Propriétaire (u) | Groupe (g) | Autres (o) |
fichier régulier | - | rwx | rwx | rwx |
répertoire | d | rwx | rwx | rwx |
périphérique caractère | c | rwx | rwx | rwx |
périphérique bloc | b | rwx | rwx | rwx |
lien symbolique | l | rwx | rwx | rwx |
tube nommé | p | rwx | rwx | rwx |
socket locale | s | rwx | rwx | rwx |
Changements des droits et de propriétaire
De manière générale
· l'utilisateur qui crée un fichier en devient le propriétaire
· le groupe primaire auquel l'utilisateur appartient au moment de la création devient le groupe du fichier
· Le changement de droits s'effectue avec la commande chmod
· Le changement de propriétaire à l'aide de la commande chown
· Le changement de groupe, à l'aide de la commande chgrp
Note : On peut changer en une fois le propriétaire et le groupe avec chown et une syntaxe particulière
Remarques préalables
- Les droits accordés au propriétaire, au groupe et aux autres dépendent du processus qui a créé le fichier et du masque des droits
- D'autre part l'administrateur peut être amené à effectuer des changement de propriété (par exemple pour permettre un travail en groupe) et des changements de droits sur des ensembles de fichiers et de répertoires , les étendre ou les restreindre
- root n'est pas soumis à ces restrictions, il a le pouvoir absolu sur ... le système de fichiers. En contre-partie il peut être considéré comme responsable de tout dysfonctionnement !
Changer les permissions sur les fichiers
· Les droits d'accès peuvent être modifiés par le propriétaire des fichiers ou par root (ou équivalent, d'uid 0).
· La commande chmod (change mode) peut s'écrire de plusieurs façons équivalentes, sur le modèle : chmod droits fichiers
Le paramètre droits permet de calculer les nouveaux droits d'accès
· Ceux-ci peuvent s'obtenir de façon relative, par ajout (symbole +) ou retrait (-) par rapport aux droits existants, ou bien de façon absolue, en fixant les nouveaux droits qui remplacent les anciens (symbole =)
Ajout, retrait ou fixation des permissions
Pour chaque fichier, on désigne par :
· u, g et o les 3 catégories d'utilisateurs (user, group, other) et de plus par a (=all) tous les utilisateurs
· r,w,x les 3 attributs de chaque fichier, pour chaque catégorie d'utilisateur
· + - = l'action d'ajouter, de retirer ou de fixer un droit, qui s'applique à chaque catégorie séparément
· les changements, sur le modèle "à quelle(s) catégorie(s), quelle action, quel(s) droit(s)" sont alors notés symboliquement :
[u g o a] [+ - =] [r w x]
· par exemple chmod u+x fichier signifie "ajouter le droit d'exécution au propriétaire du fichier"
· on peut regrouper les catégories si on veut exercer la même action :
chmod ug+w fichier "ajouter le droit d'exécution au propriétaire et au groupe"
chmod go-rwx fichier "enlever tous droits d'accès à tous les utilisateurs, sauf au propriétaire"
Notation relative (aux droits existants)
· chmod [-R] <action-droits> fichiers
· L'option -R (récursif) permet de modifier les permissions de tous les sous-répertoires.
· exemple : chmod [-R] go-rwx /home/olivier enlève tous les permissions d'accès des fichiers du répertoire personnel de olivier (et des sous-rép.), à tous sauf au propriétaire, c'est-à-dire olivier
Notation absolue
· Pour chaque groupe, elle permet de fixer les nouveaux droits qui remplacent les anciens. Si une catégorie n'est pas présente, ses anciens droits s'appliquent.
· chmod u=rwx,g=rw,o=r fichiers remplace les permissions précédentes des fichiers, en les fixant à -rwxrw-r--
Attention : aucun espace dans la liste des droits, pas même autour des éventuelles virgules
· chmod u=rwx,g=r fichiers fixe les permissions à -rwxr--??? en ne changeant pas les permissions précédentes du groupe other
· chmod u=rwx,g=r,o= fichier fixe les permissions à -rwxr-----
Changer les droits s'effectue également simplement à partir du nombre à 3 chiffres calculé comme précédemment. Ainsi, pour attribuer les droits r-w-x (i.e. 754), il suffit d'exécuter :
chmod 754 nom_du_fichier
Changer le propriétaire
· chown [-R] nouvel_utilisateur fichiers
Commande réservée au propriétaire actuel des fichiers ou des répertoires (et à root)
· L'option -R (récursif) permet d'agir sur l'ensemble des sous-répertoires
Exemple : chown -R stage4 /home/stage1
Changer le groupe propriétaire
· chgrp [-R] nv-groupe fichiers
Ceci doit être effectué par root ou le propriétaire, à condition que celui-ci soit membre du nouveau groupe
Exemple : chgrp -R stage4 /home/stage1
Changer le propriétaire et le groupe propriétaire en même temps
· Changer les 2 en même temps
chown nv-user.nv-groupe fichiers
chown new-user.fichiers
Dans ce cas, en plus, le groupe propriétaire des fichiers est changé pour le groupe primaire du nouveau propriétaire.
Remarque importante
Le "super-utilisateur" root n'est pas soumis aux restrictions des permissions. Une petite expérience :
1. Vérifier que /etc/shadow est inaccessible même en lecture aux utilisateurs
2. Vérifier que ses permissions sont --------- ou 400 en octal, seul le propriétaire root peut lire
3. Root supprime ce droit de lecture : chmod u-r /etc/shadow
Vérifier /etc/shadow
4. Root peut le lire, le copier et le modifier, ce n'est bien sûr pas recommandé, mais root peut tout se permettre (raison de plus pour ne jamais se connecter root, sans nécessité !)
5. Mais bonne nouvelle, root peut donc retrouver de fichiers appartenant à des utilisateurs ayant perdu leurs droits d'accès !
Le masque de protection umask
Rappelons les règles simples de propriété qui s'appliquent à la création d'un fichier ou d'un répertoire :
· son propriétaire est l'utilisateur qui l'a créé
· son groupe est le groupe primaire de ce même utilisateur
Mais quelles sont les permissions attribuées par défaut à l'utilisateur propriétaire, au groupe propriétaire et à tous les autres ?
· Les permissions maximales accordées par un fichier sont 666 (-rw-rw-rw-)
· Les permissions maximales accordées par un répertoire sont 777 (-rwxrwxrwx)
On peut restreindre ces permissions lors de sa création. C'est le rôle de la commande umask de fixer les permissions masquées, autrement dit les droits non accordés aux fichiers et répertoires lors de leur création
Exemple de calcul de permissions effectives, affectées lors de la création d'un répertoire, par un utilisateur dont le masque de protection est 027
· 777 = 111 111 111 permissions maxi = rwx rwx rwx
- 027 = 000 010 111 masque de protection
· = 750 = 111 101 000 permissions effectives = rwx r-x ---
La commande umask
umask affiche le masque de l'utilisateur actif
Quelles sont les valeurs des masques par défaut de root et des autres utilisateurs ?
o umask -S affiche les permissions correspondantes au masque, sous forme symbolique
o umask masque fixe les permissions ultérieures de création des fichiers de l'utilisateur actif, conformément à masque, en notation octale
Attention ! le changement ne s'applique qu'à la présente session
- Pour la rendre permanente, on peut intervenir sur un fichier profile :
- Dans le fichier profil général /etc/profile, on peut modifier la règle habituelle :if [ $UID == 0 ] ; then umask 022 ; else umask 077 ; fi
- Pour agir au niveau des utilisateurs, ajouter la ligne
umask masque dans le fichier de profil personnel $HOME/.bash_profile
Le droit SUID
Sa présence permet à un fichier exécutable de s'exécuter sous l'identité et donc les droits de son propriétaire, à la place des droits de l'utilisateur actuel qui l'exécute.
Il s'agit d'un dispositif de
sécurité essentiel qui autorise un utilisateur quelconque (par rapport à la commande) à bénéficier de droits plus étendus que les siens (souvent ceux de root), pour exécuter la commande agir sur d'autres fichiers indispensables, juste le temps et sous le contrôle de l'exécution de la commande, SANS qu'il soit nécessaire d'attribuer ces droits en permanence sur les fichiers. Ce droit est noté symboliquement
s et se positionne à la place du propriétaire
u (mais sans écraser le droit x) Sa valeur octale est 4000
Exemple significatif
Examiner les droits du fichier exécutable /usr/bin/passwd, qui permet de (re)définir un mot de passe et le comparer à ceux du fichier /etc/shadow qui contient les mots de passe cryptés Observez :ll /etc/shadow -r-------- root root shadowll -l /usr/bin/passwd r-xr-x root bin passwd le droit
x est accordé à tous, chacun peut donc exécuter la commande passwd, mais personne ne posséde pas lui-même le droit d'écriture dans le fichier /etc/shadow qui doit le stocker Le positionnement du SUID permet d'agir en tant que root lors de la demande d'accès au fichier et comme root a tous les droits, il est alors possible de mettre à jour ce fichier des mots de passe
Manipulation
Comment connaitre les commandes comme
passwd, qui offre cette permission SUID ? Voici plusieurs façons cd /usr/bin
# grep filtre les lignes produites par ls en utilisant
# l'expression rationnelle ^...s
ls -l | grep "^...s"
# pour afficher tous les fichiers possédant le SUID
cd /
ls -lR | grep "^...s"
# recherche parmi les fichiers ordinaires ceux qui ont au moins le droit
s find / -type f -perm +4000
Pour un fichier exécutable, il fonctionne de la même façon que le SUID, mais transposé aux membres du groupe
Exemple
Examiner les droits symboliques de la commande d'impression
Si une imprimante a été installée, un répertoire lp a été créé dans var/spool/lpd. Or la commande lpr écrit dans ce répertoire. Comment un utilisateur quelconque peut-il alors y écrire le fichier d'impression ?
Positionné sur un répertoire, ce droit modifie le groupe propriétaire d'un fichier créé dans ce répertoire. Un fichier créé dans un tel répertoire, verra son groupe propriétaire modifié :
Ce ne sera plus le groupe primaire du propriétaire qui l'a créé (règle habituelle), mais à la place, le groupe propriétaire du répertoire lui-même.
Autrement dit, ce droit posé sur un répertoire, met en place un mécanisme d'héritage de groupe, de répertoire conteneur à fichiers contenus.
Notation symbolique: , mis à la place du x du groupe, valeur octale 2000 Le "sticky bit"
Ce droit spécial, traduit en "bit collant", a surtout un rôle important sur les répertoires.
Il réglemente le droit w sur le répertoire, en interdisant à un utilisateur quelconque de supprimer un fichier dont il n'est pas le propriétaire
>Ce droit noté symboliquement t occupe par convention la place du droit x sur la catégorie other de ce répertoire, mais bien entendu il ne supprime pas le droit d'accès x (s'il est accordé).
Justement, si ce droit x n'est pas accordé à la catégorie other, à la place de t c'est la lettre T qui apparaitra.
Sa valeur octale associée vaut 1000. Pour positionner ce droit :
chmod +t repd ... ... ..t rep
si le répertoire a le droit x pour tousd ... ... ..T rep
sinonSeules les commandes de bases sont indiquées, avec leurs options courantes. Pour chaque commande, il est possible d’obtenir une aide complète en ligne avec la commande man
- Équivalent MS-DOS/MS Windows : help
- Signification : Page de manuel
- Affiche les pages du manuel système
Chaque argument donné a man est généralement le nom d'un programme, d'un utilitaire ou d'une fonction - Exemples d'utilisation :
- man man
affiche les informations pour l'utilisation de man
Les commandes relatives aux fichiers
· Équivalent MS-DOS/MS Windows : dir
· Signification : list
· Permet de lister un répertoire
· Options les plus fréquentes :
- -l : Permet un affichage détaillé du répertoire (permissions d'accès, le nombre de liens physiques, le nom du propriétaire et du groupe, la taille en octets, et l'horodatage)
- -h : Associé avec -l affiche la taille des fichiers avec un suffixe correspondant à l'unité (K, M, G)
- -a : Permet l'affichage des fichiers et répertoires cachés (ceux qui commencent par un . (point)
- -r : inverse l'ordre du tri
- -t : trie par date de dernière modification
- -R : récursif
- Exemples d'utilisation :
- ls -a
affiche tous les fichiers et répertoires cachés du répertoire courant - ls /etc/
affiche le contenu du répertoire /etc/ - ls -l correspond au raccourci ll dans certaines distributions
- Équivalent MS-DOS/MS Windows : cd
- Signification : change directory
- Change le répertoire courant
- Exemples d'utilisation :
- cd ..
permet de remonter au répertoire parent - cd /usr/bin/
se place dans le répertoire /usr/bin/
- Équivalent MS-DOS/MS Windows : copy
- Signification : copy
- Permet de copier des fichiers ou des répertoires
- Options les plus fréquentes :
- -a : Archive. Copie en gardant les droits, dates, propriétaires, groupes, etc.
- -i : Demande une confirmation avant d'écraser
- -f : Si le fichier de destination existe et ne peut être ouvert alors le détruire et essayer à nouveau
- -r : Copie un répertoire et tout son contenu
- -u : Ne copie que les fichiers plus récents ou qui n'existent pas
- -v : permet de suivre les copies réalisées en temps réel
- Exemples d'utilisation :
- cp monFichier sousrep/
Copie monFichier dans sousrep - cp -r monRep/ ailleurs/
Copie le répertoire monRep vers ailleurs en créant le répertoire s'il n'existe pas - cp /dev/fd0 disk.img
Copie le contenu d'une disquette dans un fichier image - cp disk.img /dev/fd0
Copie un fichier image sur la disquette
mv
- Équivalent MS-DOS/MS Windows : move ou ren
- Signification : move
- Permet de déplacer ou renommer des fichiers et des répertoires
- Options les plus fréquentes :
- -f : Ecrase les fichiers de destination sans confirmation
- -i : Demande confirmation avant d'écraser
- -u : N'écrase pas le fichier de destination si celui-ci est plus récent
- Exemples d'utilisation :
- mv fichierx repy/
Déplace fichierx dans le répertoire repy - mv rep1 rep2
Renomme rep1 en rep2
mkdir
- Équivalent MS-DOS/MS Windows : mkdir ou md
- Signification : make directory
- Crée un répertoire vide
- Options les plus fréquentes :
- -p : Crée les répertoires parents s'ils n'existent pas
- Exemples d'utilisation :
- mkdir musique
Crée le répertoire musique - mkdir -p photos/2005/noel
Crée le répertoire noel et s'ils n'existent pas les répertoires 2005 et photos
- Équivalent MS-DOS/MS Windows : rmdir ou rd
- Signification : remove directory
- Supprime un répertoire vide. S'il est plein, utiliser la commande rm
- Options les plus fréquentes :
- -p : Supprime les répertoires parents s'ils deviennent vides
- Exemples d'utilisation :
- rmdir LeRep
Supprime le répertoire LeRep
rm
- Équivalent MS-DOS/MS Windows : del
- Signification : remove
- Permet d'effacer des fichiers
- Options les plus fréquentes :
- -f : Ne demande pas de confirmation avant d'effacer
- -r : Efface récursivement les fichiers ainsi que les répertoires
- Exemples d'utilisation :
- rm essai.2
- Suppression du fichier essai2
- rm CeFichier
Efface le fichier CeFichier - rm -rf /tmp/LeRep
Efface le répertoire /tmp/LeRep ainsi que tous ses fichiers sans demander de confirmation
pwd
- Équivalent MS-DOS/MS Windows : chdir
- Signification : print working directory
- Affiche le répertoire en cours
du
- Équivalent MS-DOS/MS Windows : dir
- Signification : directory usage
- Affiche l'espace disque utilisé par répertoires
- Options les plus fréquentes :
- -a : Afficher pour tous les fichiers et pas uniquement les répertoires.
- -c : Faire un total après avoir tout affiché.
- -h : Ajoute un suffixe correspondant à l'unité (K, M, G)
- -H : Idem que -h mais en puissance de 10
- Exemple d'utilisation :
- du -ch /home/CyberSDF
Affiche la taille des répertoires contenus dans /home/CyberSDF en utilisant un suffixe puis le total
- Signification : disk free
- Affiche la quantité d'espace disque utilisé par les systèmes de fichiers.
- Options les plus fréquentes :
- -a : Affiche tous les systèmes de fichiers, y compris ceux de 0 blocs (par exemple : proc, sysfs, usbfs et tmpfs)
- -i Montre les Inodes libres. Il peut très bien avoir de la place restante sur le disque dur, mais plus d'inodes libres, et le disque ne pourra plus être rempli
- -h : Ajoute aux valeur un M pour mébioctet (2^20 octets) pour que ce soit plus lisible.
- -H : Pareil que -h mais en mégaoctets (10^6 octets).
- -T : Affiche le type du système de fichier.
- Exemples d'utilisation :
- df -h
Affiche la quantité d'espace disque utilisé en mébioctets par les systèmes de fichiers. - df /home
Affiche la quantité d'espace disque utilisé par la partition /home (si elle existe) - df -T -h
Affichage le nom des partitions et leur point de montage
- Équivalent MS-DOS/MS Windows : fdisk
- Signification : infos disques
- Affiche les infos des disques
- Options les plus fréqentes :
- -l Informations détaillées des disques
- Exemples d'utilisation
- Équivalent MS-DOS/MS Windows : find
- Signification : find
- Permet de chercher des fichiers et éventuellement exécuter des commandes à ceux-ci
- Options les plus fréquentes :
- -name : Recherche d'un fichier par son nom
- -iname : Même chose que name mais insensible à la casse
- -type : Recherche de fichier d'un certain type
- -atime : Recherche par date de dernier accès
- -mtime : Recherche par date de dernière modification
- -link : Recherche du nombre de liens au fichier
- -user : Recherche de fichiers appartenant à l'utilisateur donné
- -group : Recherche de fichiers appartenant au groupe donné
- Action les plus fréquentes :
- -exec : Exécute la commande donnée aux fichier trouvés
- -ok : Même chose que exec mais demande une confirmation
- -ls : exécute la commande ls à chaque fichier trouvé
- Opérateurs les plus fréquents :
- -a : Opérateur ET
- -o : Opérateur OU
- ! ou -not : Opérateur NOT
- Exemples d'utilisation :
simple
Placez-vous dans le dossier à rechercher et faites :
- find monfichier*
Recherche un fichier commençant par "monfichier" - find *monfichier*.ogg
Recherche un fichier contenant "monfichier" et ayant pour extention ".ogg"
- find /home/ -name monfichier
Recherche le fichier monfichier dans tous les répertoires de /home/ - find . -name ".c"
Recherche tous les fichiers ayant une extension .c - find . -mtime -5
Recherche les fichiers du répertoire courant qui ont été modifiés entre maintenant et il y a 5 jours - find /home/ -mtime -1 \! -type d
Recherche uniquement les fichiers (! -type d signifie n'était pas un répertoire) ayant été modifiés ces dernières 24h - find . ! -user root
Affiche tous les fichiers n'appartenant pas à l'utilisateur root - find . \( -name '*.wmv' -o -name '*.wma' \) -exec rm {} \;
Recherche et supprime tous les fichiers WMA et WMV trouvés
- Équivalent MS-DOS/MS Windows : find
- Signification : global regular expression print
- Recherche une chaîne de caractères dans des fichiers (ou depuis la console si aucune fichier n'est indiqué) ; Souvent utilisé en filtre avec d'autres commandes
- Options les plus fréquentes :
- -c : affiche le nombre de lignes contenant l'expression
- -l : n'affiche que le nom des fichiers contenant l'expression
- -n : Retourne les lignes préfixées par leur numéro
- -i : contrairement à la plupart des commandes, l'option -i ne signifie pas interactif mais ignore-case, c'est à dire que grep ne fera pas de différence entre minuscules et majuscules
- -r : Recherche récursivement dans tous les sous-répertoires ; On peu utiliser la commande rgrep
- -G : Recherche en utilisant une expression relationnelle basique (option par défaut)
- -E : Recherche en utilisant une expression relationnelle étendue ; On peu utiliser la commande egrep
- -F : Recherche en utilisant une chaîne fixe ; On peu utiliser la commande fgrep
- -v : inverse la recherche, c'est à dire affiche les lignes ne contenant pas l'expression
- Exemples d'utilisation :
- grep -n montexte monfichier
Retourne toutes les lignes ainsi que leur numéro ou montexte apparait dans monfichier
- Équivalent MS-DOS/MS Windows : type
- Signification : concatenate
- La commande cat permet de visualiser ou de concaténer des fichiers. Elle est aussi très utilisée pour visualiser fichiers systèmes afin d’en extraire des informations
- Options les plus fréquentes :
- -b numéroter les lignes non-blanches en sortie pour en faciliter la visualisation
- -n : numéroter les lignes en sortie pour en faciliter la visualisation
- -v : Affiche les caractères de contôles
- Exemple d'utilisation :
- cat -n monFichier
Affiche monFichier en numérotant les lignes à partir de 1
more
- Équivalent MS-DOS/MS Windows : type
- Signification : more
- Affiche un fichier page par page
- Options les plus fréquentes :
- -s : Regroupe les lignes vides consécutives en une seule
- -f : Ne coupe pas les lignes longues
- Exemple d'utilisation :
- more -sf monFichier
Affiche monFichier page par page en concaténant les lignes vides sans compter les lignes longues.
- Équivalent MS-DOS/MS Windows : type
- Signification : less
- Affiche un fichier page par page
- Options les plus fréquentes :
- -e ou -E : Quitte automatiquement la deuxième fois que la fin du fichier est atteinte, ou dès la première fois avec -E.
- -F : Quitte automatiquement si le fichier tient sur le terminal.
- -m ou -M : Prompt long a la more.
- -r ou -R : Autorise les caractères spéciaux.
- -x : Règle la taille des tabulations.
- -~ : ne comble pas les lignes vides par des ~
- Exemple d'utilisation :
- less -Emr~ monFichier
Affiche monFichier page par page avec un prompt long (affichage du pourcentage du fichier parcouru) en affichant les caractères spéciaux sans combler les lignes vides par des ~
ln
- Signification : link
- Crée un lien (physique ou symbolique)
- Options les plus fréquentes :
- -s : Crée un lien symbolique (similaire au raccourci du monde Windows)
- -f : Force l'écrasement du fichier de destination s'il existe
- -d : Crée un lien sur un répertoire (uniquement en mode sudo ou root)
- Exemples d'utilisation :
- ln -s Rep1/Rep2/Monfichier MonLien
Crée un lien symbolique MonLien de Rep1/Rep2/Monfichier dans le répertoire où on se trouve - ln Monfichier unRep/AutreNom
Crée un lien physique AutreNom de Monfichier dans le répertoire unRep
- Notes :
- Vérifiez que vous vous trouvez bien dans le dossier dans lequel vous souhaitez créer le lien avant de faire cette commande.
mount
- Signification : mount
- Monter un système de fichiers. Ce montage est parfois effectué automatiquement grâce au fichier de configuration "/etc/fstab". Ce fichier contient tout ce que linux doit monter lors de son démarrage, mount n'est accessible que par root
- Options les plus fréquentes :
- -a : Monter tous les systèmes de fichier déclarés dans le fichier /etc/fstab
- -t : Précise le type de fichier à monter
- -o : Ajouter une option. Options adjointe à -o les plus fréquentes :
- auto : Permet d'être monté par -a
- async : Les entrées/sorties sur le système de fichiers seront asynchrones
- defaults : Utilise les options rw, suid, dev, exec, auto, nouser, et async.
- dev : Interprète les fichiers spéciaux de périphériques du système présent dans /dev/
- exec : Permet l'exécution de fichiers binaires du système monté
- noauto : Empêche d'être monté avec -a
- nodev : Ne pas interpréter les fichiers spéciaux de périphériques du système
- noexec : Empêche l'exécution de fichiers binaires du système monté
- nouser : Ne pas autoriser d'autres utilisateurs que root (ou sudo) à monter le système de fichiers (comportement par défaut)
- ro : Monte le système en lecture seule
- rw : Monte le système en lecture et écriture
- suid : Prend en compte les bits SetUID ou SetGID du système monté
- user : Permet aux utilisateurs ordinaires à monter et démonter le système de fichiers (implique noexec, nosuid, et nodev sauf si surchargées)
- Exemples d'utilisation :
- mount
Liste tous les systèmes de fichiers actuellement montés - mount -a
Monte tous les systèmes de fichiers déclarés dans le fichier /etc/fstab - mount /mnt/maPartion
Monte le système de fichiers ad-hoc déclarés dans le fichier /etc/fstab - mount -t iso9660 monFichier.iso /mnt/monIso -o loop
Monte dans un périphérique boucle (loop) le fichier iso monFichier.iso dans le répertoire /mnt/monIso - mount -t vfat -o defaults,rw,user,umask=022,uid=1000 /dev/sda1 /mnt/Mondisk/
Monte un disque dur USB (/dev/sda1) formaté en FAT32 (-t vfat) en lecture écriture (rw) dans le répertoire /mnt/Mondisk/ ; tous les utilisateurs peuvent le démonter (user), les droits d'exécution (uid=1000) sont fixés à l'utilisateur ayant l'UID 1000 (sous Ubuntu, l'uid 1000 correspond au premier utilisateur créé) et la création d'un fichier s'effectuera avec les permissions 644 (rw-r---r–) et pour un répertoire 755 (rwxr-xr-x) (umask 022) - mount /dev/fd0 /floppy
Monte un lecteur de disquette
umount
- Signification : unmout
- Démonte un système de fichiers
- Options les plus fréquentes :
- -a : Démonte tous les systèmes de fichiers présents dans /etc/mtab
- -d : Si le système monté est un périphérique loop, libérer le périphérique.
- -f : Forcer le démontage
- -r : Si impossible de démonter, monter en lecture seule
- Exemples d'utilisation :
- umount /mnt/Mondisk
Démonte le système de fichiers monté dans /mnt/Mondisk - umount -f /dev/cdrom
Force le démontage du périphérique CDROM - umount -d /mnt/monIso
Démonte et libère le périphérique loop - umount -a
Démonte tous les systèmes de fichiers montés (à l'exception de /proc) ; ne sert que lorsque l'on veut redémarrer ou éteindre sa machine manuellement et proprement
sudo
- Équivalent MS-DOS/MS Windows : runas
- Signification : super user - do
- Permet d'exécuter des commandes en tant qu'un autre utilisateur, donc avec d'autres privilèges que les siens.
- Options les plus fréquentes :
- -s : Importe les variables d'environnement du shell
- -k : Lorsque l'on utilise sudo, il garde en mémoire le mot de passe ; cette option déconnecte l'utilisateur et forcera à redemander un mot de passe si sudo est exécuté avant le timeout défini.
- Exemples d'utilisation :
- $ sudo reboot
Lance la commande reboot avec les droits de l'utilisateur root
- Ressources :
- Signification : password
- Permet de modifier le mot de passe d'un utilisateur
- Options les plus fréquentes :
- -S : Affiche l'état d’un compte (nom du compte, bloqué (L), si l'utilisateur n’a pas de mot de passe (NP) ou a un mot de passe utilisable (P), date de dernière modification du mot de passe, durée minimum avant modification, durée maximum de validité, durée d’avertissement, durée d’inactivité autorisée)
- Exemple d'utilisation :
- passwd
Demande à changer le mot de passe
- Signification : groups
- Affiche les groupes auxquels appartient un utilisateur
- Exemples d'utilisation :
- groups
Affiche la liste des groupes auxquels appartient l'utilisateur ayant tapé la commande. - groups CyberSDF
Affiche tous les groupes auxquels appartient l'utilisateur CyberSDF.
- Signification : add user
- Ajoute un utilisateur, ou un groupe, au système.
- Options les plus fréquentes :
- –disabled-login : Empêche l'utilisateur de se connecter.
- –disabled-password : Un peu comme </del>disabled-login sauf qu'il est possible de se connecter via une clé RSA SSH, pratique pour créer un utilisateur qui ne se connectera que via SSH.
- –system : Crée un utilisateur système.
- –group : Avec –system crée un groupe avec le même ID que l'utilisateur système, sans un groupe avec le nom donné sera créé
- –home : Permet de fixer le répertoire HOME de l'utilisateur.
- –no-create-home : Ne crée pas de répertoire HOME.
- Exemples d'utilisation :
- adduser CyberSDF
Crée l'utilisateur CyberSDF - adduser --disabled-password –no-create-home CyberSSH
Crée un utilisateur CyberSSH sans mot de passe qui ne pourra pas se connecter directement sur la machine et sans lui créer de répertoire home. - adduser --disabled-password –home /home/CyberSDF CyberSSH
Même chose qu'au dessus sauf qu'on lui donne le même répertoire HOME qu'à l'utilisateur CyberSDF créé en premier.
- Signification : delete user
- Supprime un utilisateur du système.
- Option la plus fréquente :
- –system : Ne supprime l'utilisateur que si c'est un utilisateur système.
- –remove-home : Supprime l'utilisateur plus son dossier dans le home.
- Exemple d'utilisation :
- deluser CyberSSH
Supprime l'utilisateur CyberSSH - deluser –remove-home bob
Supprime l'utilisateur bob ainsi que le dossier /home/bob
- Signification : user modification
- Modifie le groupe d'appartenance d'un utilisateur
- Options les plus fréquentes :
- -G, –groups GROUPE1[,GROUPE2,...[,GROUPEN]]] : Ajouter l'utilisateur aux groupes précédents. Si l’utilisateur fait actuellement partie d’un groupe qui n’est pas listé, l’utilisateur sera supprimé du groupe. Ce comportement peut être changé avec l’option -a, qui permet d’ajouter l’utilisateur à une liste de groupes supplémentaires
- usermod -aG toto machin
Ajoute l'utilisateur machin au groupe toto sans supprimer machin de son groupe originel
sudo usermod -d /home/nouveau_login -m -l nouveau_login ancien_login
Permet de renommer le dossier utilisateur et de changer son nom. Pratique lorsque le pc change de mains
Les commandes relatives aux droits et propriétés
chmod
- Équivalent MS-DOS/MS Windows : cacls
- Signification : change mode
- Modifie les permissions d'accès à un fichier ou à un répertoire.
Type d'autorisations (une autorisation d'exécution sur un répertoire autorise son ouverture) : - + : Ajoute une permission
- - : Enlève une permission
- = : Autorise uniquement l'autorisation indiquée
- r : Lecture ; Valeur octale 4
- w : Ecriture ; Valeur octale 2
- x : Execution ; Valeur octale 1
- s : Utilise les droits du propriétaire ou du groupe lors de l'exécution
- u : Propriétaire du fichier
- g : Groupe propriétaire du fichier
- o : Tous les autres utilisateurs
- Options les plus fréquentes :
- -R : Récursif, modifie les autorisation d'un répertoire et tout ce qu'il contient
- -c : Ne montrer que les fichiers ayant été réellement modifiés
- -f : Ne pas afficher les messages d'erreur
- Exemples d'utilisation :
- chmod ugo+x monRep
Ajoute l'exécution (ouverture) du répertoire monRep à tous (propriétaire, groupe, autres) - chmod go-wx monRep
Supprime l'autorisation de lecture et d'écriture de monRep au groupe et aux autres - chmod u=rw,go=r MonFichier
Fixe l'autorisation de lecture et d'écriture au propriétaire de MonFichier et une autorisation de lecture au groupe et aux autres. - chmod 644 MonFichier
Exactement la même chose que ci-dessus mais en utilisant les valeurs octales (Nota : 6 = 4+2 = lecture + écriture) - chmod u=rw,g=r,o= MonFichier
Fixe l'autorisation d'ouverture et de lecture de MonFichier au propriétaire, uniquement la lecture au groupe et interdit tout accès aux autres. - chmod 640 MonFichier
Exactement la même chose que ci-dessus mais en utilisant les valeurs octales
- Équivalent MS-DOS/MS Windows : cacls
- Signification : change owner
- Change le propriétaire et le groupe propriétaire d'un fichier
- Options les plus fréquentes :
- -R : Modifie récursivement un répertoire et tout ce qu'il contient
- Exemples d'utilisation :
- chown autreUtilisateur MonFichier
Change le propriétaire de MonFichier en autreUtilisateur - chown -R lui:nous monRep
Change le propriétaire en lui et le groupe propriétaire en nous du répertoire monRep ainsi que tout ce qu'il contient
- Signification : change groupe
- Change le groupe propriétaire d'un fichier
- Options les plus fréquentes :
- -R : Change récursivement un répertoire et tout ce qu'il contient
- -h : Change le groupe propriétaire d'un lien symbolique et seulement lui (ne touche pas à la destination du lien)
- -L : Si fournie avec R , change le groupe propriétaire d'un répertoire et des fichiers qu'il contient s'il est pointé par un lien symbolique rencontré lors de l'exécution
- Exemples d'utilisation :
- chgrp unGroupe MonFichier
Change le groupe propriétaire du fichier MonFichier en unGroupe - chgrp -R unGroupe monRep
Change le groupe propriétaire du répertoire monRep ainsi que tout ce qu'il contient en unGroupe
Les commandes relatives au système
- Signification : efface
- Permet d'effacer l'écran
- Exemple d'utilisation :clear
uname
- Signification : unix name
- Affiche des informations sur le système.
- Options les plus fréquentes :
- -s : Affiche le nom du noyau.
- -n : Affiche le nom de la machine (hostname).
- -r : Affiche la révision du noyau
- -v : Affiche la version du noyau
- -m : Affiche le type de processeur de la machine (i386, i686, etc.)
- -o : Affiche le nom du système d'exploitation
- -a : Afficher les informations en utilisant les options -snrvmo
- Exemple d'utilisation :uname -a
Affiche tout
who
- Signification : qui est connecté sur le système?
- Permet de voir les utilisateurs connectés
- Options les plus fréquentes :
- -a Indique un maximum d'information
logname
- Signification : Nom de login
- Permet de savoir sous quel utilisateur nous somme connecté
whoami
- Signification : Qui suis-je ?
- Permet de savoir sous quel uid. Cela donne aussi les permissions effectives si nous avons fait un su -
uptime
- Signification : uptime
- Indique depuis quand le système fonctionne.
- Exemples d'utilisation :
- uptime
Affiche l'heure actuelle, la durée depuis laquelle le système fonctionne, le nombre d'utilisateurs actuellement connectés, et la charge système moyenne
- Signification : mémoire libre
- Affiche la mémoire disponible / utilisée du système
- Options les plus fréquentes :
- -b : Affiche la mémoire en bytes
- -k : Affiche la mémoire en kilo octet
- -m : Affiche la mémoire en méga octet
- -g : Affiche la mémoire en giga octet
- -s : Spécifie le délai de réaffichage de la mémoire
- -t : Affiche la ligne des totaux
- Exemples d'utilisation :
- free -m -s 5
Affiche la mémoire du système en méga octet toutes les 5 secondes
- Équivalent MS-DOS/MS Windows : tasklist
- Signification : processes snapshot
- Affiche les processus en cours
- Options les plus fréquentes :
- -u : Affiche les processus de l'utilisateur qui exécute la commande
- -au : Affiche les processus de tous les utilisateurs
- -aux : Affiche l'intégralité des processus du système. Équivalent à ps -A
- -faux : Affiche tous les processus du système en les regroupant par enchaînement d'exécution.
- Exemples d'utilisation :
- ps -u
Tous les processus de l'utilisateur courant - ps -aux
Tous les processus en cours
- Équivalent MS-DOS/MS Windows : taskkill
- Signification : kill / kill all
- Permet d'envoyer un signal à un processus ; kill ne comprend que les PID (Process Identifier, numéro d'ordre du processus), killall quant à lui comprend le nom du processus
- Options les plus fréquentes :
- -s : Indique quel signal s à envoyer au processus ; Le signal peut être identifié soit par son nom (exemple : SIGTERM) soit par son numéro (exemple : 9) ; Cette option est optionnelle
- -l : Affiche la liste des signaux connus
- Les signaux les plus courants sont :
HUP signal 1 : signal de fin d’exécution ou le processus doit relire son fichier de configuration.
TERM signal 15 : Le signal Terminate indique à un processus qu’il doit s’arrêter.
KILL signal 9 : Le signal Kill indique au système qu’il doit arrêter un processus qui ne répond plus - Exemples d'utilisation :
- kill -15 14774 : Envoie le signal 15, ou TERM, au processus ayant le numéro 14774 ce qui a pour effet de terminer proprement le processus.
- kill -9 7804 : Envoie le signal 9, ou KILL, au processus ayant le numéro 7804 ce qui a pour effet de tuer le processus.
- killall -TERM firefox-bin : Envoie le signal TERM, ou 15, au processus firefox-bin ce qui a pour effet de le fermer
lspci
- Signification : list pci
- Liste tous les périphériques PCI
- Option la plus fréquente :
- -v : Affiche des informations plus détaillées
- Exemples d'utilisation :
- Signification : list usb
- Liste tous les périphériques USB
- Option la plus fréquente :
- -v : Affiche des informations plus détaillées
- Exemples d'utilisation :
shutdown
- Signification : Eteindre
- Permet d'arèter ou redémarrer un système
- Option les plus fréquentes :
- -r Arrête les différents processus et redémarre le système
- -h Arrête les différents processus et éteint le système
reboot
- Signification : Redémarre
- Permet de redémarrer la machine. N'existe pas sur tous les systèmes Linux mais est équivalent au shutdown -r
startx
- Signification : Lance X
- Permet de lancer l'interface graphique depuis une ligne de commande en init3
tail
· Affiche la fin d'un fichier, très utilie pour surveiller les logs systèmes
- Option les plus fréquentes :
- -n : affiche les xy dernières lignes du fichier
- -f : met à jour la fin du fichier dynamiquement
· Exemple:
o tail –f –n -50 /var/log/messages affiche les 50 dernières lignes du fichier système message et se met à jour continuellement
Les commandes d'archivage et de compression
tar
- Signification : archiver
- Permet de créer ou décompacter une archive
· Note 1: Les options s'écrivent sans - : on écrit par exemple tar cf et non tar -cf.
· Note2 : L'ordre des arguments est cible puis source. Une inversion de cet ordre peut provoquer l'écrasement des données sources
· Option les plus fréquentes :
- c : création d'une archive.
- t : liste le contenu d'une archive.
- x : extraction d'une archive.
- v : la commande affiche au fur et à mesure tout ce qu'elle fait
- z : A utiliser s’il s’agit en plus d’un fichier compressé gzip que l’on souhaite décompresser en même temps
- f : précise le nom du fichier cible, doit être la dernière option
- Exemples
- tar cf tp.tar tp : le répertoire tp est archivé en tp.tar
- tar tvf tp.tar : liste le contenu de l'archive tp.tar
- tar xvf tp.tar : extrait l'archive tp.tar, c'est à dire recrée le répertoire tp, en indiquant les éventuelles messages
Les commandes réseaux
ifconfig
- Équivalent MS-DOS/MS Windows : ifconfig
- Signification : interface configuration. Liste et permet de modifier la configuration des interfaces réseaux
ifup
- Signification : Force le montage de la carte réseau
- Exemple : ifup eth3
Dans Ubuntu, si la machine virtuelle est recopiée, elle aura une autre MAC ADRESSS, et Ubuntu ne pourra redémarrer la carte réseau. Il sera nécessaire de la réidentifier avec la commande ifconfig –a, et modifier ensuite le fichier /etc/network/interfaces pour refléter son nouveau nom. Valable aussi pour Debian
ping
- Signification : Test de transmission entre deux hosts
- Exemples
telnet
- Signification : Connexion sur un terminal distant
- Note: Ne jamais utiliser cette commande, car le flux n’est pas crypté, mais utiliser plutôt ssh
ssh
- Signification : Connexion sur un terminal distant sécurisée
- Exemple : ssh 10.3.19.2 –l autre_utilisateur pour se connecter à la machine 10.3.19.2 avec un autre utilisateur que celui utilisé sur la session locale
ftp
- Signification: Transfert non sécurisé de fichiers, préférer la commande suivante sftp. La commande ouvre un environnement distant qui offre les commandes les plus courantes suivantes
· Option les plus fréquentes :
o ascii : transfert de fichiers ASCII (texte)
o binary : transfert de fichiers binaires.
o cd : changement de répertoire sur la machine distante.
o get : transfert de un fichier depuis la machine distante.
Exemple : get tp1.f
o lcd : changement de répertoire sur la machine locale.
o ls : liste les fichiers du répertoire courant de la machine distante.
o mget : transfert de plusieurs fichiers depuis la machine distante
Exemple : mget *.f
o mput : transfert de plusieurs fichiers vers la machine distante
Exemple : mput licence.*
o put : transfert de un fichier vers la machine distante.
Exemple : put licence.tex
o pwd : affiche le répertoire courant de la machine distante
o quit : quitte ftp
sftp
· Signification: Transfert sécurisé de fichiers. On retrouve les mêmes options de commandes que dans ftp ci-dessus
scp
· Signification : Copie sécurisé de fichiers entre hosts
· Option les plus fréquentes :
o -p : le fichier cible conserve les permissions et la date de dernière modification du fichier source (au lieu de la date courante).
o note: nom est votre nom de login sur la machine distante. Il n'y a pas besoin de l'utiliser si c'est le même sur la machine locale et la machine distante.
o Exemples
- scp -r philemon/ borgeaud@10.3.19.2:mnt/externe pour copier le dossier philemon et tous ses sous-dossiers depuis la machine locale sur la machine 10.3.19.2 avec l'utilisateur borgeaud dans le dossier /mnt/externe, qui est un disque dur monté en NTFS lecture / écriture
netstat
· Signification : Statistiques de la couche réseau de Linux
· Option les plus fréquentes :
o –p : Montre le PID et le nom du programme assigné à chaque programme
o –a : Montre tous les sockets, en écoute ou non
o –n : Montre les adresses sans résoudre les ports ou les noms d’utilisateurs. Quelquefois trop verbeux, utiliser plutôt netstat -pa
· Exemple
o netstat –pan : pour voir la liste des process et des ports en écoute
o netstat –pa : idem en moins verbeux
o netstat –pa : idem en moins verbeux
o netstat -pan | grep bp : Affiche la liste des processus et des ports en écoute, mais filtre une entrée contenant la string bp
Cet éditeur très riche offre ne nombreuses commandes à découvrir dans son manuel. Il existe sur TOUS les UNIX
Taper ctrl-c pour passer en mode commande et Taper i pour passer en mode d'insertion
Sauvegarde du fichier
:q sortie de l'éditeur
:q! sortie de l'éditeur sans enregistrer les modifications
:w écriture des modifications dans le fichier sans sortir de l'éditeur
:wq écriture des modifications dans le fichier avec sortie de l'éditeur
Détaillons quelques exemples de commandes afin de pouvoir gérer notre système
ps
La commande ps permet de lister tous les processus en cours d’exécution sur un système
- Option les plus fréquentes :
o -e liste tous les processus
o -f Liste avec détails
o -www Montre l’intégralité de la commande, même si elle dépasse 80 caractères
o -l Rajoute les colonnes NI and SZ. NI montre la valeur nice, qui détermine la priorité du processus. Plus la valeur est élevée, plus la priorité est basse. Sur les systèmes Linux, la valeur par défaut est 0
o SZ montre la valeur size, soit la taille du processus en mémoire. L’unité utilisée est le nombre de pages, et une page sous Linux vaut 4,096 bytes
Champ | Description |
UID | Propriétaire du processus, soit généralement celui qui l’a lancé. Par exemple, Apache tourne sous l’utilisateur wwwrun |
PID | L’ID du processus, identificateur unique assigné à chaque processus |
PPID | L’ID parent du processus exécuté, celui dont il dépend |
C | Ce champ est caduc |
STIME | L’heure de départ du processus courant |
TTY | Le terminal utilisant le processus (un deamon aura ?, car il n’est pas lancé depuis un terminal) |
TIME | Le temps CPU accumul par le processus courant. Plus il est élevé, plus le processus est consommateur |
CMD | La commande qui a lancé le processus |
Exemple
ps –efwww
Association avec less
less permet d’afficher en formatant la sortie par rapport au nombre de lignes du terminal
Pour avancer d’une page, on tape sur la barre <espace>, pour remonter, on presse sur b (back). Pour quitter, on tape q
Exemple
ps –ef | less
Association avec grep
Grep est une fonction de recherche, et la commande est souvent utilisée en association avec ps pour filtrer le nom d’un processus particulier
On utilise un pipe pour rediriger la sortie de la commande ps sur le filtre, auquel on donne les arguments souhaités
Exemple
Ps –ef | wwwrun
Dans ce cas, seul les processus avec cet argument seront affichés, en l’occurrence ici on listera les processus avec le string wwwrun, qui représente l’utilisateur système utilisé pour lancer Apache
ps -ef | grep vmx
Dans ce cas, on voit les process tournant sous Vmware Serveur avec le dossier des machines virtuelles utilisées
top
top permet de visualiser en temps réel l’activité du processeur. Il affiche la liste des tâches les plus intensives, et permet de manipuler les processus de manière interactif. Il peut trier les processus par utilisation cpu, utilisation mémoire ou uptime
Détail des champs
Uptime | Cette première ligne affiche l'heure, la durée depuis laquelle le système fonctionne, le nombre d'utilisateurs connectés, et les trois charges moyennes du système. Ces trois moyennes indiquent le nombre moyen de processus ayant fonctionné durant les 1, 5 et 15 dernières minutes. Cette ligne est exactement celle de la sortie de w(1) ou uptime(1). La ligne d'uptime peut être mise à jour par la commande 1 dans top |
processes | (ou tasks) La ligne 2 représente le nombre de processus en cours depuis le dernier rafraîchissement. Elle est constituée de plusieurs champs: nombre de tâches en cours, en suspens, arrêtées ou zombies (ce dernier terme désigne un processus qui a été tué mais qui n'a pas abandonné la table des processus parce que le processus-parent n'a pas encore exécuté un wait(2); les processus zombies sont parfois affichés par la commande ps(1)). Les processus et les états montrés peuvent être rafraîchis par la commande interactive t |
CPU states | Indique, en pourcentage, le temps CPU utilisé en mode utilisateur (user), mode système (system), redéfinition des priorités (nice) et, arrêts (idle). Les processus dont le degré de douceur a été redéfini sont les seuls à avoir des valeurs négatives |
Mem | Donne les statistiques sur l'utilisation de la mémoire: la mémoire totale disponible, la mémoire libre, la mémoire utilisée, la mémoire partagée et la mémoire utilisée par les tampons. L'affichage de ces informations peut être rafraîchi par la commande intéractive m |
Swap | Donne les statistiques sur l'espace de swap: l'espace total, celui disponible et celui utilisé. Swap et Mem constituent le résultat de la commande free(1) |
PID | IDentificateur du processus associé à chaque tâche |
PPID | IDentificateur du processus-parent de chaque tâche |
UID | ID d'utilisateur (le propriétaire de la tâche) |
USER | Désigne le nom d'utilisateur du propriétaire de la tâche |
PRI | Définit la priorité de la tâche |
NI | Représente la valeur de la douceur d'une tâche |
SIZE | Taille du code d'une tâche, ajoutée à l'espace de pile, (unités: kilo-octet) |
TSIZE | Représente la taille du code d'une tâche. Ceci donne des valeurs spéciales pour les processus du noyau; non-fonctionnel pour les processus ELF; Format de binaires sous SVr4 (System V, version 4) |
DSIZE | Est la taille des données et de la pile. Ne fonctionne pas pour les processus ELF |
TRS | Indique la taille de texte restant |
SWAP | Représente la taille de la partie (d'une tâche) déplacée sur l'espace de swap |
D | Indique la taille de pages marquées ``dirty'' |
LIB | Est la taille de l'ensemble des pages de bibliothèques utilisées. Ne fonctionne pas pour les processus ELF |
RSS | Désigne la quantité totale de mémoire physique utilisée par une tâche (exprimée en kilo-octets). Dans le cas des processus ELF, les pages de bibliothèques prises en compte ici (ce n'est pas le cas pour les processus a.out) |
SHARE | Représente la quantité de mémoire utilisée par une tâche |
STAT | L'état d'une tâche est y représentée. L'état est soit S pour sleeping, D pour uninterruptible sleep, R pour running, Z pour zombie, ou T pour stopped (encore appelé traced). Ces états sont modifiés par un traceur< pour les processus avec une valeur de priorité négative, N pour les processus avec des valeurs de priorités positives et W pour un processus dégagé vers l'espace de swap (ceci ne fonctionne correctement que pour les processus du noyau) |
WCHAN | En fonction de la disponibilité de /boot/psdatabase ou de la table de liens du noyau (/boot/System.map), ceci montre les adresses ou le nom de la fonction du noyau pour lequel la tâche est suspendue |
TIME | Définit la durée totale de CPU qu'une tâche a utilisé depuis son lancement. Si le modemcumulatif est activé, ceci inclut aussi la durée de CPU utilisée par les processus-fils qui ont été tués. Le mode cumultif peut être activé à l'aide de l'option S en ligne de commande. Vous pouvez opérer un rafraîchissement de la valeur avec la commande interactive S. La ligne d'en-tête sera modifiée de manière à utiliser le CTIME |
%CPU | Représente le partage (en fonction des tâches) de la durée d'utilisation de la CPU depuis la dernière mise-à-jour à l'écran. Cette valeur est exprimée en pourcentage de la durée d'utilisation de CPU par processeur |
%MEM | Représente le partage (en fonction des tâches) de la mémoire physique |
COMMAND | Désigne le nom (la commande) d'une tâche. Celui-ci sera tronqué s'il est trop long pour être affiché sur une seule ligne. Les tâches en mémoire ont une ligne de commande, mais les tâches dégagés sur l'espace de swap ont seulement le nom du programme entre parenthèses (par exemple: ``(getty)'') |
Paramètres de lancement
-d | Spécifie le délai de la mise à jour de la console. Peut être changé de manière interactive avec la commande s |
-s | Lance top en mode sécurisé, ce qui verrouille les commandes dangereuses qui pourraient être rentrées en mode interactif |
-C | Affiche l’état total des CPU, dans le cas uniquement de machine multiprocesseurs ou multi-cœurs |
-H | Montre tous les threads |
-n | Nombre d’itérations de mise à jour de l’affichage, puis fermeture. Utile pour le mode batch |
-b | Mode batch. Utiliser pour envoyer le résultat dans un autre programme ou un fichier. Dans ce mode, il n’est pas possible d’insérer des commandes interactives. Ce mode s’exécute jusqu’au nombre d’itérations spécifiées par le paramètres –n Exemple : On désire envoyer dans un fichier texte la sortie de top durant 4 itérations top –n 4 –b > /root/top.txt |
Commandes interactives
Plusieurs fonctions sont reconnues de manière interactive avec top. Les commandes dangereuses sont désactivées avec l’option de lancement –s
ESPACE | Rafraichit de suite |
h or ? | Affiche l’aide des commandes |
k | Tue un process. Il est demandé le niméro de processus, et le signal à envoyer. Pour un kill normal, envoyer le signal -15 afin de fermer le processus normalement, ce qui est aussi le signal par défaut. Pour forcer le kill d’un processus, envoyer le signal -9 |
i | Bascule dans un mode où sont ignorés les processus zombie et les processus en attente |
n or # | Change le nombre de processus à afficher, une valeur est demandée. Par défaut, le nombre est 0, qui affiche autant de processus que le permet d’afficher la fenêtre |
q | Quitter |
r | Permet le re-nice d’un processus, soit son changement de priorité. Il sera demandé le PIFD de la tâche. Une valeur positive fait baisser la priorité. Si top est exécuter depuis un compte root, il est possible de rentrer une valeur négative pour avoir une priorité plus importante que la normale. La valeur par défaut de re-nice est 10 |
s | Change le délai du rafraichissement, il sera demandé un chiffre en seconde. 0 rafraichira continuellement top, et la valeur par défaut est 5 |
f or F | Permet d’ajouter ou de supprimer des champs à l’affichage |
o or O | Permet de changer l’ordre des champs à afficher |
l | Bascule l’affichage entre la charge moyenne et l’uptime |
m | Ajoute ou enlève les informations sur les informations d’utilisation de la mémoire |
t | Ajoute ou enlève les informations sur les informations d’utilisation du processeur |
c | Bascule l’affichage sur le détail des lignes de commandes |
N | Trie par PID |
A | Trie les processus par âge, les nouveau d’abord |
P | Trie les processus par utilisation du CPU (affichage par défaut) |
M | Trie les processus par utilisation mémoire |
T | Trie les processus par temp / temps cumulé |
W | Enregistre la configuration courante dans ~/.toprc. C’est la manière recommandée pour écrire un fichier de configuration top |
cat
La commande cat permet de visualiser ou de concaténer des fichiers. Elle est aussi très utilisée pour visualiser fichiers systèmes afin d’en extraire des informations
Options
-b numéroter les lignes non-blanches en sortie pour en faciliter la visualisation
-n numéroter les lignes en sortie pour en faciliter la visualisation
Exemples
Concaténer des fichiers tp4 et tp8 dans tp
# cat tp4 tp8 > tp
Visualiser le fichier système cpuinfo
# cat/proc/cpuinfo
Visualiser le fichier système meminfo, et signification de celui-ci
# cat /proc/meminfo
Valeur | Exemple | Signification |
MemTotal | 1075896 kB | quantité de mémoire vive utilisable |
MemFree | 614644 kB | quantité de mémoire vive actuellement non allouée |
Buffers | 43956 kB | quantité de mémoire vive actuellement allouée dans des buffers |
Cached | 148656 kB | quantité de mémoire actuellement utilisée en tant que cache (par exemple, des caches pour les transferts vers et depuis le disque dur |
SwapCached | 87856 kB | quantité de mémoire actuellement sortie du swap, mais dont une copie est toujours présente dedans |
Active | 340508 kB | quantité de mémoire vive récemment utilisée |
Inactive | 69036 kB | quantité de mémoire qui n'a pas été utilisée depuis un certain temps (le noyau pioche d'abord dans ces pages s'il a besoin de mémoire) |
HighTotal (n1) | 0 kB | quantité de mémoire vive présente dans la zone ZONE_HIGHMEM |
HighFree(n1) | 0 kB | quantité de mémoire vive non utilisée et présente dans la zone ZONE_HIGHMEM. |
LowTotal(n1) | 1075896 kB | quantité de mémoire vive présente dans le zone ZONE_NORMAL |
LowFree(n1) | 614644 kB | quantité de mémoire vive non utilisée et présente dans la zone ZONE_NORMAL |
SwapTotal | 1052216 kB | taille du swap |
SwapFree | 892544 kB | place disponible dans le swap |
Dirty | 584 kB | quantité de mémoire en attente d'être écrite sur le disque |
Writeback | 0 kB | quantité de mémoire qui est actuellement en train d'être écrite sur le disque |
Mapped | 220892 kB | quantité de mémoire allouée avec la fonction mmap() à partir de fichiers ou de devices |
Slab | 31028 kB | quantité de mémoire utilisée au sein du noyau, et allouée avec l'allocateur Slab, pour ses propres objets et structures |
CommitLimit | 1590164 kB | |
Committed_AS | 397692 kB | quantité maximale de mémoire utilisable avant que le noyau ne commence à swapper |
PageTables | 7732 kB | quantité de mémoire utilisée en tant que table de pages pour gérer la pagination |
VmallocTotal | 34359738367 kB | quantité totale de mémoire de l'espace d'adressage virtuel du noyau |
VmallocUsed | 7064 kB | quantité de mémoire utilisée dans l'espace d'adressage virtuel du noyau |
VmallocChunk | 34359731067 kB | plus grand bloc contigu de mémoire virtuelle (et non physique) disponible dans l'espace d'adressage virtuel du noyau |
HugePages_Total | 0 | nombre de hugepage allouée. Une hugepage est une page d'une grande taille, utilisée par des programmes qui ont des besoins précis de mémoire |
HugePages_Free | 0 | nombre de hugepage disponibles |
HugePages_Rsvd | 0 | |
Hugepagesize | 2048 kB | taille d'une hugepage |
(n1) Sur une architecture x86 32 bits, la mémoire physique est séparée en trois zones. D'une part, la zone ZONE_DMA, qui correspond aux adresses physiques de 0 à 16 Mo. D'autre part, la zone ZONE_NORMAL qui va de 16 à 896 Mo. Et enfin, la zone ZONE_HIGHMEM qui va de 896 à 4 Go (voire 64 Go avec l'extension PAE)
Vérifions :
HighTotal + LowTotal = MemTotal
HighFree + LowFree = MemFree
Le répertoire /proc contient des fichiers dont le noyau de votre système se sert pour envoyer des informations aux différents processus. On dit que c'est un pseudo système de fichiers, car contrairement aux autres répertoires, /proc est sauvegardé en mémoire et non sur votre disque dur
/proc contient une hiérarchie de fichiers spéciaux qui représentent l'état actuel du noyau, la mémoire est donc l'endroit le plus approprié pour le stockage de ces informations (puisqu'elle est aussi gérée par le noyau). Cela permet aux applications ainsi qu'aux utilisateurs d'avoir un œil sur le noyau du système.
Certains fichiers tels que /proc/interrupts, /proc/meminfo, /proc/mounts et /proc/partitions fournissent un aperçu de l'environnement d'un système à un moment donné. D'autres, tels que /proc/filesystems et le répertoire /proc/sys/ fournissent des informations sur la configuration du système
Vous pouvez trouver dans le répertoire /proc de nombreuses informations relatives à la configuration matérielle du système et aux processus en cours d'exécution
Certains fichiers situés dans l'arborescence du répertoire /proc peuvent être manipulés par les utilisateurs ainsi que par les applications afin de transmettre des changements de configuration au noyau, ce qui est évidemment extrèmement dangereux pour la stabilité du système
Les sous-répertoires de /proc
Le répertoire /proc contient de nombreux fichiers. Nous allons préciser ici le rôle de certains d'entre eux
apm | Ce fichier fournit des informations sur l'état du système de gestion de la consommation d'énergie (APM) (pour Advanced Power Management) et est utilisé par la commande apm. Ce fichier a peu d'intérêt pour les systèmes n'utilisant pas de batterie comme source d'alimentation |
cmdline | Concerne les informations sur les paramètres donnés au noyau lors de la mise en route |
cpuinfo | contient une collection d'informations sur le ou les processeurs de la machine (modèle, famille, taille du cache, etc.) |
devices | liste des différents périphériques présents classés par groupe (caractère et bloc) |
kcore | Ce fichier représente la mémoire physique du système. Grâce à ce fichier et à une image du noyau non compressé, l'utilitaire gdb (acronyme de Gnu DeBugger) peut être utilisé pour débugger le noyau. La taille de ce fichier est égale à la mémoire physique plus 4 ko. Nous vous déconseillons donc de tenter d'afficher ce fichier ou de l'imprimer et encore moins de le modifier ! |
kmsg | Ce fichier est utilisé pour contenir des messages générés par le noyau. Il faut avoir les privilèges root pour en lire le contenu. De plus, si le système utilise syslog, le fichier n'est pas lisible, car un seul programme à la fois est autorisé à le lire. Ne vous inquiétez donc pas si la commande cat /proc/kmsg ne vous retourne rien |
locks | Ce fichier affiche les fichiers actuellement verrouillés par le noyau. Chaque verrouillage a sa propre ligne qui commence par un numéro unique |
meminfo | Ce fichier est l'un des plus utilisés, car il donne de nombreuses informations sur la mémoire vive du système. Il contient des informations sur la mémoire totale, utilisée, libre, etc. (mémoire réelle et swap). L'unité utilisée est l'octet |
modules | Ce fichier affiche une liste de tous les modules qui ont été chargés dans le noyau. Son contenu varie en fonction de la configuration et de l'utilisation du système |
mounts | Renferme une liste brève de tous les montages utilisés par le système |
swaps | Ce fichier indique l'espace swap et son utilisation |
uptime | Ce fichier contient deux nombres, le temps écoulé depuis le démarrage et le temps passé à ne rien faire (en secondes) |
Version | Ce fichier contient les informations sur la version du noyau en cours d'utilisation |