Améliorer sa configuration | Environnement


Dernière mise à jour: 15-10-2000
Menu: Configurer et Améliorer son Système Index Linux Installer et configurer Sudo

Configuration de l'Environnement

  • Les variables d'environnement
  • LS en couleur
  • Commandes et variables utiles
  • LILO et LOADLIN
  • L'utilisateur non su
  • Installer sudo



    Avant propos :
    Si Linux est un système ouvert il est de ce fait entièrement adaptable ,mais pour celui ou celle qui le découvre il est parfois désagréable (voir irritant) de ne pas obtenir le même résultat avec le clavier ou l'affichage suivant que l'on se trouve en mode console , sous X ou dans un éditeur ...
    Nous allons essayer de remedier à cela ! (peut-etre ?)

    L'environnement

    Utilisez la commande "locate" pour déterminer le chemin des fichiers à modifier .
      ATTENTION !  suivant votre distribution les fichiers de configurations et/ou leur chemin risque d'être différents .
    Par exemple :
    La Slackware utilise ~/.inputrc pour modifier le comportement des touches (clavier) début ,fin ,retour et supprime , sous RedHat il vous faudra modifier la déclaration de la variable (dans rc.local ) en inputrc=$HOME/.inputrc pour que vos modifications soient pris en compte .
    Vous trouverez une explication détaillée dans Configuration-HOWTO .

    Rappel :
    Le répertoire personnel de chaque utilisateur (compte)est désigné par HOME .
    $HOME est la variable contenant le nom de votre compte utilisateur et ce répertoire peut sécrire :
    $HOME/ ou ~/
    Les fichiers cachés ont un point "." devant leur nom et sont visible avec la commande ls -a
    Pour activer une ligne dans les différents fichiers de configuration, enlevez le "#" (décommenter) au début de cette ligne , et pour désactiver une ligne ajoutez le "#" (commenter) au début de celle-ci .
    Suivant le type de fichiers et de scripts utilisés le commantaire "#" peut etre "%" ou "!" ou ";;" .
    La commande locate (slocate) permet de situer (sur votre système) les fichiers présents.
    locate utilise une base de données qui peut-etre construite ou mise à jour avec la commande updatedb, cette base de données est enregistrée dans le fichier /var/lib/slocate/slocate.db pour la RedHat et dans /var/spool/locate/locate.db pour la Slackware.
    la commande grep va vous permettre de trouver le fichier où est déclaré la variable en question : pour trouver la variable PS1 tapez
    find / -name '*' | xargs grep -l PS1.
    Ensuite à vous de faire le tri parmi tous ces fichiers.
    find / -name :cherche à partir le la racine , find -name :cherche depuis le répertoire courrant.
    Consultez les pages de manuel sur les différentes commandes: man grep
     Le Bourn Shell , les fichiers d'initialisations ...!??? Cela vous dis quelque chose ?
    Regardez rc.init  inittab  rc.local ... Vous aurez peut-être à les modifier ?!!!


    Le Shell Bash :
    _Deux fichiers positionnent globalement les variables communes à tous les utilisateurs :
    /etc/bashrc (fonctions et alias)
    /etc/profile (programmes et variables d'environnement)
    Mais les valeurs des variables qu'ils contiennent seront écrasées par celles contenu dans les fichiers, du répertoire HOME , ~/.bashrc et ~/.bash_profile .
    Chaque création de compte utilisateur attribut un répertoire personnel à cet utilisateur = $HOME .
    Pour personnaliser un compte utilisateur , son répertoire HOME doit contenir :
    .bash_profile ou .profile ou .bash_logic
    .bashrc
    .bash_logout
    .inputrc
    .dir_colors
    .jedrc , .emacs , .less , .lessrc ....et ceux dont vous avez besoin ?!
    Pour X :
    dans $HOME : .xinitrc , .Xclients , .Xdefaults , .Xmodmap , .fvwm*

    _Pour le Shell bash : éxecution de /etc/profile et /etc/bashrc contenant les variables globales et alias , puis appel de ~/.bash_profile ou ~/.profile contenant les variables personnalisés , puis appel de ~/.bashrc qui contient les alias personnalisés .
    _Pour bash en tant que sh : execution de /etc/profile puis ~/.profile .
    _Pour les autres Shell consultez la doc correspondante .

    Lors de la création d'un compte , votre système va installer par défaut certains de ces fichiers dans le répertoire HOME de ce nouvel utilisateur .
    Ces fichiers proviennent du répertoire /etc/skel/ :
    Pour adapter chaque compte suivant vos préférences, il suffit d'y copier les fichiers cachés .bashrc  .jedrc  .emacs  .lessrc  .xinitrc  .fvwm2rc  .Xclients  .Xdefaults ...etc
    Vous pouvez editer les fichiers de /etc/skel/  et les modifiez , puisque ~/.bashrc sera la copie de /etc/skel/.bashrc .

    Le fichier ~/.bash_logout sert à quitter proprement en nettoyant la fenetre lorsque vous fermer le compte par exit ou logout :
    #$HOME/.bash_logout
    clear
    # c'est tout !

    Le fichier ~/.bash_profile va reconsidérer les variables pour l'utilisateur et écraser celles définies déclarées dans /etc/profile :
    #$HOME/.bash_profile
    if [ -f ~/.bashrc ]; then
       .~/.bashrc
    fi
    # suite voir dans config.tgz

    Le fichier ~/.bahrc va définir son environnement et ses alias propre à l'utilisateur ainsi que des fonctions :
    #$HOME/.bashrc
    # definitions globales
    if [ -f /etc/bashrc ]; then
       ./etc/bashrc
    fi
    # Pour redéfinir le prompt et ses couleurs
    COLOR=45
    PS1='^[[$COLOR;37m$USER:^[[37;40m\w\$ '
    # definir les alias
    alias cp='cp -i'# pour ne pas faire d'erreur
    alias mv='mv -i'# -i demande confirmation
    alias rm='rm -i'
    alias ls='ls --color=tty'# pour ls en couleur
    alias ls='ls -a'# pour lister automatiquement tousles types de fichiers
    alias dir='ls'# pour utiliser dir en tant que ls
    alias x='startx'# x pour lancer le serveur X
    # definir des fonctions pour des commandes souvent utilisées
    untgz() # decompresser une archive tar.gz
    { gzip -dc $1 | tar xvf - }

    lstgz() # lister le contenu d'une archive tar.gz
    {
      for file in $* ; do
       gzip -dc ${file} | tar tf -
      done
    }
    #



    LS en couleur

    La commande ls peut, en mode console ou dans un xterm, lister fichiers et répertoires avec différentes couleurs appropriées aux types de fichiers .
    Le fichier /etc/DIR_COLORS est le fichier de configuration de l'affichage utiliser par la commande ls.
    Pour qu'il soit pris en compte il faut ajouter quelques instructions dans /etc/profile :
    # /etc/profile
    #
    eval `dircolors /etc/DIR_COLORS -b`
    export LS_OPTIONS=`-F -T 0 --color=tty `

    Pour personnaliser ls ,chaque utilisateur peut utiliser ~/.dir_colors ,il suffit de copier /etc/DIR_COLORS dans ~/.dir_colors et de remplacer la ligne ,de /etc/profile , eval `dircolors /etc/DIR_COLORS -b` par eval `dircolors ~/.dir_colors -b` .
    Cela ne fonctionne pas très bien avec nxterm et encore moins avec rxvt .

    Pour RedHat Il faut placer ces lignes obligatoirement dans le fichier ~/.bashrc et le fichier ~/.bash_profile doit appeler ce ~/.bashrc :
    # ~/.bashrc
    # Source des definitions globales
    if [ -f /etc/bashrc ]; then
    . /etc/bashrc
    fi
    #
    # LS en Couleurs
    eval `/usr/bin/dircolors $HOME/.dir_colors -b`
    #
    export LS_OPTIONS='-F -T 0 --color=tty'
    #Definition des alias
    Ces lignes doivent etre impérativement placées avant la définition des alias .

    Pour personaliser l'affichage de ls il ne vous reste plus qu'à éditer ~/.dir_colors et à le modifier à votre convenance .
    Ce fichier est très bien commenté .
    Vous trouverez une explication détaillée dans Colour_ls-HOWTO .
    Il vous faudra néanmoins tester la variable TERM dans les différents terminaux où vous voulez faire fonctionner ls et ajouter le contenu de cette variable dans ~/.dir_colors ,par exemple :
    en utilisant la commande echo $TERM ,en mode console vous allez obtenir linux ou linux-lat , dans un xterm vous aurez linux ou xterm : Que vous ajouterez avec ces lignes TERM linux-lat et TERM linux .
    En utilisant ls avec more ou less ,vous n'aurez plus la coloration mais l'OPTION -F va permettre d'identifier les fichiers en ajoutant un caractère à sa suite : '/' pour un repertoire, '*' pour un executable, '@' pour un lien symbolique ...etc.

    less mieux que more !?

    Pour ceux qui aime la rapidité du mode console pour administrer leur système ,souvent la commande ls nécessécite de lui adjoindre une autre commande qui permet de lister le contenu d'un répertoire page par page :
    ls -l /dev | more ou ls -l /dev | less :
    le comportement de la commande less peut-etre configuré pour utiliser les touches pour un défilement page/page,ligne/ligne mais aussi pour remonter dans le listing .
    _En ajoutant ces lignes à /etc/profile
    # /etc/profile
    #
    # Configurer LESS
    LESS='-M-Q' # longue et silencieuse ou : LESS=-MM
    LESSEDIT="%E ?lt+%lt. %f" # Editer ligne du haut
    LESSOPEN="| lesspipe.sh %s" # si vous avez écrit le filtre
    VISUAL=jed # jed ou l'éditeur que vous voulez ?
    LESSCHARSET=latin1 # pour les caractères accentués
    #
    export LESS LESSEDIT LESSOPEN VISUAL LESSCHARSET

    _Puis en créant le fichier ~/.lesskey
    # ~/.lesskey
    ^[[B forw-line
    ^[[A back-line
    ^[[6~ forw-scroll
    ^[[5~ back-scroll
    ^[[1~ goto-line
    ^[[4~ goto-end
    # Il faut que ^[ soit un vrai caractère d'échappement et non pas ^ suivi de [ .

    _Ensuite lancer la commande lesskey qui va créer un fichier .less
    _Enfin en réalisant le script de filtrage /usr/bin/lesspipe.sh ou en modifiant celui qui existe , si vous voulez voir le contenu, d'archives .tar ou compressées .tgz ou comprimées .gzip, des doc man ou des binaires :
    ... Ce sera pour plus...tard ...!

    Avant de modifier quoi que ce soit essayer si less n'est pas déjà configuré.


    Commandes et variables utiles

    Cinq commandes pratiques pour faire connaissance avec votre système :
    pwd vous indique le répertoire courant .
    locate qui vous indiquera le(s) chemin(s) où se trouve le fichier que vous chercher .
    locate XF86Config pour savoir où est votre fichier de configuration de XFree86 .
    type va vous indiquer le répertoire de l'executable (binaire) ,par exemple si vous chercher locate :
    type locate la réponse sera :
    locate is /usr/bin/locate
    ldd pour savoir quelles librairies utilise locate :
    ldd /usr/bin/locate ,vous obtiendrez quelque chose comme :
       libc.so.6 => /lib/libc.so.6
       lib/ld-linux.so.2 => /lib/ld-linux.so.2

    Et enfin la commande echo qui va vous permettre de récupérer la valeur d'une variable :
    echo $HOME vous indique le répertoire du compte utilisateur sous lequel vous etes "loger" , la variable sécrit HOME mais la commande echo utilise $HOME . Si en retour vous recevez une ligne vide, c'est que la variable n'est pas définie.
    Voici d'autres variables qu'il est utile de connaitre pour mieux configurer son système .
    DISPLAY Ecran du serveur X
    EDITOR Editeur par défaut
    LANG Langue utilisée par défaut
    LANGUAGE ... idem ...
    MAIL Répertoire de réception du courrier
    OSTYPE Type du système
    PATH Chemin d'accès aux commandes
    PS1 Definition de l'invite (prompt)
    PWD Meme chose que pwd
    SHLVL Niveau d'execution du shell
    TERM Type de terminal utilisé
    UID Identifiant de l'utilisateur
    USER Nom de l'utilisateur


    LILO et LOADLIN :
    LILO:
    Le fichier de configuration de LILO est /etc/lilo.conf
    LILO n'est rien de moins qu'un Boot Manger capable de lancer d'autres OS que Linux.
    A ma connaissance LILO est capable de Lancer :
    Windows 95/98/NT OS/2 Warp FreeBSD et QNX
    -1) Vous utilisez déjà un Boot Manger comme System Commander, BootMagic ou celui d'un autre OS comme OS/2, Windows NT, BeOS ..etc : N'INSTALLER PAS LILO dans le MBR ! mais sur la partition racine de Linux ou sur la disquette de Boot (de Linux) .
    Vous avez un article dans "le petit journal de Droopy " du 28-03-99, expliquant l'installation et l'utilisation de LILO avec Windows .
    En cas d'ERREUR ! Si vous avez installer LILO dans le MBR, il vous est possible de lancer votre OS à partir de LILO (voir lilo.conf) ou de rétablir le MBR de votre système DOS en démarrannt avec une disquette d'amorçage DOS/WINDOWS contenant l'utilitaire FDISK(DOS) et au prompt de taper la commande fdisk /MBR .
    Vous trouvrez des exemples de lilo.conf dans le LILO-mini-HOWTO .
    les mini-HOWTO vous fournirons des indications précises pour la configuration de Linux avec d'autres systèmes, regardez dans :
    Linux+FreeBSD
    Linux+NT-Loader
    Linux+Win95
    Win95+Win+Linux
    Win95+Win3x+Linux
    LILO permet aussi de passer des options, au boot du système ou dans lilo.conf, comme :
    hdc = cdrom (pour le CD en /dev/hdc)
    mem = 128 (si votre RAM est de 128 Mo) , ce qui s'écrit append ="mem=128" dans lilo.conf.
    ...etc. Ne vous privez pas de lire les HOWTO ou le Guide-du ROOTard , beaucoup de chapitres sont consacrés aux options possibles de lilo.conf .
    -2) Vous n'avez pas de "Boot Manager" ,vous avez installé LILO sur sa patition racine et lorsque vous démarrez votre machine c'est Windows qui est lancé et vous n'avez plus accès à Linux :
    _Il suffit d'ativer la patition Linux à la place de la patition Windows, en utilisant FDISK d'une disquette de démarrage DOS/Windows ou fdisk de Linux :
    Sous Dos: Choisissez "Activation de partition" et sélectionnez la partition Linux .
    Sous Linux: Utilisez la commande "a" de fdisk et sélectionnez la partition Linux .
    Maintenant LILO sera lané au démarrage et il ne reste plus qu'à le configurer pour lancer Windows .
    _Ou vous pouvez utiliser LOADLIN pour lancer Linux depuis DOS .

    LOADLIN :
    Si vous utilisez un système DOS ou Windows, LOADLIN vous permet de lancer Linux à partir du DOS.
    Si vous avez une distribution Linux sur CD, vous trouverez LOADLIN.EXE dans un répertoire(DOSUTILS) du CD, si non récupérez-le sur un site FTP de distribution Linux.
    _Copier LOADLIN.EXE dans un répertoire de votre système DOS (C:\DOS) ainsi que votre noyau vmlinuz et l'image initrd.img , ils se trouvent dans le répertoire /boot de Linux ou à la racine de la partition Linux.
    vous pouvez créer un répertoire spécifique comme C:\LINUX plutôt que d'utiliser C:\DOS
    _Ecrire un fichier LINUX.BAT pour lancer Linux :

     
       rem *** LINUX.BAT lancement de Linux *** 
       smartdrv /C 
       rem ( remplacer DOS par votre repertoire) 
       cd \DOS 
       rem (remplacer hda2 par la partition racine de Linux ) 
       loadlin vmlinuz root=/dev/hda2 ro initrd=initrd.img 
       rem **** Fin de LINUX.BAT *** 
    
    _ CE FICHIER DOIT ETRE LANCE EN MODE MSDOS !!!
    Consultez le Loadlin+Win95-mini-HOWTO .
    Vous ne voulez pas utiliser LILO, vous pouvez réaliser un fichier de lancement (DOS 6.2) pour choisir entre Windows et Linux :
    Si vous utilisez un DOS Novell (DR Dos) vous pouvez utiliser la commande "switch" de ce Dos dans CONFIG.SYS (lire la doc de DRDOS).
    pour MSDos vous utiliserez la fonction "MENU" dans CONFIG.SYS , voici à quoi peut ressembler ce fichier config.sys:
    [MENU]
    menuitem=WIN, Windows 98
    menuitem=LINUX, Linux RedHat
    menudefaulft=Windows, 15
    [WIN]
    DEVICE=C:\WINDOWS\COMMAND\display.sys con=(ega,,1)
    COUNTRY=033,850,C:\WINDOWS\COMMAND\country.sys
    [LINUX]
    DEVICE=C:\DOS\loadlin C:\DOS\vmlinuz initrd= C:\DOS\initrd.img root=/dev/hda2/
    
    Vous trouverez une info plus détaillée dans la doc de MSDOS ou dans l'aide de Windows.

    L'utilisateur non su

    Vous avez certainement déjà lu "pour faire ..... il faut etre set uid ... ou avoir les droits root" .
    Etre su (SetUid) revient à prendre les droits d'un autre compte , root en l'occurence !
    Pour mieux comprendre ce qu'est su :
    "loger" vous sous un compte utilisateur (non root) et en mode console ou dans un xterm tapez su ou su - ou su root .
    Et vous aurez alors les mêmes droits que root (après avoir entrez le mot de passe de root) .
    Ce qui veut dire que lorsque vous etes sous un compte utilisateur, vous perdez ces droits, et il vous est impossible d'utiliser les périphériques comme le son ,le modem ou de monter des partitions si l'administrateur du système ou le super utilisateur ayant les droits root ne vous a pas accordé les droits d'accès à ces périphériques .
    Pour y remédier, en tant que root, utilisez la commande chmod 666 sur :
    /dev/cua0 (la souris COM1)
    /dev/cua1 (le modem COM2)
    /dev/audio /dev/dsp /dev/mixer (pour le son)
    /dev/fd0 (le floppy A:)
    /dev/hda3 (la partition Dos du premier disque par exemple)
    /dev/hdb1 (partition du second disque)
    /dev/hdc (le CDRom)... etc ...

    Si vous etes le seul utilisateur de votre machine, vous pensez qu'il suffit de vous attribuer les droits root ou de travailler sous le compte root ? Certe mais cela reste très dangereux pour votre système ,car là vous pouvez tout casser !!!
    Mieux vaut donc travailler sous un compte utilisateur et prendre les droits root avec su lorsque vous etes bloqué pour effectuer une manipulation comme l'installation d'une application (make install) ou lancer un démon comme PPP nécessitant d'etre setuid pour effectuer la connexion Internet avec vppp par exemple : su -c vppp puis entrez le mot de passe root .

     nb: Lorsque vous utilisez su pour sortir du compte utilisez la commande exit et vous retournerez sous le shell du compte qui à lancer su (que vous pouvez quitter par logout ou exit) .

    Une bonne alternative est d'utiliser "Sudo" pour donner les droits root à certains utilisateurs sur certaines applications, voir la page suivante

    haut de page