Personnaliser son bash

Avant de commencer, nous allons rendre le bash plus agréable à utiliser, en ajoutant quelques fonctionnalités qui ne sont pas dans la version par défaut.

Commençons par éditer le fichier .bashrc qui contient les variables permettant de personnaliser le bash de l’utilisateur.

Le bash contient une fonction d’autocomplétion, cependant lorsque vous commencez à entrer le nom d’un fichier mais que celui-ci est ambigu (c’est-à-dire qu’il existe plusieurs fichiers ou dossiers qui commencent de la même façon dans le dossier courant), bash envoie un signal sonore et n’affiche les possibilités qu’après avoir tapé deux fois sur TAB.

Pour éviter une utilisation laborieuse, nous allons lui dire d’afficher les possibilités dès que nous faisons une tabulation, en passant la fonction suivante dans le fichier .inputrc (il convient de l’insérer à la fin du fichier) :

set show-all-if-ambiguous on

Bien, mais dans certaines applications, l’automplétion ne marche peut-être pas. Nous allons y remédier. Pour ce faire, il nous faut éditer le fichier .bashrc et y ajouter la ligne suivante :

. /etc/bash_completion

Pour obtenir les effets directement tapez :

$ bash

Nous allons ensuite demander à bash, de nous afficher les listing en couleur. En pratique, pour obtenir cela, vous devriez à chaque fois, écrire la commande suivante :

ls --color

Mais cela serait laborieux de taper tout cela à chaque fois que l’on fait un listing, aussi nous allons créer un alias, qui fera cela pour nous. Nous éditons pour cela le fichier .bashrc, en insérant la fonction suivante :

alias ls='ls --color'

Enfin, nous allons donner un peu de couleur à notre prompt, en éditant à nouveau le .bashrc.\nIl suffira ici de décommenter la ligne commençant par ’PS1’, qui contient les données relatives à la coloration du prompt.

Vous devriez avoir une ligne de ce style :

PS1=’\\[\\033[01 ;32m\\]\\u@\\h\\[\\033[00m\\] :\\[\\033[01 ;34m\\]\\w\\[\\033[00m\\]\\$ ’

Et vous avez maintenant un prompt vert pomme !

Se diriger dans le système de fichiers

Je vous renvoie à l’article concernant les système de fichiers Linux

Les commandes système

Gérer les droits des fichiers

Une des forces des Unices reposait sur sa gestion des droits des fichiers. Cela participe notamment à la sécurité du système.
Mais il vous arrivera parfois de vouloir modifier les droits sur ces fichiers.
Par exemple, je veux qu’un fichier qui appartient à "machin", appartienne à "truc". Si je suis root, je peux réattribuer ce fichier très facilement, grâce à la commande chown ("change owner").\nPar exemple :

# chown truc mon_fichier [1]

L’inconvénient, c’est que ce fichier appartient toujours au groupe de "machin". Je vais donc changer également le groupe par la commande chgrp ("change group") :

# chgrp truc mon_fichier

L’intérêt est que cette commande peut être passée en récursif, je peux donc changer le propriétaire d’un dossier entier et ses sous-dossiers très facilement. Attention : utilisez l’option -r avec beaucoup de prudence, vérifiez que le dossier ne contient pas des fichiers ou des dossiers qui devraient rester avec les droits qui leurs sont attribués par le système.

Nous allons maintenant apprendre à gérer plus finement les droits sur les fichiers, en utilisant la commande ’chmod’. Celle-ci permet, par exemple, de rendre un fichier exécutable, accessible en lecture et/ou écriture, par le propriétaire, les membres de sont groupes ou toute autre personne y ayant accès.
La commande chmod peut s’utiliser, soit avec des droits chiffrés, soit directement avec des lettres signifiantes : r (read), w (write), x (execute). u (user), g (group), o (other).

La syntaxe est la suivante :

# chmod [beneficiaire]+/-[droits accordés] nom_du_fichier

Par exemple. Je veux que le reste du monde puisse lire et écrire sur le fichier :

# chmod o+rw le_fichier

Allez, un autre. Je veux, ainsi que les membres de mon groupe, pouvoir lire, écrire sur le fichier, et l’exécuter (oh le barbare !) :

# chmod ug+rwx le_fichier

Mais le plus amusant c’est qu’on peut faire ça avec des fichiers (en octal comme les gens intelligents disent).
On a un score pour chaque droit attribué :

  • 4 pour la lecture
  • 2 pour l’écriture
  • 1 pour l’exécution

On additionne les différents droits et on les aligne en rang d’oignons en fonction du bénéficiaire, selon ce schéma : ugo (utilisateur, groupe, autres).

Un petit exemple. Je veux attribuer le droit de lire le fichier à tout le monde, mais je veux me rajouter également le droit d’écrire sur le fichier, mais pas le droit de l’exécuter (tout simplement parce que ça ne sert souvent à rien) :

# chmod 644 le_fichier

Le chiffre 777, malgré sa valeur divine, peut être assez dangereux, et il assez peu recommandé de l’utiliser sur un fichier ou un dossier, sans être sur de ce que l’on fait, surtout si on l’utilise sur un dossier en récursif. En effet, par cette commande vous autorisez toute personne à écrire sur le fichier, ce qui peut poser des problèmes de sécurité sérieux.
Malgré cela, beaucoup de CMS utilisant PHP vous demandent de leur donner tous ces droits : dans ce cas n’hésitez pas :)

Vous trouverez en suivant ce lien, une image permettant d’expliciter l’octroi de droit en octal.

Droit par défaut des fichiers
Dans certains cas, on aimerait que tout les fichiers créés aient certaines permissions. On fait donc appel à la notion de masque création de fichiers (umask).

umask umask mode

respectivement pour obtenir le masque de création ou pour le changer.


[1] Si vous êtes le propriétaire du fichier, vous pouvez également changer le groupe. Attention ceci est irréversible (vous n’en serez plus le propriétaire)