OVH Cloud OVH Cloud

Verrouillage de fichiers sous Linux

5 réponses
Avatar
Tony GALMICHE
Bonjour,

J'ai un poste Linux utilisé comme serveur de terminaux (LTSP ou FreeNX).
Donc plusieurs personnes travaillent simultanément sur le même ordinateur.

Si deux personnes ouvrent le même fichier (ex : un fichier OpenOffice),
celui-ci n'est pas ouvert en lecture seule par la deuxième personne
alors que sous Windows c'est le cas. Cela est gênant, car c'est la
dernière personne qui aura enregistré le fichier qui aura gagné :-) sans
que l'autre personne en soit informé.

Existe-il une option quelque part permettant d'activer le verrouillage
des fichiers pour remédier à ce problème ?

Avec Samba, il existe bien l'option "locking = yes", mais dans mon cas,
je ne passe pas par un partage de fichiers, mais par un accès directe
aux fichiers enregistrés sur le serveur de terminaux sur une partition ext3

Merci d'avance.

Tony



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

5 réponses

Avatar
Glennie Vignarajah
--nextPart5301321.FDXRQOMLQ3
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Le Tuesday 19 September 2006 11:45, Tony GALMICHE(Tony GALMICHE
) a écrit:
Bonjour,



Bonsoir,


Existe-il une option quelque part permettant d'activer le
verrouillage des fichiers pour remédier à ce problème ?



Il y a une option de montage : mand pour 'mandatory locking'
(mount -o mand ). Je crois qu'il faut quand même que l'appli.
utilise l'appel système qui va bien. Essayez cette option on sait
jamais...
A+
--
Glennie
"Qui veut faire quelque chose trouve un moyen, qui ne veut rien faire
trouve une excuse."

--nextPart5301321.FDXRQOMLQ3
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)

iQEVAwUARRBLZ9HiioqkksXaAQIgxwf/cTkQY+3eG2q/fgXawU8dn5KRUwCBBgyG
Ct8urIg4yHiX0hOjqmim7F9lpd6b7bAiTg5ABmIh1UJsGpJb/9byAEmlROySguI9
cNSQs4WOj+dVrkkoPqK28a7PQWzyPTNu7fwcuOR8Cp+pIMmIi+m0wpSuwOOFb4GL
Um4BV+CKx/ZpFs70pYSSJ03TQ9Huy8VAFfqM7n8RIMXbkqfVdvynKmJ8CvOAAP2W
Nra25QzplJ8ceAdK8hZpa8iQ7HOkwZ2dq/bsjekGDGQdE6oO7lsGlTwUDOpTl81U
aOkDxj1fSVOw0UzulNBQBJicgo7qNv6RgQsuX4L16J4/dBFuFh3ecQ= =+mjf
-----END PGP SIGNATURE-----

--nextPart5301321.FDXRQOMLQ3--


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Sylvain Sauvage
Mardi 19 septembre 2006, 11:45:19 CEST, Tony GALMICHE a écrit :

Bonjour,



'soir,

[...]
Existe-il une option quelque part permettant d'activer le verrouillage
des fichiers pour remédier à ce problème [de partage de fi chiers en
écriture] ?



Réponse courte : Oui, mais en fait non.

Réponse longue :

