OVH Cloud OVH Cloud

Problème de droit

10 réponses
Avatar
Bruno-L
Bonjour à tous,

Je veux créer un répertoire 'Archives' sur mon serveur Samba, de telle
manière que l'on puisse y ajouter des fichiers/répertoires, puis les
lire mais pas les modifier/supprimer/déplacer.

j'ai donc mis tous les fichiers en 440 (on ne peut donc que les lire) et
les répertoires en 770 (pour permettre d'y ajouter fichiers et répertoires.

je constate qu' (en toute logique d'ailleurs) on peut modifier le nom du
répertoire. Ce qui ne me convient pas.

quelqu'un voit il un moyen d'interdire le renomage de répertoire tout en
y autorisant l'ajout de fichiers ?


Merci d'avance


--
Bruno <http://graphitesurcellulose.hautetfort.com>

10 réponses

Avatar
Pascal Bourguignon
Bruno-L writes:

Bonjour à tous,

Je veux créer un répertoire 'Archives' sur mon serveur Samba, de telle
manière que l'on puisse y ajouter des fichiers/répertoires, puis les
lire mais pas les modifier/supprimer/déplacer.

j'ai donc mis tous les fichiers en 440 (on ne peut donc que les lire)
et les répertoires en 770 (pour permettre d'y ajouter fichiers et
répertoires.

je constate qu' (en toute logique d'ailleurs) on peut modifier le nom
du répertoire. Ce qui ne me convient pas.

quelqu'un voit il un moyen d'interdire le renomage de répertoire tout
en y autorisant l'ajout de fichiers ?


Réfléchis trente secondes: où est enregistré le nom du répertoire?

--
__Pascal Bourguignon__ http://www.informatimago.com/

COMPONENT EQUIVALENCY NOTICE: The subatomic particles (electrons,
protons, etc.) comprising this product are exactly the same in every
measurable respect as those used in the products of other
manufacturers, and no claim to the contrary may legitimately be
expressed or implied.

Avatar
manu
Bruno-L wrote:

quelqu'un voit il un moyen d'interdire le renomage de répertoire tout en
y autorisant l'ajout de fichiers ?


Je ferais un petit programme en C qui serait set-UID sur un usager
adequat pour ajouter des fichiers au repertoire et qui appellera cp en
sous main après avoir validé que l'UID réel a bien le droit de lire le
fichier qu'il veut deplacer, que ce fichier en est bien un, et tout ce
genre de chose...

Un truc du genre ca (pas compilé, pas testé. Y'aura peut être un
problème à prévoir avec le repertoire courrant)

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <err.h>
#include <sysexits.h>
#include <sys/stat.h>

#define OUTPUT_DIR "/var/tmp/truc"
#define _BIN_CP "/bin/cp"
int
main(argc, argv)
int argc;
char **argv;
{
struct stat st;
char *ap[] = { _BIN_CP, NULL, OUTPUT_DIR, NULL };
char *ep[] = { NULL };

if (argc != 2)
errx(EX_USAGE, "usage: %s filename", argv[0]);

if (access(argv[1], R_OK) != 0)
err(EX_NOPERM, "unable to read "%s"", argv[1]);

if (stat(argv[1], &st) != 0)
err(EX_OSERR, "stat failed on "%s"", argv[1]);

if (st.st_mode & S_IFMT != S_IFREG)
errx(EX_NOPERM, ""%s" is not a plain file", argv[1]);

ap[1] = argv[1];
(void)execve(_BIN_CP, ap, ep);
err(EX_OSERR, "%s %s %s failed", _BIN_CP, argv[1], OUTPUT_DIR);

/* NOTREACHED */
return EX_SOFTWARE;
}

--
Emmanuel Dreyfus
Publicité subliminale: achetez ce livre!
http://www.eyrolles.com/Informatique/Livre/9782212114638/livre-bsd.php


Avatar
vincent.verdon
Bonsoir,
il est peut-être envisageable d'utiliser le paramètre postexec de Samba
et de créer un script qui change les droits sur les fichiers et
répertoires de l'utilisateur en sortant du partage Samba. Evidemment,
cela nécessite de scanner la totalité du répertoire archives à chaque
fois, ce qui peut-être un inconvénient si ce partage est très utilisé et
contient beaucoup de données.

Amicalement, Vincent Verdon



Bonjour à tous,

Je veux créer un répertoire 'Archives' sur mon serveur Samba, de telle
manière que l'on puisse y ajouter des fichiers/répertoires, puis les
lire mais pas les modifier/supprimer/déplacer.

j'ai donc mis tous les fichiers en 440 (on ne peut donc que les lire) et
les répertoires en 770 (pour permettre d'y ajouter fichiers et répertoires.

je constate qu' (en toute logique d'ailleurs) on peut modifier le nom du
répertoire. Ce qui ne me convient pas.

quelqu'un voit il un moyen d'interdire le renomage de répertoire tout en
y autorisant l'ajout de fichiers ?


Merci d'avance




Avatar
Bruno-L
Bruno-L writes:



quelqu'un voit il un moyen d'interdire le renomage de répertoire tout
en y autorisant l'ajout de fichiers ?



Réfléchis trente secondes: où est enregistré le nom du répertoire?



