OVH Cloud OVH Cloud

Partager des documents entre utilisateurs sur syst. de fichier unix

5 réponses
Avatar
Gauthier
Bonjour à tous,

J'aimerais avoir quelques avis sur la gestion des droits d'accès aux fichiers
sur un système Linux. Jusqu'à présent, j'ai utilisé Linux dans un cadre
familial où la séparation des répertoires /home allait de soi dans la
mesure où n'avions rien à partager, tout le monde appréciait
l'"étanchéité" entre utilisateurs.

Mais j'aimerais savoir comment procéder dans un cadre plus professionnel
où la majorité des documents devraient être accessibles à tous (et
modifiables) dans un répertoire partagé, les documents personnels dans les
répertoires home étant plutôt l'exception.

Soit par exemple la Slackware où le masque par défaut est 022 et le
groupe des utilisateurs users.
Chaque rép. personnel est interdit en lecture-écriture aux autres
utilisateurs.
Si un répertoire de partage est créé avec les droits rwx pour le groupe
users, cela permet à tous d'y créer/effacer des fichiers, mais pas de
les lire ou les modifier. Et si quelqu'un y crée un répertoire, il ne
sera pas non plus accessible aux autres.

Est-ce le masque par défaut de la Slackware qui n'est pas approprié pour
un tel usage (quel est-il sur d'autres distribs ?), et faut-il donc le
modifier (en 007 ?)

Ou y a t'il d'autres façons de procéder ?

Merci d'avance,
--
^^ Gauthier
(_____/°°-ç
| \_`-"
)/@mmm||
\nn \nn FOE-Belgium : http://www.amisdelaterre.be

5 réponses

Avatar
Pascal Bourguignon
Gauthier writes:

Bonjour à tous,

J'aimerais avoir quelques avis sur la gestion des droits d'accès aux fichiers
sur un système Linux. Jusqu'à présent, j'ai utilisé Linux dans un cadre
familial où la séparation des répertoires /home allait de soi dans la
mesure où n'avions rien à partager, tout le monde appréciait
l'"étanchéité" entre utilisateurs.

Mais j'aimerais savoir comment procéder dans un cadre plus professionnel
où la majorité des documents devraient être accessibles à tous (et
modifiables) dans un répertoire partagé, les documents personnels dans les
répertoires home étant plutôt l'exception.

Soit par exemple la Slackware où le masque par défaut est 022 et le
groupe des utilisateurs users.
Chaque rép. personnel est interdit en lecture-écriture aux autres
utilisateurs.
Si un répertoire de partage est créé avec les droits rwx pour le groupe
users, cela permet à tous d'y créer/effacer des fichiers, mais pas de
les lire ou les modifier. Et si quelqu'un y crée un répertoire, il ne
sera pas non plus accessible aux autres.

Est-ce le masque par défaut de la Slackware qui n'est pas approprié pour
un tel usage (quel est-il sur d'autres distribs ?), et faut-il donc le
modifier (en 007 ?)

Ou y a t'il d'autres façons de procéder ?



1- creer un groupe commun GRP.
2- mettre les utilisateurs dans ce groupe (/etc/group).
3- chgrp GRP DIR ; chmod 2770 DIR

A partir de la, les utilisateurs peuvent creer des fichiers et sous
repertoires dans DIR. Meme avec umask 022. Si un fichier doit etre
modifier par un autre utilisateur du groupe, le fait que le repertoire
soit en 770 lui permet de renomer/replacer le fichier cree par un
autre qu'il ne peut pas ecrire. C'est ce qui est fait normalement
automatiquement par les applications au moment de l'enregistrement...
Avec certains programmes, ou certains types de fichiers, il vaut mieux
cependant modifier l'umask afin que le fichier soit en 660 au lieu de
640: cas des fichiers modifiables sur place, tel les db. Il suffit de
faire attention a l'umask ou de modifier le mode a la creation de ces
fichiers.



--
__Pascal Bourguignon__ http://www.informatimago.com/
The rule for today:
Touch my tail, I shred your hand.
New rule tomorrow.

Avatar
Gauthier
Le 08 Jan 2005 02:04:03 +0100, Pascal Bourguignon a écrit:
1- creer un groupe commun GRP.
2- mettre les utilisateurs dans ce groupe (/etc/group).
3- chgrp GRP DIR ; chmod 2770 DIR

A partir de la, les utilisateurs peuvent creer des fichiers et sous
repertoires dans DIR. Meme avec umask 022. Si un fichier doit etre
modifier par un autre utilisateur du groupe, le fait que le repertoire
soit en 770 lui permet de renomer/replacer le fichier cree par un
autre qu'il ne peut pas ecrire. C'est ce qui est fait normalement
automatiquement par les applications au moment de l'enregistrement...
Avec certains programmes, ou certains types de fichiers, il vaut mieux
cependant modifier l'umask afin que le fichier soit en 660 au lieu de
640: cas des fichiers modifiables sur place, tel les db. Il suffit de
faire attention a l'umask ou de modifier le mode a la creation de ces
fichiers.



Merci,

D'après mes premiers essais, le problème est qu'avec des fichiers créés
en 640, un utilisateur ne peut rien écrire dans un répertoire créé par
un autre. Il faudrait donc qu'à chaque création d'un répertoire, le
créateur pense à faire un g+w.

Or, je crois souhaitable que lors des opérations sur les répertoires
partagés, personne n'ait à se soucier de ces problèmes.

Donc, il vaudrait mieux que l'umask soit à 0002 pour tous.

Le problème est alors cependant inversé dans la mesure où tous les
membres du groupe auraient accès (y compris pour effacer) aux répertoires
/home de tous, puisque par défaut ces répertoires ont comme groupe users.

Je m'y perd un peu...

Que pourrait-on faire alors pour préserver la confidentialité des
répertoires /home ? N'est-ce pas pour cela que la politique d'autres distribs
est de créer un groupe pour chaque utilisateur ?
--
^^ Gauthier
(_____/°°-ç
| _`-"
)/@mmm||
nn nn FOE-Belgium : http://www.amisdelaterre.be

Avatar
FAb
Gauthier writes:

Le 08 Jan 2005 02:04:03 +0100, Pascal Bourguignon a écrit:
1- creer un groupe commun GRP.
2- mettre les utilisateurs dans ce groupe (/etc/group).
--> un oubli c'est glissé ici. [1]


3- chgrp GRP DIR ; chmod 2770 DIR


D'après mes premiers essais, le problème est qu'avec des fichiers créés
en 640, un utilisateur ne peut rien écrire dans un répertoire créé par
un autre. Il faudrait donc qu'à chaque création d'un répertoire, le
créateur pense à faire un g+w.


[1] man newgrp

FAb


Avatar
Pascal Bourguignon
Gauthier writes:

Le 08 Jan 2005 02:04:03 +0100, Pascal Bourguignon a écrit:
1- creer un groupe commun GRP.
2- mettre les utilisateurs dans ce groupe (/etc/group).
3- chgrp GRP DIR ; chmod 2770 DIR

A partir de la, les utilisateurs peuvent creer des fichiers et sous
repertoires dans DIR. Meme avec umask 022. Si un fichier doit etre
modifier par un autre utilisateur du groupe, le fait que le repertoire
soit en 770 lui permet de renomer/replacer le fichier cree par un
autre qu'il ne peut pas ecrire. C'est ce qui est fait normalement
automatiquement par les applications au moment de l'enregistrement...
Avec certains programmes, ou certains types de fichiers, il vaut mieux
cependant modifier l'umask afin que le fichier soit en 660 au lieu de
640: cas des fichiers modifiables sur place, tel les db. Il suffit de
faire attention a l'umask ou de modifier le mode a la creation de ces
fichiers.



Merci,

D'après mes premiers essais, le problème est qu'avec des fichiers créés
en 640, un utilisateur ne peut rien écrire dans un répertoire créé par
un autre. Il faudrait donc qu'à chaque création d'un répertoire, le
créateur pense à faire un g+w.


Si. Essaye:

root# mkdir dir ; chmod 770 dir
user1% cd dir ; date > toto ; chmod 640 toto
user2% cd dir ; mv toto toto~ ; cat toto~ toto ; date >> toto

Cette manip: "mv toto toto~ ; cat toto~ toto ; date >> toto" est ce
qui est fait normalement par les applications qui mettent à jour un
document, en conservant une copie de sauvegarde. On n'a pas besoin du
droit d'écriture dans le fichier, seulement du droit d'écriture dans
le répertoire.

Or, je crois souhaitable que lors des opérations sur les répertoires
partagés, personne n'ait à se soucier de ces problèmes.

Donc, il vaudrait mieux que l'umask soit à 0002 pour tous.

Le problème est alors cependant inversé dans la mesure où tous les
membres du groupe auraient accès (y compris pour effacer) aux répertoires
/home de tous, puisque par défaut ces répertoires ont comme groupe users.


Non, tu peux mettre umask 002 par défaut, et régler les limites
d'accès au niveau des répertoires. Un fichier en 666, s'il se trouve
dans un répertoire 770 ne pourra être accédé que par le propriétaire
et les utilisateurs dans le même groupe du répertoire (tant qu'un lien
dur sur le fichier n'est pas ajouté hors de ce répertoire).

Mais un point important c'est que c'est aux utilisateurs de prendre en
charge ces gestions de droit! Dans une session de travail, ils
peuvent changer leur umask ou même le groupe dans lequel ils
travaillent (newgrp/sg).

Je m'y perd un peu...

Que pourrait-on faire alors pour préserver la confidentialité des
répertoires /home ? N'est-ce pas pour cela que la politique d'autres distribs
est de créer un groupe pour chaque utilisateur ?


chmod 700 /home/*

C'est une bonne idée de donner à chaque utilisateur son propre groupe,
comme groupe par défaut. Mais on peut avoir plusieurs groupes par
utilisateur. La relation entre un utilisateur et son groupe primaire
est inscrite dans /etc/passwd (champs uid:gid). Les relations entre
les utilisateurs et les groupes secondaires sont inscrites dans
/etc/group (champs gid::user1,user2,...usern).

Un utilisateur peut accéder aux éléments qui sont dans un de ses
groupes, primaire ou secondaire et dont le mode groupe le permet.

Sur certains file system unix (eg. ext2 linux), le flag g+s sur un
répertoire indique que les nouveaux éléments créés dans ce repertoire
doivent hériter le groupe du répertoire.

Sans ce flag, les nouveaux éléments sont créés avec le groupe actif de
l'utilisateur. L'utilisateur peut changer son groupe actif avec newgrp
ou sg (dans les limites de ses groupes primaire ou secondaires), afin
que les éléments qu'il va créer dans des répertoires g-s le soient
dans un groupe différent de son groupe primaire.


En résumé:

chmod 700 /home/*
echo umask 002 >> /etc/profile
mkdir /groupes/commun
chgrp commun /groupes/commun
chmod 2770 /groupes/commun
for user in $USER_IN_COMMUN ; do usermod -G commun,... $user ; done
mail -s 'Nouvel umask par defaut: 002' $ALL_USERS <<EOF
Attention, le umask par defaut est maintenant 002.
EOF

devrait donner les résultats voulus.


--
__Pascal Bourguignon__ http://www.informatimago.com/
Small brave carnivores
Kill pine cones and mosquitoes
Fear vacuum cleaner


Avatar
Gauthier
Le 08 Jan 2005 16:33:47 +0100, Pascal Bourguignon a écrit:
En résumé:

chmod 700 /home/*
echo umask 002 >> /etc/profile
mkdir /groupes/commun
chgrp commun /groupes/commun
chmod 2770 /groupes/commun
for user in $USER_IN_COMMUN ; do usermod -G commun,... $user ; done
mail -s 'Nouvel umask par defaut: 002' $ALL_USERS <<EOF
Attention, le umask par defaut est maintenant 002.
EOF

devrait donner les résultats voulus.


On va potasser tout ça.
Un grand merci,
--
^^ Gauthier
(_____/°°-ç
| _`-"
)/@mmm||
nn nn FOE-Belgium : http://www.amisdelaterre.be