Il existe des mécanismes Unix/POSIX pour verrouiller des fichiers ou
des morceaux de fichiers (c'est sans doute ceux que Samba utilise), mais :
— rares sont les applications qui s'en servent ;
— par défaut, ces verrous ne sont pas obligatoires : les proce ssus
doivent coopérer.

Pour rendre ces verrous obligatoires, mount a l'option « mand ».
(Samba étant la seule application à servir les fichiers partagà ©s, elle
honore ses propres verrous.)

Ensuite, pour les fichiers pour lesquels on veut que les verrous soient
obligatoires doivent être marqués par un droit spécial, qui, normalement,
ne veut rien dire : g+s,g-x (s ne veut rien dire sans x) :

# mount -o remount,mand /home
$ chmod g+s,g-x toto

et si un processus verrouille toto, le verrou sera obligatoire.

Chouette ! ... ben non : cela ne fonctionne que _si_ un processus pose un
verrou ! Et de nombreuses applications n'en posent pas, ou bien,
simplement, mettent le fichier en mémoire et le ferment aussitôt.

Scénario de contournement d'un verrou :
1. A ouvre un fichier, met un verrou partagé (= on peut lire mais p as
écrire) ;
2. B ouvre le même fichier, en lecture seule à cause du/grâ ce au verrou,
le met en mémoire, puis le ferme ;
–. A et B manipulent le _document_ (pas le fichier, en tout cas pa s B) ;
3. A ferme le fichier, lâche le verrou ;
4. B écrase le fichier à la sauvegarde.

Si les étapes 3 et 4 sont inversées :
— soit B est bloqué tant que A n'a pas lâché le verr ou ;
(Je viens de tester avec oowriter et kword : oowriter est A, kword est
B. Quand kword essaie de sauver : il est bloqué/figé jusqu' à ce que
oowriter ferme le fichier. Ça peut surprendre un utilisateur...)
— soit B est malin : il vérifie la présence d'un verrou e t prévient.

(Et si j'ai utilisé oowriter, c'est bien parce que c'est une des rares
applications à poser un verrou.)

Même les verrous de Samba n'empêchent pas ce scénario :
1. A ouvre, lit, met en mémoire, ferme ;
2. B ouvre, lit, met en mémoire, ferme ;
3. A écrase ;
4. B écrase.

Pour les utilisateurs, le _document_ est resté ouvert. Pour le syst ème
de fichiers, le _fichier_ correspondant a été ouvert/fermé p ar un seul
processus à la fois.

Donc, en fait, c'est ingérable au niveau du système de fichiers . C'est
au niveau de l'application que cela doit se faire (et ce n'est
généralement pas le cas).

--
Sylvain Sauvage
Avatar
Basile STARYNKEVITCH
Le Tue, Sep 19, 2006 at 11:45:19AM +0200, Tony GALMICHE écrivait/wrote:
Bonjour,

J'ai un poste Linux utilisé comme serveur de terminaux (LTSP ou FreeNX).
Donc plusieurs personnes travaillent simultanément sur le même ordinateur.



Si deux personnes ouvrent le même fichier (ex : un fichier OpenOffice),
[...]



En pratique, sous Unix, il ne faut pas chercher à syncrhoniser sur un
fichier (comme d'autres l'ont bien expliqué sur cette liste), mais utiliser
plutot des outils de gestion de version pour ça, par exemple SubVersion (qui
permet le travail collaboratif par fichier). http://subversion.tigris.org/
pour les détails (ou tout bon livre sur svn)

En pratique un versionneur gère un dépot et les utilisateurs y déposent ou y
prennent leur fichier (pour travailler sur leur propre copie).



--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net
aliases: basile<at>tunes<dot>org = bstarynk<at>nerim<dot>net
8, rue de la Faïencerie, 92340 Bourg La Reine, France


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Tony GALMICHE
Bonjour Sylvain,

Je suis toujours aussi impressionné par tes réponses très complètes et
très techniques :-)

Sylvain Sauvage a écrit :
Mardi 19 septembre 2006, 11:45:19 CEST, Tony GALMICHE a écrit :

Bonjour,




'soir,


[...]
Existe-il une option quelque part permettant d'activer le verrouillage
des fichiers pour remédier à ce problème [de partage de fichiers en
écriture] ?




Réponse courte : Oui, mais en fait non.

Réponse longue :

