Ecriture mais pas suppression

Bonjour à tous

J’aimerais définir un répertoire commun à plusieurs utilisateurs, dans lequel ils pourraient tous écrire et voir le contenu, mais pas supprimer les fichiers qui sont dedans (ceux qui existent déjà comme ceux qu’il ont rajouté eux-mêmes).

Comment puis-je faire ça ?

Merci d’avance

TNTprog

Créer un groupe. Inscrire les utilisateurs dans le groupe.

Mais je leur donne quels droits ? Car je ne veux pas que la personne qui a mis le fichier dans le répertoire puisse supprimer son fichier.
Donc si je crée un groupe “boulot” par exemple, avec juste un droit en lecture, et les utilisateurs A et B appartenant à ce groupe, et que je définis le répertoire “monrep” comme appartenant au groupe “boulot”, A et B pourront lire les fichiers mais pas les supprimer. Mais ils ne pourront pas non plus écrire dans le répertoire, si ??

EDIT : quel est le différence entre “x” et “r” pour un répertoire ?? Je n’ai pas compris la subtilité.
EDIT 2 : j’ai compris la subtilité, dans le cas de la lecture on peut juste obtenir le listing des fichiers, tandis que dans le cas de l’exécution on peut définir le répertoire comme étant le répertoire courant.

Il faut que tes utilisateurs possèdent le droits de lecture et d’écriture sur le répertoire.
Par contre un utilisateur peut lui même interdire le droit d’écriture aux membres du groupe sur les fichiers qu’il a crée.

À ma connaissance un utilisateur pourra toujours supprimer ces fichiers puisque c’est lui qui décide les permissions sur ses fichiers.

Ce genre de question se pose plutot dans la section “support”. Je bascule le fil, ça te donnera plus de chances d’avoir une réponse.

Je pensais qu’en couplant l’appartenance à un groupe indiquée par dmon avec les “extended attributes” du format ext (man chattr) tu pourrait définir ton répertoire comme “sans suppression possible”, car j’ai vu ce genre de réglage plus d’une fois par exemple pour des partages samba, mais malheureusement, je n’ai pas trouvé d’attribut qui fasse ça.

Peut être en mettant une surveillance sur le répertoire (fam ou gamin doivent faire ça), et en activant l’attribut ‘a’ (append only) sur tous les fichiers créés ?

Pas d’autre idée…

Je ne sais pas si c’est vraiment ce que tu cherches, mais tu peux définir certains droits pour le repertoire et d’autres les fichiers.L’inconvénient est que ceux-ci ne seront plus accessibles en écriture.
Une autre piste pourrait être celle des ACL.

+1 pour les ACLs , je me suis une fois légèrement pencher la dessus (très légèrement). C’est pas un trucs à faire à la légere. C’est du costaud et à mon avis il faut bien réfléchir avant de mettre cela en place.

google.be/linux?hl=fr&q=ACL& … cher&meta=

Sinon il existe une méthode pour les suppression de fichier, le backup. Peut être plus contraignante à gérer (restore et cie) mais beaucoup moins lourd à mettre en place.

J’ai regardé du côté de “setgid” (et “setuid”) ainsi que le Sticky Bit, mais aucun ne permet de faire concrètement ce que je veux.

J’avais lu qu’il était possible de changer le propriétaire d’un fichier en le “donnant” à quelqu’un d’autre. Dans ce cas ce que je cherche serait possible puisque celui qui écrit dans le répertoire en question perdrait ensuite son statut de propriétaire sur le fichier et ne pourrait alors plus le modifier.

Salut,

Idée générale :

Pour chaque fichier créer un lien “physique” appartenant a root (voir cron).
Ainsi le créateur du fichier s’il supprime le fichier n’a supprimé que son entrée, pas celle de root :smiley:

Bon, je viens de regarder dans mon bouquin, et j’ai retrouvé la commande qui permet de changer le propriétaire d’un fichier :

et pour changer de groupe :

Ainsi, il faut que je configure un truc pour faire en sorte de modifier automatiquement le propriétaire et le groupe quand un fichier est écrit dans le répertoire. Est-ce que quelqu’un sait comment je peux automatiser un truc pareil ?? Perso je n’en ai pas la moindre idée, mais je pense que c’est faisable !

Merci beaucoup

