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)構成と関係がありますか?
含まれているフォルダーで、グループをdevに変更してから、mark itset-gidを使用します。
chgrp dev <containing-folder>
chmod g+ws <containing-folder>
Set gidビットは、そのフォルダーに作成されたファイルをフォルダーのグループを継承するようにし、新しいフォルダーにsetgidビットをマークします。ファイルをディレクトリに移動すると、既存のアクセス許可が保持されるため、注意が必要です。
ディレクトリのsetgidビット を使用して、子によるグループの所有権を保持できます。
chown :dev directory/
chmod g+s directory/
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が設定されている場合、grpidが作成されたディレクトリのグループIDを取得します。それ以外の場合(デフォルト)、ディレクトリにsetgidビットが設定されていない限り、現在のプロセスのfsgidを取得します。設定されている場合は、親ディレクトリからgidを取得し、ディレクトリ自体の場合はsetgidビットも取得します。
Emacsのデフォルトの動作は、名前を変更してバックアップファイルを作成することです。 emacsマニュアルから:
Emacsは、元のファイルの名前をバックアップファイルになるように変更してから、保存されているバッファーを新しいファイルに書き込むことができます。この手順の後、元のファイルの他の名前(つまり、ハードリンク)はバックアップファイルを参照するようになります。新しいファイルは、編集を行うユーザーが所有し、そのグループは、そのディレクトリのユーザーによって、そのディレクトリのユーザーによって書き込まれた新しいファイルのデフォルトです。
これを変更する方法はいくつかあります。
またはemacs固有:
だから、あなたの.emacsに追加してください:
(setq backup-by-copying-when-mismatch 't)
私の好みは実際には「newgrpdev」です。これは「個人」モード(編集するファイルは私のものです)からグループ開発モード(現在編集するファイルはグループ間で共有されます)への明示的な切り替えです。