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 rw 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 :
    $ programme [option] [< entrée] [> sortie] &
    [1] 234
    
    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 :
    $ ps -ax
    
    La liste des processus actifs va être affichée.
  • Pour tuer un processus :
    $ kill <PID>
    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 -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 :
    $ jobs
    
    Les jobs sont identifés par le nombre que le shell leur donne et non pas par leur PID.
  • 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 et mv -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