Il existe des mécanismes Unix/POSIX pour verrouiller des fichiers ou
des morceaux de fichiers (c'est sans doute ceux que Samba utilise), mais :
— rares sont les applications qui s'en servent ;
— par défaut, ces verrous ne sont pas obligatoires : les processus
doivent coopérer.



Je comprend, donc c'est pas simple et c'est pas gagné.

Pour rendre ces verrous obligatoires, mount a l'option « mand ».
(Samba étant la seule application à servir les fichiers partagés, elle
honore ses propres verrous.)

Ensuite, pour les fichiers pour lesquels on veut que les verrous soient
obligatoires doivent être marqués par un droit spécial, qui, normalement,
ne veut rien dire : g+s,g-x (s ne veut rien dire sans x) :

# mount -o remount,mand /home
$ chmod g+s,g-x toto



Et comment faire pour que tous les nouveaux fichiers créés par mes
utilisateurs comporte cette marque mais sans perturber le reste du système.

De plus, cette option de montage spéciale, ne risque t-elle pas de
perturber le reste du système en vérouillant des fichiers et empêchant
par exemple l'installation de nouveaux paquets si des fichiers sont
vérouillés ?

et si un processus verrouille toto, le verrou sera obligatoire.

Chouette ! ... ben non : cela ne fonctionne que _si_ un processus pose un
verrou ! Et de nombreuses applications n'en posent pas, ou bien,
simplement, mettent le fichier en mémoire et le ferment aussitôt.

Scénario de contournement d'un verrou :
1. A ouvre un fichier, met un verrou partagé (= on peut lire mais pas
écrire) ;
2. B ouvre le même fichier, en lecture seule à cause du/grâce au verrou,
le met en mémoire, puis le ferme ;
–. A et B manipulent le _document_ (pas le fichier, en tout cas pas B) ;
3. A ferme le fichier, lâche le verrou ;
4. B écrase le fichier à la sauvegarde.

Si les étapes 3 et 4 sont inversées :
— soit B est bloqué tant que A n'a pas lâché le verrou ;
(Je viens de tester avec oowriter et kword : oowriter est A, kword est
B. Quand kword essaie de sauver : il est bloqué/figé jusqu'à ce que
oowriter ferme le fichier. Ça peut surprendre un utilisateur...)
— soit B est malin : il vérifie la présence d'un verrou et prévient.

(Et si j'ai utilisé oowriter, c'est bien parce que c'est une des rares
applications à poser un verrou.)



Justement, mon problème concerne dans 95% des cas uniquement des
fichiers OOo (version 1.1.5). Donc si cela marche déjà avec OOo, ce sera
déjà très bien.

Même les verrous de Samba n'empêchent pas ce scénario :
1. A ouvre, lit, met en mémoire, ferme ;
2. B ouvre, lit, met en mémoire, ferme ;
3. A écrase ;
4. B écrase.

Pour les utilisateurs, le _document_ est resté ouvert. Pour le système
de fichiers, le _fichier_ correspondant a été ouvert/fermé par un seul
processus à la fois.

Donc, en fait, c'est ingérable au niveau du système de fichiers. C'est
au niveau de l'application que cela doit se faire (et ce n'est
généralement pas le cas).



OK, mais si ça marche pour OOo, c'est déjà mieux que rien.

Merci beaucoup pour la réponse.

A bientôt.

Tony


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Sylvain Sauvage
Mercredi 20 septembre 2006, 08:36:28 CEST, Tony GALMICHE a écrit :

Bonjour Sylvain,



'jour,

[...]
> # mount -o remount,mand /home
> $ chmod g+s,g-x toto
>
Et comment faire pour que tous les nouveaux fichiers créés par mes
utilisateurs comporte cette marque mais sans perturber le reste du
système.



Je pensais à umask, mais il ne comprend pas ‛s’...

De plus, cette option de montage spéciale, ne risque t-elle pas de
perturber le reste du système en vérouillant des fichiers et em pêchant
par exemple l'installation de nouveaux paquets si des fichiers sont
vérouillés ?



Si. Quand un fichier est ouvert, plus personne ne peut le modifier (ou
même le lire, suivant le verrou utilisé).

Sous Windows, où le verrouillage de fichiers est obligatoire et plus
fréquemment utilisé, il semble que des mécanismes ont é té mis en place
pour permettre à des applications particulières (snapshot, backup s) de
lire les fichiers.

[...]
> (Et si j'ai utilisé oowriter, c'est bien parce que c'est une des r ares
> applications à poser un verrou.)
>
Justement, mon problème concerne dans 95% des cas uniquement des
fichiers OOo (version 1.1.5). Donc si cela marche déjà avec OOo , ce
sera déjà très bien.



Fais des tests avant. Je n'ai pas testé 2 OOo sur le même fichi er.
Le fait que Kword reste bloqué (plus de rafraîchissement de l'à ©cran)
jusqu'à ce que OOo soit fermé n'est pas très user-friendly ( sans compter
qu'il écrase quand même le fichier après). Je ne sais pas co mment OOo
réagit en face d'un autre OOo (pour être plus sûr, il faudra it tester
avec des utilisateurs différents pour les deux processus).

[...]
> Donc, en fait, c'est ingérable au niveau du système de fich iers.
> C'est au niveau de l'application que cela doit se faire (et ce n'est
> généralement pas le cas).
>
OK, mais si ça marche pour OOo, c'est déjà mieux que rien.

Merci beaucoup pour la réponse.



Étant donné qu'il faut explicitement faire un chmod, comme l'a dit
Basile, un dépôt svn/cvs/.../webdav serait une meilleure solution.

Le top du top, ce serait un fuse sur un svn. Il y a quelques projets
(svnfs, cvsfs, wayback) mais ils ont tous l'air d'avoir été aband onnés
(2002–2004).

En tout cas, les systèmes de fichiers « versionnisés  » sont au goût du
jour (zfs, p.ex.).

--
Sylvain Sauvage