私は非常に普通で非常に一般的であると考えるユースケースを持っています。 (今まで)解決策がないようで驚きました。私は明らかなことを見落としていると思います。多くの人にとっては、このユースケースの解決策は間違いなく必要です。
同じグループに属する最大5人のユーザーが単一のコンピュータにログインアカウントを持つことができます。同時にログインしません。
更新1:この文書はローカルサーバー上のテキストファイルとスプレッドシートです。 Google や外部サーバーでドキュメントをホストしたくありません。
実際、私たちはいいえリアルタイムコラボレーションが必要です。
チームグループのこれらのユーザーは、共有ディレクトリからファイルを読み書きしながら共同作業する必要があります。これらのファイルを含むディレクトリはローカルサーバーにあります。共有ディレクトリは、標準のLinuxメソッドを介してクライアントにマウントできます。 BTRFS にはサポート機能が組み込まれているため、必要に応じて ACL を使用できます。
すべてのユーザーはこのキーを使用してSSHを介してサーバーにログインできます。ユーザーとグループIDは、クライアントとサーバーで同じです。ユーザーのどれもsudo権限やその他の特別な権限を持っていません。これらすべての共通点は、「チーム」グループのメンバーであることです。
共有ディレクトリは、ユーザーのホームディレクトリの下にはありません。 rwx 権限を持つ同じグループ「Team」が所有し、「Team」のすべてのユーザーがそのパスへのフルアクセス権を持っています。必要に応じて権限を変更できますが、このディレクトリ内のファイルは、「チーム」グループ外の誰も読み書きできません。
クライアントとサーバーの両方がArch Linuxを実行しており、どちらもBTRFSを実行しています。
私たちは約10年間NFSを実験してきましたが、多くの権限/アクセス問題に直面しました。最も重要なサポート問題の1つは、ユーザー権限の問題を解決することです。我々は、権限の問題に対する良い解決策を見つけることができなかったので、NFSを放棄することにしました。
「通常のファイルシステム権限が利用できるため」SSHFSに切り替えました。これまで、SSHFSを使用して上記の簡単な目標を達成できませんでした。バラよりここそしてここ。
私たちはSambaについて良いニュースを聞いたことがないので、一度も試してみませんでした。また何がありますか?
これは一般的なユースケースのようです。通常どのように解決されますか?
複雑な出来事もありません。たとえば、私たちのネットワーク(サーバーとクライアント)のすべてのシステムはLinuxを実行します。すべてのマシンはローカルLANにあります。これはとても簡単です。しかし、まだ適切な解決策が見つかりませんでした。
答え1
実際にはとても簡単です。ほとんどの人は、特定のディレクトリの下にあるすべてのファイルの権限を設定する必要があると思うようですが、実際にはそうではありません。最上位ディレクトリのみが実行されます。
chown :team /path/to/dir
chmod 2770 /path/to/dir
まず、グループ所有者をteam
既に存在し、正しいディレクトリにアクセスできる必要がある人を含むグループに設定します。次に、ディレクトリ内の「グループID設定」の権限を設定します。したがって、そのディレクトリの下に作成されたすべてのファイルはteam
そのグループの所有になります。必ずしも必要ではありませんが、便利なお知らせだと思います。team
すべての人に完全な権限を付与します。グループの所有者であり、ディレクトリの所有者です。誰でもいいえこのグループには権限があり、others
ここでは空です。
この設定の結果は、team
そのグループに属していない人に対してそのディレクトリで行われた操作であっても、その人をls
取得します。Permission denied
はいただし、ファイル権限が個別に無効な権限に設定されていない場合、正しいグループのメンバーはそのディレクトリから読み書きできます。そのファイルの書き込みを保護してはいけない場合は、すぐに権限を変更してください。
chmod -R g+rw /path/to/dir
find /path/to/dir -type d -print0 | xargs -0 chmod g+x
ACLがない場合は、許可ビットをクリエイティブに設定して、将来(つまり新しく作成された)ファイルの権限を設定することはできません。ユーザーはumaskを設定する必要があります。次の行を使用してこれを実行できます/etc/profile
。
umask 002
多くのディストリビューションのデフォルト値は022(グループメンバーが読むことはできますが書き込みはできません)、077(グループメンバーは読み取り可能です)なので、これを設定することが重要です。何もない他のユーザーに)または027(グループの読み取りは許可されていますが、書き込みは許可されておらず、他の人には許可されていません)これらのオプションのいずれも望むものではありません。
ファイルシステムのさまざまな部分に異なる要件がある場合、または人々がumaskを個別に操作して問題を引き起こさないようにするには、デフォルトのACLを使用できます。
find /path/to/dir -type d -print0 | xargs -0 setfacl -m d:g:team:rwx -m d:o:---
すべて設定したら本当にそれは問題ではありませんSSHFSを使用するかNFSを使用するか。ただし、問題が解決しない場合は、もう一度訪問してより具体的な質問をするのが最善です。
答え2
ドキュメントの内容に応じて、git
誰もがアクセスできるリポジトリ(ソフトウェアの共同作業に適しています)などの適切なバージョン管理システムを使用したり、テキストファイルの共同編集を可能にするGoogle Docsなどのシステム(共同作業に適した)を使用したりできます。します。テキストファイルの編集)。レポートなど)。これが私が現在職場で使用しているソリューションです。
Wikipediaのトピックも参照してください。コラボレーションリアルタイムエディタ。
文書の編集中にIMHO共有ドライブこれは、あるユーザーが保存した文書が他のユーザーが変更した内容を上書きしやすくなるために問題になります。誰が何を変更したのかを追跡したり、ドキュメントの以前のバージョンに対する変更をロールバックしたりする方法はありません。