Vi modifie le propriétaire d'un fichier

Fermé
espkh2 Messages postés 5 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 22 novembre 2010 - 13 nov. 2008 à 11:28
espkh2 Messages postés 5 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 22 novembre 2010 - 14 nov. 2008 à 08:37
Bonjour,
Je m’interroge sur le fonctionnement lié au « propriétaire » d’un fichier.
Voilà la petite manipulation que j’ai réalisée (Mandrake et CentOS):

Créer un répertoire avec full accès :
[essai@PC / ]$ ls -ld /directory
drwxrwxrwx 9 root root 4096 nov 13 10:14 directory/

Un utilisateur (essai) crée un fichier dans ce répertoire :
[essai@PC /]$ cd / directory
[essai@PC directory]$ touch fichier_essai
[essai@PC directory]$ ls -l
-rw-rw-r-- 1 essai essai 0 nov 13 10:21 fichier_essai

Un autre utilisateur (test) modifie le fichier avec vi
[test@PC directory]$ vi fichier_essai
Modification du fichier
Vi dit que le fichier est protégé en écriture, mais en forçant la modification ( :wq !) ça passe

Il en résulte que le propriétaire du fichier a changé.
[test@PC directory]$ ls –l
-rw-rw-r-- 1 test test 6 nov 13 10:23 fichier_ essai
-rw-r--r-- 1 test test 0 nov 13 10:21 fichier_ essai ~


En principe, l’utilisateur test ne devrait rien pouvoir modifier du fichier fichier_essai car les permissions sont rw-rw-r--.

Je comprends que l’utilisateur puisse effacer le fichier fichier_essai du répertoire car le répertoire est en rwx pour tout le monde, donc il est possible à l’utilisateur de modifier le contenu du répertoire, donc d’effacer le nom du fichier de la liste des fichiers contenu dans le répertoire.

Par contre, je ne comprends pas par quel mécanisme le propriétaire a pu être modifié.
Quelqu’un a une idée ?

P.S. Je sais que ce n’est pas une bonne idée de placer des répertoires en rwx rwx rwx, on peut jouer sur les groupes, le sticky bit, etc.
A voir également:

6 réponses

dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
13 nov. 2008 à 11:48
hello
est ce que test et essai ont le même uid ?
egrep 'test|essai' /etc/passwd /etc/group
0
espkh2 Messages postés 5 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 22 novembre 2010
13 nov. 2008 à 12:26
Salut,
Je n'y avais pas pensé sur le coup, mais non. Pas le même UID, ils ne sont pas non plus membres du même groupe

egrep 'test|essai' /etc/passwd /etc/group
/etc/passwd:essai:x:502:502::/home/essai:/bin/bash
/etc/passwd:test:x:503:503::/home/test:/bin/bash
/etc/group:essai:x:502:
/etc/group:test:x:503:

Merci, ça élimine déjà une possibilité.
0
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
13 nov. 2008 à 14:33
extrait de la doc vim
:w[rite]! Like ":write", but forcefully write when 'readonly' is
set or there is another reason why writing was
refused.
Note: This may change the permission and ownership of
the file and break (symbolic) links. Add the 'W' flag
to 'cpoptions' to avoid this.

https://www.vim.org/htmldoc.php/editing.html#write-quit
0
espkh2 Messages postés 5 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 22 novembre 2010
13 nov. 2008 à 15:55
Grand merci pour l'info. Désolé pour le dérangement, j'aurais du lire la man page à fond.

Du coup j'ai testé les cpoptions :
Pour voir quelles sont les cpoptions utilisées par vi, il faut utiliser, la commande “:se”. Par exemple :
$ vi monfichier
:se cpo

Le système affiche alors les options par défaut renseignée dans la man page.
cpoptions=aABceFs

pour ajouter l’option W (il y a peut être plus simple):
:se cpo=aABceFsW
:se cpo
aABceFsW

Par contre, si je quitte le fichier, lorsque je le réouvre l'option W a disparu. Du coup je ne peux pas tester l'option cpo-W. Je n'ai plus le temps aujourd'hui, je m'y remet demain

Encore merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
13 nov. 2008 à 16:01
il faut écrire ça dans ~/.vimrc
c'est une spécificité vim, vi sur d'autres systèmes répond permission denied
0
espkh2 Messages postés 5 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 22 novembre 2010
14 nov. 2008 à 08:37
Effectivement, set cpoptions=aABceFsW dans ~/.vimrc

Merci beaucoup dubcek
0