Vi modifie le propriétaire d'un fichier

espkh2 Messages postés 6 Statut Membre -  
espkh2 Messages postés 6 Statut Membre -
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.

6 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    est ce que test et essai ont le même uid ?
    egrep 'test|essai' /etc/passwd /etc/group
    0
  2. espkh2 Messages postés 6 Statut Membre
     
    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
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  4. espkh2 Messages postés 6 Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    il faut écrire ça dans ~/.vimrc
    c'est une spécificité vim, vi sur d'autres systèmes répond permission denied
    0
  7. espkh2 Messages postés 6 Statut Membre
     
    Effectivement, set cpoptions=aABceFsW dans ~/.vimrc

    Merci beaucoup dubcek
    0