Page suivante Page précédente Table des matières
1. Trucs et astuces
1.1 Problèmes avec le système de fichiers vfat
J'ai toujours des problèmes avec les permissions d'écriture pour les utilisateurs lors du montage de systèmes de fichiers vfat/dos sur ma machine Linux. J'utilise la Red Hat 5.1 avec un noyau 2.0.34. Quelqu'un sait-il ce qui ne va pas ?
Première solution :
Voici la ligne que j'ai mise dans
/etc/fstab:
/dev/hda1 /mnt/win95 vfat umask=000,auto 1 1L'astuce est dans le positionnement d'
umask.
Deuxième solution :
J'avais le même problème. Voici ce que j'ai mis dans mon
/etc/fstab:
/dev/hda1 /dos vfat user,noauto 0 0Je ne souhaite pas monter systématiquement ma partition
/doscar je ne veux pas que ses fichiers soient pris en compte dans la base de données utilisée parlocate. Mettreuserpour cette partition fait que tout le monde peux la monter.
Troisième solution :
Mon fichier
/etc/fstabcontient cette ligne :
/dev/hda4 /f: vfat defaults,umask=007,gid=101 1 1Cela monte mon répertoire dos comme
/f:(pour que cela corresponde à ce que j'ai sous NT).root, ou tout utilisateur du groupe 101 peuvent le lire ou y écrire.Pour donner les permissions à tout le monde, changez la ligne et mettez :
defaults,umask=000
1.2 Monter des partitions DOS sous Linux
Afin d'octroyer des permissions à vos partitions DOS de façon sûre, faites ce qui suit.
Remarque : dans les exemples qui suivent, l'user id (63) et le group id (63)
dosont été choisis afin de ne pas être identiques à d'autres user id et group id présents dans/etc/passwdou/etc/group.Cette solution fonctionne avec Red Hat 5.1, vous devrez peut-être la modifier un peu si vous utilisez une autre distribution.
- Créez un utilisateur
dos, non autorisé à se logger, en ajoutant la ligne suivante dans/etc/passwd:dos:*:63:63:MSDOS Accessor:/dos:- Créez le groupe
doset ajoutez des utilisateurs à ce groupe. Dans l'exemple suivant,rootetejyappartiennent au groupedos. Pour ce faire, ajoutez une ligne comme celle-ci dans/etc/group:dos::63:root,ejy- Ajoutez la ligne suivante (adaptée à votre système) à
/etc/fstab:Bien sûr, vous devez d'abord localiser vos partitions DOS. Vous pouvez le faire sous le compte/dev/hda1 /C vfat uid=63,gid=63,umask=007 0 0rootà l'aide des commandes suivantes :La commande/sbin/fdisk -l df cat /etc/fstabfdisk -lénumère tous les disques disponibles.dfmontre quels sont ceux qui sont montés et leurs occupations respectives.cat /etc/fstabaffiche tous les périphériques montables. Les partitions restantes sont les partitions étendues, une sorte d'enveloppe de partitions, et les partitions allouées à d'autres systèmes d'exploitation que vous ne souhaitez pas monter.
- Créez un point de montage pour votre disque DOS à l'aide de la commande effectuée sous le compte
root:De cette façon, le disquemkdir /C chown dos:dos /CC:est monté sur/Cau démarrage. Seulsrootetejypeuvent le lire et y écrire. Notez que vous pouvez aussi mettrevfatà la place demsdosdans/etc/fstabafin de gérer les partitionsvfat16(etvfat32pour le noyau 2.0.34 et supérieurs).
1.3 Signatures aléatoires
Pour avoir une signature différente à chaque fois que vous envoyez un courrier :
Créez un sous-répertoire
~/.signatureset copiez-y votre fichier.signaturesous un nom visible. Supprimez le fichier~/.signatureet remplacez-le par un tube à l'aide de la commande :
mkfifo ~/.signatureCréez un script qui effectue un simple
catde chacun des fichiers du répertoire~/.signaturesdans le tube~/.signature:
#!/bin/sh while true do for SIGNATURE in ${HOME}/.signatures/* do # Cat each file out to the .signature and throw away any errors. cat ${SIGNATURE} > ${HOME}/.signature 2> /dev/null # This sleep seems to be required for Netscape to work properly # I think buffering on the filesystem can cause multiple signatures # to be read otherwise. I think the sleep allows Netscape to see # the End Of File. sleep 1 done doneFaites en sorte de lancer ce script en arrière-plan à chaque fois que vous vous connectez au système (pour cela, lancez-le de votre fichier
profileouxsession). Ajoutez d'autres entrées à votre répertoire~/.signatureset elles seront automatiquement utilisées dans vos courriers.Problèmes éventuels :
Une signature peut bloquer le tube. S'il n'y a aucun processus qui alimente le tube en signatures, tous les programmes ouvrant le tube peuvent se retrouver bloqués jusqu'à ce que quelque chose soit écrit.
1.4 Création du programme bzgrep
Si vous avez déjà utilisé
zgrepavec des fichiers textes compressés pargzip, vous vous êtes sûrement rendu compte qu'il est très pratique.zgrepvous permet de faire des recherches d'expressions rationnelles dans un fichier texte, qu'il soit ou non compressé pargzip. Par exemple, un répertoire peut correspondre à ce qui suit :
testing > ls -al total 2086 drwxrwxr-x 2 ksiew ksiew 1024 Oct 18 11:07 . drwxr-xr-x 24 ksiew ksiew 2048 Oct 18 11:00 .. -rwxrwxr-x 1 ksiew ksiew 1363115 Oct 18 11:01 cortes.txt -rwxrwxr-x 1 ksiew ksiew 172860 Oct 18 11:01 lost_world_10.txt.gz -rwxrwxr-x 1 ksiew ksiew 582867 Oct 18 11:00 moon10a.txtEt, si vous recherchez le mot "lune", faire :
testing > zgrep -l lune * cortes.txt lost_world_10.txt.gz moon10a.txtCelà vous informe que "lune" se trouve dans ces trois fichiers.
Maintenant, si vous compressez un fichier texte à l'aide de
bzip2, vous aurez un problème :
testing > bzip2 cortes.txt testing > ls -al total 1098 drwxrwxr-x 2 ksiew ksiew 1024 Oct 18 11:12 . drwxr-xr-x 24 ksiew ksiew 2048 Oct 18 11:12 .. -rwxrwxr-x 1 ksiew ksiew 355431 Oct 18 11:01 cortes.txt.bz2 -rwxrwxr-x 1 ksiew ksiew 172860 Oct 18 11:01 lost_world_10.txt.gz -rwxrwxr-x 1 ksiew ksiew 582867 Oct 18 11:00 moon10a.txt testing > zgrep -l lune * lost_world_10.txt.gz moon10a.txt
zgrepne reconnaît plus le fichiercortes.txt.bz2comme étant un fichier compressé.Nous avons donc besoin d'un nouveau programme
bzgrepqui puisse reconnaître les fichiers textes compressés avecbzip2.La meilleure façon de créer ce fichier consiste à modifier le fichier
zgrepexistant.
testing > locate zgrep /usr/bin/zgrep /usr/man/man1/zgrep.1 testing > su password: opensesame # cp /usr/bin/zgrep /usr/local/bin/bzgrepLe fichier
bzgrepest une copie du fichierzgrepqui contient ces lignes :Nous ne pouvons pas changer les dernières lignes en ce qui suit :
res=0 for i do if test $list -eq 1; then bzip2 -cdf "$i" | $grep $opt "$pat" > /dev/null && echo $i r=$? elif test $# -eq 1 -o $silent -eq 1; then bzip2 -cdf "$i" | $grep $opt "$pat" r=$? else bzip2 -cdf "$i" | $grep $opt "$pat" | sed "s|^|${i}:|" r=$? fi test "$r" -ne 0 && res="$r" done exit $rescar
bzgrepserait alors un programme pouvant gérer les fichiers textes compressés avecbzip2, MAIS il y aurait un problème.
bzgrepNE reconnaîtrait PAS les fichiers textes ordinaires ou compressés avecgzip. C'est un gros problème ! Il faudrait alors compresser tous les fichiers textes avecbzip2pour utiliserbzgrep.Heureusement, il y a toujours une solution sous Linux. Tout ce qu'il nous reste à faire est de le modifier pour qu'il sache quel est le programme de décompression à utiliser et pour qu'il puisse lancer soit
gzip -cdfqsoitbzip2 -cdf.Changeons donc les dernières lignes pour qu'elles ressemblent à ça :
res=0 for i do case "$i" in *.bz2 ) if test $list -eq 1; then bzip2 -cdf "$i" | $grep $opt "$pat" > /dev/null && echo $i r=$? elif test $# -eq 1 -o $silent -eq 1; then bzip2 -cdf "$i" | $grep $opt "$pat" r=$? else bzip2 -cdf "$i" | $grep $opt "$pat" | sed "s|^|${i}:|" r=$? fi ;; * ) if test $list -eq 1; then gzip -cdfq "$i" | $grep $opt "$pat" > /dev/null && echo $i r=$? elif test $# -eq 1 -o $silent -eq 1; then gzip -cdfq "$i" | $grep $opt "$pat" r=$? else gzip -cdfq "$i" | $grep $opt "$pat" | sed "s|^|${i}:|" r=$? fi ;; esac test "$r" -ne 0 && res="$r" done exit $resEt nous avons enfin un programme bzgrep qui fonctionne.
Adaptation française: Eric Jacoboni
Page suivante Page précédente Table des matières