Si tu lisais les réponses qu’on te donne au lieu de parler tout seul…
Avec l’outil standard chmod (qui complète chown et chgrp - ainsi qu’umask d’ailleurs), il est impossible d’interdire la suppression sans interdire aussi la modification. yoshi et ludo t’ont donné AMA une meilleure piste avec les ACL.

Bonjour,

Ces deux assertions se contredisent, écrire suppose le droit de modifier :smiley:

[quote=“ggoodluck47”]Bonjour,

Ces deux assertions se contredisent, écrire suppose le droit de modifier :smiley:[/quote]
Oui, en fait quand je dis modifier c’est créer un nouveau fichier, insérer un fichier dans un répertoire, pas modifier les fichiers déjà existants puisque mon but est justement de bloquer la modification des fichiers présents dans le répertoire. Je veux dans un premier temps que les utilisateurs puissent insérer un nouveau fichier dans un répertoire, mais ni le modifier ni le supprimer par la suite.
C’est bien parce que je sais que ça n’est pas faisable d’un coup comme ça que je demande ici.

[quote]Si tu lisais les réponses qu’on te donne au lieu de parler tout seul…
Avec l’outil standard chmod (qui complète chown et chgrp - ainsi qu’umask d’ailleurs), il est impossible d’interdire la suppression sans interdire aussi la modification. yoshi et ludo t’ont donné AMA une meilleure piste avec les ACL.[/quote]
J’ai bien lu mais : je veux dans un premier temps autoriser la création d’un nouveau fichier dans un répertoire, puis interdire dans un second temps sa modification et sa suppression. On pourrait résumer ça en disant que les utilisateurs ont sur le répertoire en droit en lecture seule avec en supplément un droit de créer des nouveaux fichiers dans ce répertoire. Rien de plus.

Re,

Faire un lien physique sur un fichier équivaut à avoir pour un fichier deux points d’entrée (physiques et non pas logiques). Si l’un de ces deux points ne m’appartient pas je ne peux donc pas le supprimer.

Il me semble que le sticky bit fait ça:

bling:/tmp# ls > toto bling:/tmp# chmod 777 toto bling:/tmp# exit francois@bling:~$ cd /tmp francois@bling:/tmp$ ls -ltr toto -rwxrwxrwx 1 root root 147 2008-07-16 17:46 toto francois@bling:/tmp$ echo blop > toto francois@bling:/tmp$ cat toto blop francois@bling:/tmp$ echo pouet > toto francois@bling:/tmp$ cat toto pouet francois@bling:/tmp$ rm toto rm: ne peut enlever `toto': Opération non permise francois@bling:/tmp$ ls -l toto -rwxrwxrwx 1 root root 6 2008-07-16 17:47 toto francois@bling:/tmp$ ls -ld . drwxrwxrwt 8 root root 73728 2008-07-16 17:46 . francois@bling:/tmp$

Tien à propos y’a pas de samba qui viens se mêer à tout cela ? C’est un partage NFS ?

[quote=“fran.b”]Il me semble que le sticky bit fait ça:

bling:/tmp# ls > toto bling:/tmp# chmod 777 toto bling:/tmp# exit francois@bling:~$ cd /tmp francois@bling:/tmp$ ls -ltr toto -rwxrwxrwx 1 root root 147 2008-07-16 17:46 toto francois@bling:/tmp$ echo blop > toto francois@bling:/tmp$ cat toto blop francois@bling:/tmp$ echo pouet > toto francois@bling:/tmp$ cat toto pouet francois@bling:/tmp$ rm toto rm: ne peut enlever `toto': Opération non permise francois@bling:/tmp$ ls -l toto -rwxrwxrwx 1 root root 6 2008-07-16 17:47 toto francois@bling:/tmp$ ls -ld . drwxrwxrwt 8 root root 73728 2008-07-16 17:46 . francois@bling:/tmp$ [/quote]
Mais puisque je vous dit que je veux interdire la suppression et la modification :smt006
Il faudrait en plus de ce qui est affiché ci-dessus obtenir un message d’erreur quand on fait :

$ echo blop > toto Erreur : t'as ni le droit de modifier, ni le droit de supprimer mon pote, tu as perdu le contrôle du fichier toto à tout jamais, niarkniarkniark !

A priori non, disons que je n’en suis pas encore là.

un mot de 3 lettre cité 3x dans ce post [size=200]ACL[/size]

Si samba interviens n’oublie pas de le prendre en compte.

Aller 2 liens pour la forme:
linuxplusvalue.be/mylpv.php?id=153
linux-france.org/~fclerc/art … l-xfs.html