ローカルマシンでファイルを共有するための良い簡単な方法


13

次のプロパティを持つディレクトリが必要です。

  • 多くのユーザーがファイルをそこにコピーできます
  • これらのユーザーは、これらのファイルを削除/変更できます(ユーザーAは、このディレクトリにコピーされたファイルを削除/変更できます)

通常のファイル許可を使用して実行することはできません(許可はコピー時に保持されるため)。

ネットで見つけたものは次のとおりです。

いくつかのユースケース:

  • ローカルマシンで音楽を共有する
  • 単純なgitリポジトリの共有(多くの人が書き込み可能なリポジトリを作成できるようにする)--- gitosisのようなソリューションがあることを知っています
  • 多くの開発者がルートを与えずにphpアプリのテストインスタンスを変更できるようにします(ファイルをコピーするのではないかと思います)---私は非営利のジュニア開発者のチームを率いています。

編集

私の知る限り、SGIDビットの設定は難しくありません。新しく作成されたファイルにのみ影響します。

回答:


9

アクセス制御リスト

正解は、アクセス制御リスト(ACL)です。うん、反例を見つけることができますが、それらは実際には十分です(ユーザーが常にそれについて考えることを必要とする単なるグループ書き込み可能性とは異なります)。彼らが必要とするのは、名前付きグループのみでファイルを共有したい場合、システム管理者(root)がグループを定義することです(例えば、LDAPからグループを受け入れることで、rootは委任することを選択できますが、それは別の話です)。

参加ユーザーは022のumaskを持つ必要があります。ユーザーが日常的に読み取り不可能なファイルを作成する場合、このスキームは機能しません。しかし、もし彼らが制限的なumaskを持っているのなら、それはおそらくファイルを共有したくないからでしょう。

ACLを有効にする

UbuntuはデフォルトでACLを有効にしていないため、1回限りの管理要件があります。編集は/etc/fstabお好みのエディタを使用して、あなたがファイル共有したいファイルシステムに対応するすべての行を変更:追加aclオプションにします。(他の行を変更しないようにし、長い行を折り返すエディターを使用しないようにしてください。)次に、aclオプションを追加した行の例を示します。

UUID=5e1ec7ed-face-dead-beef-c011ec7ab1e5  /  ext4  errors=remount-ro,acl  0 1

オプションを初めて有効にするには、次のようなコマンドを(各ファイルシステムに対して)使用します。

sudo mount -o remount,acl /

aclパッケージからACLツールをインストールします。

共有ディレクトリのセットアップ

グループでファイルを共有するにはmygroup

setfacl -m group:mygroup:rwx /path/to/shared/root
setfacl -d -m group:mygroup:rwx /path/to/shared/root

ユーザーがファイルを作成して共有ディレクトリにコピーすると、ファイルは誰でも読み取り可能(umaskのため)で、グループ内の誰でもファイルを追加および削除できます(グループがグループ書き込み可能のため)。人々はお互いのファイルを編集することはできませんが、それは良いことです。そうしないと、すぐに編集の競合が発生します。

UNIXグループがない場合は、ユーザーを1つずつ追加できます。

setfacl -m user:bob:rwx /path/to/shared/root
setfacl -d -m user:bob:rwx /path/to/shared/root

バージョン管理

ユーザーがその場でファイルを編集できるようにする場合は、編集の競合を防ぐための何かも必要です。それがバージョン管理です。

gitリポジトリを共有するのにこれは必要ありません。gitosisのような解決策があることを知っているので、それらを使用してください。


自動継承が、ターゲットディレクトリレベルで設定されたデフォルトのaclを破棄(無視)するcp(およびmv?)によって中断されない場合、ACLは完全に機能します。
便利な14年

2

これを行うだけです:

mkdir /src/teamA
addgroup teamA
chgrp teamA /src/teamA
chmod g+rws /src/teamA

これでteamAグループの全員がすべてを内部に作成できるようになりました/src/teamA

魔法は、ディレクトリのsgid(グループIDの設定)ビットです。


私の知る限り、それは動作しません、更新された投稿を参照してください
jb。

1

ユーザーが共有フォルダー内のファイルにアクセスできるようにする場合(たとえば、異なるユーザーが異なるマシンに同じマシンにログオンし、同じファイルにアクセスする必要がある場合)、bindfs共有ディレクトリを作成するために使用できます。

複数のローカルユーザーが、共有ディレクトリとそのサブディレクトリからすべてのファイル(新しく作成されたファイルを含む)を読み書き(作成、削除、名前変更、変更...)できるようにします。各ユーザーには、ファイルとフォルダー(新しく作成されたものを含む)がそれらに属するものとして表示されます。

簡単に言えば、あなたは走る

sudo bindfs -o perms=0700,mirror-only=user1:user2:user3 /home/shared /home/shared

user1、user2、user3が/ home / sharedを使用できるようにします。

説明書

完全な設定(コンピュータの電源を入れるたびにを含む完全な手順については、Binddfs-SharedDirectoryLocalUsers(Ubuntuのドキュメント)を参照してください。私は自分のマシン上で、それぞれが異なる共有グループを持ついくつかのディレクトリにこれを使用します(1つのフォルダはすべてのアカウントに使用でき、別のフォルダは仕事用アカウントにのみ、別のフォルダは個人アカウントにのみ使用できます)。

投稿から:

bindfsは、パーミッション設定を使用して、ディレクトリを別の場所(マウントポイント)にマウントするためのFUSEファイルシステムです。マウントポイント内からファイルの所有権と許可を指定できます。

...

主な利点は、共有ディレクトリに作成された新しいファイルが所有権と権限を継承することです。

アクセス制御リスト(ACL)

ドキュメントノート:

さまざまなユーザーやグループに対してより高度なアクセス許可を設定する場合は、アクセス制御リストを試してください。

詳細については、Gillesの回答を参照してください。


oneiricにbindfsを追加するのに問題がある場合は、ここでユーザーが作成したパッケージを入手できますbugs.launchpad.net/ubuntu/+source/bindfs/+bug/851600
david.libremone

-3

shellholicのソリューションを、そのフォルダー内のすべてのファイルのgidを15秒ごとなどに更新するcronジョブと組み合わせることができます。

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