8 votes

Linux : Perte de propriété de groupe des fichiers

J'ai un projet avec un certain nombre de fichiers que j'ai créés sous Linux.

Et j'avais besoin de donner à un autre utilisateur la permission d'écriture sur eux. J'ai donc créé un groupe "dev" dont il et moi sommes membres et ai changé la propriété des fichiers à ce groupe.

Désormais, un fichier typique a ces permissions :

-rw-rw-r--  1 phil dev   5617 Jul 14 15:45 profile.html

Cependant, lorsque j'édite le fichier profile.html, il revient à moi comme ceci, et mon collègue perd la possibilité d'éditer.

-rw-rw-r--  1 phil phil  5617 Jul 14 15:45 profile.html

Comment éviter que cela revienne ainsi ? Le fait de changer la propriété était-il la mauvaise chose à faire ? Ou était-ce fait avec les mauvaises options ? Ou est-ce lié à la configuration de mon éditeur (emacs) ?

17voto

iglvzx Points 1059

Dans le dossier contenant, vous voudrez changer le groupe pour être dev, puis utilisez mark it set-gid.

chgrp dev 
chmod g+ws 

Le bit set gid fait en sorte que les fichiers créés dans ce dossier héritent également du groupe du dossier, ainsi que marquer le bit setgid sur tout nouveau dossier. Vous voudrez faire attention lorsque vous déplacez des fichiers dans le répertoire car cela préservera leurs autorisations existantes.

8voto

Dan Carley Points 24959

Vous pouvez utiliser le bit setgid sur un répertoire pour conserver les propriétaires de groupe par les enfants.

chown :dev répertoire/
chmod g+s répertoire/

7voto

Kyle Brandt Points 81077

Vous pouvez également monter le système de fichiers (en supposant qu'il s'agisse d'ext2/3) avec l'option de montage grpid, ce qui fera en sorte que chaque fois que vous créez un nouveau fichier dans un répertoire, le propriétaire du groupe sera le même que celui du répertoire parent. Ensuite, il vous suffira de faire en sorte que le répertoire dans lequel ces fichiers se trouvent soit possédé par le groupe 'dev'.

Pour le remonter s'il s'agit de la partition racine (exemple) :

sudo mount -o remount,grpid,rw,relatime,errors=remount-ro /

Selon 'man mount 8' :

grpid ou bsdgroups / nogrpid ou sysvgroups
Ces options définissent l'identifiant du groupe qu'un nouveau fichier créé obtient.

Lorsque grpid est défini, il obtient l'identifiant de groupe du répertoire dans lequel il est créé ; sinon (par défaut) il obtient l'gid de l'équipe fsgid du processus en cours, sauf si le répertoire a la bit setgid défini, auquel cas il obtient le gid du répertoire parent, et obtient également le bit setgid défini s'il s'agit d'un répertoire lui-même.

1voto

Garth Kidd Points 2792

Le comportement par défaut pour emacs est de créer le fichier de sauvegarde en le renommant. D'après le manuel d'emacs :

Emacs peut renommer le fichier d'origine pour en faire un fichier de sauvegarde, puis écrire le tampon en cours de sauvegarde dans un nouveau fichier. Après cette procédure, tout autre nom (c'est-à-dire, les liens physiques) du fichier d'origine font maintenant référence au fichier de sauvegarde. Le nouveau fichier est possédé par l'utilisateur qui effectue l'édition, et son groupe est le groupe par défaut pour les nouveaux fichiers écrits par l'utilisateur dans ce répertoire.

Il existe plusieurs façons de changer cela.

  • Définissez le groupe et l'attribut sticky, comme le décrivent d'autres personnes.
  • Exécutez 'newgrp dev' avant de modifier le fichier, de sorte que votre groupe par défaut soit dev.

Ou spécifique à emacs:

  • Définissez le drapeau file-precious dans emacs, ce qui modifie le comportement pour préserver le groupe, mais a d'autres effets secondaires.
  • Définissez backup-by-copying-when-mismatch dans emacs, qui utilise la copie plutôt que le renommage lorsque cela entraînerait un changement de propriétaire ou de groupe.

Alors, ajoutez ceci à votre fichier .emacs :

(setq backup-by-copying-when-mismatch 't)

Ma préférence va en fait à 'newgrp dev', car c'est un changement explicite du mode "personnel" (les fichiers que j'édite sont simplement les miens), au mode groupe dev (les fichiers que j'édite maintenant sont partagés parmi le groupe).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X