Linux:ファイルのグループ所有権を失う


8

Linuxで作成した多数のファイルを含むプロジェクトがあります。

そして、他のユーザーにそれらの書き込み権限を与える必要がありました。そこで、彼と私がメンバーである「dev」グループを作成し、ファイルの所有権をこのグループに変更しました。

典型的なファイルには、次の権限があります。

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

しかし、profile.htmlファイルを編集すると、このように戻ってしまい、同僚が編集できなくなります。

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

このように元に戻らないようにするにはどうすればよいですか?所有権を変更することは間違ったことですか?それとも間違ったオプションで行われましたか?それとも、これは私のエディタ(emacs)設定に関係していますか?

回答:


17

含まれているフォルダーで、グループをdevに変更し、set-gidとマークします。

chgrp dev <containing-folder>
chmod g+ws <containing-folder>

セットgidビットは、そのフォルダーに作成されたファイルにフォルダーのグループを継承させ、新しいフォルダーにsetgidビットをマークします。ファイルをディレクトリに移動するときは、既存の権限が保持されるため、注意が必要です。


唯一の救済策(私の回答を参照)
asdmin 2009


7

grpidマウントオプションを使用してファイルシステムをマウントすることもできます(ext2 / 3を想定)。これにより、ディレクトリに新しいファイルを作成するたびに、グループの所有者が親ディレクトリと同じになります。そのため、これらのファイルが存在するディレクトリがグループ「dev」によって所有されるようにするだけです。

ルートパーティションの場合に再マウントするには(例):

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

「man mount 8」から:

grpid or bsdgroups / nogrpid or sysvgroups
These options define what group id a newly created file gets.

grpidが設定されると、それが作成されたディレクトリのグループIDを取得します。それ以外の場合(デフォルト)は、ディレクトリにsetgidビットが設定されていない限り、現在のプロセスのfsgidを取得します。


+1を知るのに非常に便利なヒント
フレンチー

ファイルを作成またはコピーした場合、グループの書き込み権限も保持されますか?
KB

1

emacsのデフォルトの動作では、名前を変更してバックアップファイルを作成します。emacsマニュアルから:

Emacsはバックアップファイルになるように元のファイルの名前を変更し、保存されているバッファを新しいファイルに書き込むことができます。この手順の後、元のファイルの他の名前(ハードリンクなど)はバックアップファイルを参照するようになります。新しいファイルは編集を行っているユーザーが所有し、そのグループは、そのディレクトリ内のユーザーがそのディレクトリ内のユーザーによって書き込んだ新しいファイルのデフォルトです。

これを変更するにはいくつかの方法があります。

  • 他の人が説明するように、グループとスティッキービットを設定します。
  • ファイルを編集する前に「newgrp dev」を実行して、デフォルトグループがdevになるようにします。

またはemacs固有:

  • emacsでfile-precious-flagを設定します。これにより、グループを保持するように動作が変更されますが、その他の副作用があります。
  • emacsでbackup-by-copying-when-mismatchを設定します。これにより、所有者またはグループが変更されるときに、名前の変更ではなくコピーが使用されます。

だから、あなたの.emacsに追加してください:

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

私の好みは「newgrp dev」です。これは、「パーソナル」モード(編集するファイルは私のものです)からグループ開発モード(現在編集しているファイルはグループ間で共有される)への明示的な切り替えであるためです。


これがここでの最良の答えです。
Christopher Neylan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.