Bonsoir Marc,
Le 14/06/2012 13:07, marc.terrier@??? a écrit :
> Bonjour à tous,
>
> Y a-t-il un moyen, par une option de la commande "cp" ou par une propriété particulière du répertoire de destination, de
> faire en sorte qu'un fichier copié dans un répertoire hérite automatiquement du propriétaire et des permissions associées
> à ce répertoire cible ?
>
> De façon plus détaillée :
>
> Alice fait un "sudo su - bob", le temps de copier dans son répertoire personnel /home/Alice un fichier qui se
> trouve chez Bob, qui appartient à Bob, et sur lequel elle n'a aucun droit, même pas en lecture :
>
> Alice@machine:/home/Alice $ sudo su - bob
> Mot de passe de Alice :
>
> bob@machine:/home/bob $ ls -l
> -rw-r----- 1 bob bobgroup 10503 dec 13 2011 tititoto
>
> Pour pouvoir copier le fichier tititoto dans /home/Alice, à un moment où elle a l'identité de Bob, Alice a donné
> temporairement les droits d'écriture à tout le monde sur son propre répertoire home, avec un chmod 777 /home/Alice.
>
> bob@machine:/home/bob $ ls -l
> -rw-r----- 1 bob bobgroup 10503 dec 13 2011 tititoto
>
> bob@machine:/home/bob $ cp tititoto /home/Alice
>
> bob@machine:/home/bob $ ls -l /home/Alice
> -rw-r----- 1 bob bobgroup 10503 jun 14 12:36 tititoto
>
> Inconvénient : après copie, le fichier appartient toujours à Bob, Alice ne fait toujours pas partie du group "bobgroup",
> et ne peut donc pas consulter le contenu du fichier tititoto, alors même qu'elle vient de le copier chez elle. Elle peut
> juste voir qu'il a bien été copié. Elle ne peut même pas faire un "chmod" dessus pour s'accorder les droits qui vont bien.
> Il faut que ce soit Bob qui le fasse, et encore, ça ne marchera que tant qu'Alice aura laissé son répertoire /home/Alice
> accessible en écriture à Bob. De plus, ça ne s'appliquera qu'à ce fichier-là. Si, à l'avenir, Alice veut refaire la même
> copie avec un autre fichier tatatutu, le même problème se posera à nouveau.
>
> Merci d'avance de vos lumières.
1ère chose, ce n'est pas forcément une très bonne idée que de changer
les droits d'accès en o+w pour /home/alice .
En fait, Bob n'a besoin que d'un o-r,o+x /home/alice, et d'un o+rwx
/home/alice/share , afin de poser ses fichiers dans /home/alice/share
Exemple avec Bob=root et Alice=olivier
# mkdir /tmp/root/share
# find /tmp/root/ -ls
76943 0 drwxr-xr-x 3 root root /tmp/root/
76962 0 drwxr-xr-x 2 root root /tmp/root/share
# chmod o-r,o+x /tmp/root/
# chmod a+w /tmp/root/share
# find /tmp/root/ -ls
find /tmp/root/ -ls
76943 0 drwxr-x--x 3 root root /tmp/root/
76962 0 drwxrwxrwx 2 root root /tmp/root/share
Enfin, tu peux utiliser un soft appelé "inotify", lancé par Bob, qui va
se changer de changer les droits d'accès dans /home/alice/share, lorsque
Bob écrit des fichiers.
Dans un "screen" lancé une fois pour toute par Bob, lance :
inotifywait -mr --timefmt '%Y/%m/%d %H:%M:%S' --format '%T %w %f' -e
close_write,moved_to /home/alice/share | while read Date Time Dir File;
do chown alice:alice "$Dir/$File" ; echo "- $Date $Time ; done
Exemple avec ma machine :
# touch /tmp/root/share/test-03
# find /tmp/root/ -ls
76943 0 drwxr-x--x 3 root root /tmp/root/
76962 0 drwxrwxrwx 2 root root /tmp/root/share
83256 0 -rw-r--r-- 1 olivier olivier /tmp/root/share/test-03
80268 0 -rw-r--r-- 1 olivier olivier /tmp/root/share/test-02
71383 0 -rw-r--r-- 1 olivier olivier /tmp/root/share/test-01
Bien que ce soit root qui ait écrit les fichiers, ils appartiennent à
Olivier
Et le "screen" affiche en bonus un petit message de log :
- 2012/06/14 22:44:04 : test-03
- 2012/06/14 22:46:09 : test-01
- 2012/06/14 22:46:11 : test-02
Cordialement,
Olivier
--
~~~~~~~ _____/\_____ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix / _ \/ _ \ Olivier Allard-Jacquin
/ / \ / \ \ Web: http://olivieraj.free.fr/
/___/ / \ \___\ Mail: olivieraj@???
~~~~ ///// ///\\\ \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!