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 ?
Voici la ligne que j'ai mise dans /etc/fstab :
/dev/hda1 /mnt/win95 vfat umask=000,auto 1 1
L'astuce est dans le positionnement d'umask.
J'avais le même problème. Voici ce que j'ai mis dans mon /etc/fstab :
/dev/hda1 /dos vfat user,noauto 0 0
Je ne souhaite pas monter systématiquement ma partition /dos car je ne veux pas que ses fichiers soient pris en compte dans la base de données utilisée par locate. Mettre user pour cette partition fait que tout le monde peux la monter.
Mon fichier /etc/fstab contient cette ligne :
/dev/hda4 /f: vfat defaults,umask=007,gid=101 1 1
Cela 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
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) dos ont été choisis afin de ne pas être identiques à d'autres user id et group id présents dans /etc/passwd ou /etc/group.
Cette solution fonctionne avec Red Hat 5.1, vous devrez peut-être la modifier un peu si vous utilisez une autre distribution.
dos:*:63:63:MSDOS Accessor:/dos:
dos::63:root,ejy
/dev/hda1 /C vfat uid=63,gid=63,umask=007 0 0
Bien sûr, vous devez d'abord localiser vos partitions DOS. Vous pouvez le faire
sous le compte root à l'aide des commandes suivantes :
/sbin/fdisk -l
df
cat /etc/fstab
La commande fdisk -l énumère tous les disques disponibles. df montre
quels sont ceux qui sont montés et leurs occupations respectives. cat
/etc/fstab affiche 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.
mkdir /C
chown dos:dos /C
De cette façon, le disque C: est monté sur /C au démarrage. Seuls
root et ejy peuvent le lire et y écrire. Notez que vous pouvez aussi
mettre vfat à la place de msdos dans /etc/fstab afin de
gérer les partitions vfat16 (et vfat32 pour le noyau 2.0.34 et
supérieurs).
Pour avoir une signature différente à chaque fois que vous envoyez un courrier :
Créez un sous-répertoire ~/.signatures et copiez-y votre fichier .signature sous un nom visible. Supprimez le fichier ~/.signature et remplacez-le par un tube à l'aide de la commande :
mkfifo ~/.signature
Créez un script qui effectue un simple cat de chacun des fichiers du répertoire ~/.signatures dans 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
done
Faites 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 profile ou xsession). Ajoutez d'autres entrées à votre répertoire ~/.signatures et 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.
Si vous avez déjà utilisé zgrep avec des fichiers textes compressés par gzip, vous vous êtes sûrement rendu compte qu'il est très pratique. zgrep vous permet de faire des recherches d'expressions rationnelles dans un fichier texte, qu'il soit ou non compressé par gzip. 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.txt
Et, si vous recherchez le mot "lune", faire :
testing > zgrep -l lune *
cortes.txt
lost_world_10.txt.gz
moon10a.txt
Celà 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
zgrep ne reconnaît plus le fichier cortes.txt.bz2 comme étant un fichier compressé.
Nous avons donc besoin d'un nouveau programme bzgrep qui puisse reconnaître les fichiers textes compressés avec bzip2.
La meilleure façon de créer ce fichier consiste à modifier le fichier zgrep existant.
testing > locate zgrep
/usr/bin/zgrep
/usr/man/man1/zgrep.1
testing > su
password: opensesame
# cp /usr/bin/zgrep /usr/local/bin/bzgrep
Le fichier bzgrep est une copie du fichier zgrep qui 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 $res
car bzgrep serait alors un programme pouvant gérer les fichiers textes compressés avec bzip2, MAIS il y aurait un problème.
bzgrep NE reconnaîtrait PAS les fichiers textes ordinaires ou compressés avec gzip. C'est un gros problème ! Il faudrait alors compresser tous les fichiers textes avec bzip2 pour utiliser bzgrep.
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 -cdfq soit bzip2 -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 $res
Et nous avons enfin un programme bzgrep qui fonctionne.
-----------------------------------------------------------------
Adaptation française: Eric Jacoboni