Les HOWTO Linux...
Page suivante - Page précédente - Table des matières
8. Sujets avancés
Là, le jeu devient coriace. Apprenez ça, et ensuite vous pourrez dire que vous « connaissez quelque chose à Linux » ;-)
8.1 Droits et propriété
Les fichiers et les répertoires ont des droits et des propriétaires, comme sous VMS. Si nous ne pouvez pas lancer un programme, ne pouvez pas modifier un fichier ou ne pouvez pas accéder à un répertoire, c'est parce vous n'avez pas les droits adéquats pour le faire et/ou parce que le fichier ne vous appartient pas. Regardez l'exemple suivant :
$ ls -l /bin/ls
-rwxr-xr-x 1 root bin 27281 Aug 15 1995 /bin/ls*
Le premier champ indique les droits du fichier ls
. Il y a trois types de
propriété : le propriétaire, le groupe et les autres (comme le
propriétaire, le groupe et le reste du monde sous VMS) et trois droits :
lecture, écriture et exécution.
De gauche à droite, -
est le type du fichier (-
désigne un fichier
ordinaire,
d
un répertoire, l
un lien, etc.) ; rwx
sont les droits du
propriétaire (lecture, écriture, exécution) ; r-x
sont les droits du
groupe du propriétaire (lecture, exécution) ; r-x
sont les droits pour
tous les autres utilisateurs (lecture, écriture).
Pour changer les droits d'un fichier :
$ chmod <quiXdroit> <fichier>
Avec qui représentant u
(ce sont alors les droits du propriétaire
qui sont affectés), g
(ceux du groupe) ou o
(ceux des « autres
»). X est soit +
(dans ce cas il donne les droits), soit -
(il
les enlève). Et droit est r
, w
ou x
. Voici un exemple :
$ chmod u+x fichier
Cela permet de rendre le fichier exécutable pour le propriétaire. Il existe un
petit raccourci chmod +x fichier
.
$ chmod go-wx fichier
Là, on enlève les droits d'écriture et d'exécution au groupe et aux autres (donc à tout le monde sauf au propriétaire).
$ chmod ugo+rwx fichier
Tous les droits sont donnés à tout le monde.
Une manière plus courte de préciser les droits se base sur les nombres :
rwxr-xr-x
peut être exprimé par 755 (chaque lettre correspond à un bit :
---
vaut 0, --x
1, -w-
2, etc).
Pour un répertoire, rx
signifie que vous pouvez vous placer dans ce
répertoire et w
que vous pouvez effacer un fichier dans ce répertoire (en
tenant compte des droits du fichier évidemment) ou le répertoire lui-même. Tout
ça n'est qu'une petit partie du sujet : man est votre ami.
Pour changer le propriétaire d'un fichier :
$ chown <utilisateur> <fichier>
Pour résumer, voici un tableau :
VMS Linux
------------------------------------------------------------------------------
SET PROT=(O:RW) fichier.txt $ chmod u+rw fichier.txt
$ chmod 600 fichier.txt
SET PROT=(O:RWED,W) fichier $ chmod u+rwx fichier
$ chmod 700 fichier
SET PROT=(O:RWED,W:RE) fichier $ chmod 755 fichier
SET PROT=(O:RW,G:RW,W) fichier $ chmod 660 fichier
SET FILE/OWNER_UIC=JOE fichier $ chown joe fichier
SET DIR/OWNER_UIC=JOE [.dir] $ chown joe rep/
8.2 Multitâche : processus et tâches (jobs)
En voici plus à propos de la manière de lancer les programmes. Il n'y a pas de file d'attente sous Linux ; le multitâche est géré très différemment. Voici à quoi ressemble une ligne de commande typique :
$ commande -s1 -s2 ... -sn par1 par2 ... parn < entrée> sortie &
Maintenant, voyons comment marche le multitâche. Les programmes qui tournent en avant-plan (foreground) ou arrière-plan (background) sont appelés des processus.
- Pour lancer un processus en arrière plan :
Le shell vous donne le numéro de job (le premier nombre ; regardez ci-dessus) et le PID (le numéro du processus). Chaque processus est identifié par son PID. Pour voir combien de processus sont lancés :$ programme [option] [< entrée] [> sortie] & [1] 234
La liste des processus actifs va être affichée.$ ps -ax
- Pour tuer un processus :
Vous aurez peut-être besoin de tuer un processus quand vous ne savez pas le quitter de la bonne manière... ;-) Parfois, une processus sera seulement tué par une des commandes suivantes :$ kill <PID>
$ kill -15 <PID> $ kill -9 <PID>
En plus de ça, le shell vous permet de stopper ou de suspendre temporairement
un processus, envoyer un processus en arrière-plan ou en ramener un en
avant-plan. Dans ce contexte, les processus sont appelées jobs
.
- Pour voir combien de jobs sont actifs :
Les jobs sont identifés par le nombre que le shell leur donne et non pas par leur PID.$ jobs
- Pour stopper un processus qui tourne en avant-plan appuyez sur
ctrl + c . (Ça ne marche pas toujours.) - Pour suspendre un processus tournant en avant-plan appuyez sur
ctrl + z (Idem.) - Pour envoyer un processus suspendu en arrière-plan (qui devient alors un
job) :
$ bg <job>
- Pour envoyer un job en avant-plan :
$ fg <job>
- Pour tuer un job :
$ kill %<job>
8.3 Fichiers, deuxième
Voici plus d'information sur les fichiers.
- stdin, stdout et stderr : sous Unix, tous les composants
du système
sont assimilés à des fichiers. Les commandes et les programmes
puisent leur entrée dans un « fichier » appelé stdin
(l'entrée standard : généralement le clavier), redirigent leur sortie vers un
« fichier » appelé stdout (généralement l'écran) et leurs
erreurs vers un « fichier » appelé stderr (généralement
l'écran).
En utilisant
<
et>
vous redirigez l'entrée et la sortie vers un fichier différent. De plus,>>
ajoute la sortie à un fichier à la place de l'écraser ;2>
redirige les messages d'erreur (stderr) ; 2>&1 redirige stderr vers stdout, alors que 1>&2 redirige stdout vers stderr. Il y a un « trou noir » appelé/dev/null
: tout ce qui est redirigez vers lui disparaît. - Jokers/ : sur la ligne de commande
*
correspond à (et désigne) tous les fichiers sauf ceux qui sont cachés ;.*
correspond à tous les fichiers cachés ;*.*
correspond seulement ceux qui ont un « . » au milieu de leur nom suivi par d'autres caractères ;l*c
correspondra à « loïc » et « luc » ;*c*
correspondra à « piocher » et « picorer ».%
devient?
. Il existe également un autre joker :[]
. Par exemple :[abc]*
désigne les fichiers commençant par a, b ou c ;*[I-N123]
désigne les fichier finissant par I, J, K, L, M, N, 1, 2 ou 3. mv
(RENAME
) ne permet pas de renommer plusieurs fichiers d'un coup. Ainsi,mv *.xxx *.yyy
ne marchera pas.- Utilisez
cp -i
etmv -i
pour être prévenu quand un fichier va être écrasé.
8.4 Files d'impression
Vos fichiers à imprimer sont placés dans une file comme sous VMS. Quand vous lancez une commande d'impression, vous aurez peut-être à préciser le nom de l'imprimante. Par exemple
$ lpr fichier.txt # ce fichier est placé dans la file de l'imprimante standard
$ lpr -Plaser fichier.ps # celui dans celle de l'imprimante « laser »
Pour gérer la file d'impression utilisez les commandes suivantes :
VMS Linux
------------------------------------------------------------------------------
$ PRINT fichier.ps $ lpr fichier.ps
$ PRINT/QUEUE=laser fichier.ps $ lpr -Plaser fichier.ps
$ SHOW QUEUE $ lpq
$ SHOW QUEUE/QUEUE=laser $ lpq -Plaser
$ STOP/QUEUE $ lprm <numéro de job>
Page suivante - Page précédente - Table des matières