Linuxグループとファイル権限を使用して、複数の人が複数のフォルダ内のファイルを変更および削除できるようにすることはできますか?どのように?
たとえば、ローカルコンピュータでは:
AliceとBobにfooとbarを処理させます。
AliceとBobはfooとbar linuxのグループにあります。 foo と bar フォルダはルート専用で、グループを尊重します。
id Alice
uid=1000(Alice) gid=1000(Alice) groups=1000(Alice),10(wheel),1002(foo),1003(bar)
id Bob
uid=1001(Bob) gid=1001(Bob) groups=1001(Bob),10(wheel),1002(foo),1003(bar)
ll
drwxrwsr-x 7 root foo 4096 Jan 26 09:09 foo
drwxrwsr-x 7 root bar 4096 Apr 13 09:36 bar
Peterはbarフォルダではなくfooフォルダでのみ作業できます。
id Peter
uid=1002(Peter) gid=1004(Peter) groups=1001(Bob),10(wheel),1002(foo)
Linuxでこれは可能ですか?
私はGUIDビットと固定ビットを使用してきましたが、どちらも十分ではありませんでした。
Alice と Bob に foo へのアクセス権を与えるということは、それらを foo グループに入れることを意味します。セカンダリグループにfooを追加しても、AliceとBobはfooフォルダにアクセスできません。
AliceとBobは同時にfooとbarのデフォルトグループに属することはできません。これが私がこの質問をする理由です。
答え1
2人のユーザーが同じ共有フォルダ内の同じファイルを変更できるようにする方法はありません。
一般的な解決策は、バージョン管理ツールを使用することです。
この特別なケースではここでGITを使用するので大丈夫です。
しかし、再び問題が発生します。 gitがオブジェクトフォルダにファイルだけを追加しても(この質問のターゲットプロジェクトで私たちが知らないことをしない限り)、gitは以前の2つの名前付きオブジェクトサブフォルダも収集します。ファイル送信ハッシュ。
我々は、最終的に、ユーザーがルートとしてディレクトリを作成してすべてのディレクトリを生成するのを防ぐ方法を見つけました。
for i in {0..255};do j=$(printf "%02x\n" $i);mkdir -p $j;chmod 2775 $j;done
ベアリポジトリのオブジェクトフォルダで完了すると、すべてがうまく機能します。