dans /répertoire/. ?

je donne ma langue au chat ;-)
blagues à part, je ne suis pas informaticien.
où est enregistré le nom du répertoire?

merci ;-)

--
Bruno <http://graphitesurcellulose.hautetfort.com>


Avatar
Bruno-L
Bruno-L wrote:


quelqu'un voit il un moyen d'interdire le renomage de répertoire tout en
y autorisant l'ajout de fichiers ?



Je ferais un petit programme en C qui serait set-UID sur un usager
adequat pour ajouter des fichiers au repertoire et qui appellera cp en
sous main après avoir validé que l'UID réel a bien le droit de lire le
fichier qu'il veut deplacer, que ce fichier en est bien un, et tout ce
genre de chose...



merci beaucoup pour le temps passé là-dessus, mais c'est un peu
(beaucoup) trop compliqué pour moi,,,

--
Bruno <http://graphitesurcellulose.hautetfort.com>


Avatar
Bruno-L
Bonsoir,
il est peut-être envisageable d'utiliser le paramètre postexec de Samba
et de créer un script qui change les droits sur les fichiers et
répertoires de l'utilisateur en sortant du partage Samba. Evidemment,
cela nécessite de scanner la totalité du répertoire archives à chaque
fois, ce qui peut-être un inconvénient si ce partage est très utilisé et
contient beaucoup de données.



c'est intéressant tiens comme solution.
mais ca ne résoud pas mon problème (enfin pas que je sache): lorsque les
répertoires sont writable, on peut changer son nom.

en fait le problème sont les sous-répertoires:

- archive (partage samba)
-- Dossier 235
: --- client
: --- founisseur
: --- ...
-- Dossier 452
--- ...

je ne veux pas que quelqu'un puisse changer le nom du dossier
'fournisseur' mais puisse y ajouter des fichiers.

ou alors (certainement le plus simple), je dois interdire tous ajout
dans l'arboressance, mais autoriser l'ajout uniquement à la racine du
partage,,, (de toutes façon l'archivage se fait par dossier)

et là, bingo, le nom de partage est figé.

merci à tous, je vais essayer cela :-)


--
Bruno <http://graphitesurcellulose.hautetfort.com>

Avatar
Bruno-L

Bruno-L writes:



quelqu'un voit il un moyen d'interdire le renomage de répertoire tout
en y autorisant l'ajout de fichiers ?




Réfléchis trente secondes: où est enregistré le nom du répertoire?



dans /répertoire/. ?


tu proposes de travailler avec les partages samba ?
je crois alors que j'ai une solution (voir ma réponse à Vincent Verdon)



--
Bruno <http://graphitesurcellulose.hautetfort.com>



Avatar
Pascal Bourguignon
Bruno-L writes:

Bruno-L writes:



quelqu'un voit il un moyen d'interdire le renomage de répertoire tout
en y autorisant l'ajout de fichiers ?
Réfléchis trente secondes: où est enregistré le nom du répertoire?




dans /répertoire/. ?

je donne ma langue au chat ;-)
blagues à part, je ne suis pas informaticien.
où est enregistré le nom du répertoire?

merci ;-)



Le nom du répertoire est enregistré dans le répertoire parent!

Ainsi, si tu veux interdir le renomage d'un répertoire, il suffit
d'interdir le droit d'écriture du répertoire parent.


$ mkdir da da/db
$ chmod 555 da
$ chmod 755 da/db
$ touch da/fa
touch: cannot touch `da/fa': Permission denied
$ touch da/db/fb
$ mv da/db da/dc
mv: cannot move `da/db' to `da/dc': Permission denied
$

--
__Pascal Bourguignon__ http://www.informatimago.com/

NEW GRAND UNIFIED THEORY DISCLAIMER: The manufacturer may
technically be entitled to claim that this product is
ten-dimensional. However, the consumer is reminded that this
confers no legal rights above and beyond those applicable to
three-dimensional objects, since the seven new dimensions are
"rolled up" into such a small "area" that they cannot be
detected.



Avatar
Bruno-L


Le nom du répertoire est enregistré dans le répertoire parent!

Ainsi, si tu veux interdir le renomage d'un répertoire, il suffit
d'interdir le droit d'écriture du répertoire parent.




ok!
mais le principe est de pouvoir ajouter des fichiers dans le répertoire
parent aussi, sans pouvoir modifier le nom des sous-répertoires ;-(


--
Bruno <http://graphitesurcellulose.hautetfort.com>

Avatar
Pascal Bourguignon
Bruno-L writes:


Le nom du répertoire est enregistré dans le répertoire parent!
Ainsi, si tu veux interdir le renomage d'un répertoire, il suffit
d'interdir le droit d'écriture du répertoire parent.



ok!
mais le principe est de pouvoir ajouter des fichiers dans le
répertoire parent aussi, sans pouvoir modifier le nom des
sous-répertoires ;-(


Ça ce n'est pas possible, au niveau des droits d'accès unix standard.

Si ton filesystem supporte les ACL, ou autre extensions, c'est peut
être faisable avec elles.

--
__Pascal Bourguignon__ http://www.informatimago.com/

"Specifications are for the weak and timid!"