ファイルが2人のユーザーに属しようとしています。どのように?ハードリンク障害

ファイルが2人のユーザーに属しようとしています。どのように?ハードリンク障害

両方のsetuidプログラムは設定ファイルを/usr/bin/bar共有します。構成ファイルには機密情報が含まれているため、スキーマにあります。プログラムは次から始まります(つまり、ユーザーとして/usr/bin/bazfoo0640bar:barバー、グループバーbaz:baz);ユーザーの変更はオプションではありません。グループを変更しても良い選択肢ではありません。

/etc/bar/foo単一の構成ファイルをとにハードリンクしたいと思います/etc/baz/foo。しかし、私が知っている限り、ファイルはまたはroot:barに属する必要があるため失敗しますroot:baz

barbaz考えられる解決策:メンバーが新しいbarグループを作成しますbazfoo属してくださいroot:barbaz

私にとって、これは非常に大胆な解決策のようです。foo2つのプログラム間で設定ファイルを共有するよりクリーンでクリーンな方法はありますか?

現在、私はこのファイルの2つの同じコピーを保持しています。これはうまくいきますが、明らかに間違っています。何が正しいか?

注:私はUnixコミュニティやsetgid(2)の経験がほとんどありません。

答え1

2 つのグループの人々がファイルを読み取れるように、ACL を使用できます。

chgrp bar file
chmod 640 file
setfacl -m g:baz:r-- file

これで、ユーザーbarとグループの両方がbazファイルを読み取ることができます。

たとえば、これはモード640のbin:binが所有するファイルです。

$ ls -l foo
-rw-r-----+ 1 bin bin 5 Aug 17 12:19 foo

これは+、ACLが設定されたことを意味します。見てみましょう。

$ getfacl foo
# file: foo
# owner: bin
# group: bin
user::rw-
group::r--
group:sweh:r--
mask::r--
other::---

私たちはこの行を見ることができますgroup:sweh:r--。これは、グループの人々swehが読むことができることを意味します。

ねえ、それは私です!

$ id
uid=500(sweh) gid=500(sweh) groups=500(sweh)

はい、ファイルを読み取ることができます。

$ cat foo
data

答え2

次の文を再考することもできます。

bar考えられる解決策:メンバーと新しいグループbarbazを作成しますbazfoo属してくださいroot:barbaz

私にとって、これは非常に大胆な解決策のようです。foo2つのプログラム間で設定ファイルを共有するよりクリーンでクリーンな方法はありますか?

新しいグループを作るのになぜそんなに厳しいのですか?これは、ACLに比べて次の利点があります。

  • /usr/bin/barこれをコマンドと仮定として指定しましたが、両方の/usr/bin/bazプログラムが構成ファイルを共有できることは関連しています。これは、これらのプログラムが自然に関連していることを示唆しています。これらのための新しいグループを作成することは、実際に存在し、動作(公開プロファイルを読み取る権限など)を引き起こす必要がある関係を説明しているようです。
  • グループ化によってこの問題を解決する方法は次のとおりです。すべてUnix、これは同じメカニズムを使用して、すべてのUnixまたはUnixファミリシステムでまったく同じように動作できることを意味します。 ACLははるかに複雑で、移植性が問題になる可能性があります。

個人的には、ACLは厳密なソリューションですが、グループ化はよりシンプルで伝統的なUnix方式だと思います。

答え3

私はこれがACL(アクセス制御リスト)の一般的な使用だと思います。プロファイルのACLに両方のユーザー(またはグループ)を追加します。

/etc/foo  root:root rw-------  # Traditional Unix ownership and permission for foo
$setfacl -m user:bar:rw- /etc/foo # ユーザー bar が foo を読み書きできるようにする
$ setfacl -m user:baz:rw- /etc/foo # また、ユーザー baz が foo を読み書きできるようにします。

まず、aclパッケージをインストールする必要があります。

答え4

まだ言及されていないので提出させていただきます。これはあなたが望むものではないかもしれませんが、同様の問題を抱えている他の人には答えになるかもしれません。

「新しい」「クラウド」アプローチは、すべての構成を単一のソリューションとして扱うことです。構成管理システム(例:シェフ人形またはアンシプール)。サーバーには2つの異なるが、同じファイルがあることは重要ではありません。どちらも構成管理システム内の単一ファイルのコピーであるためです。

これが最大の利点は、構成が次のようになることです。バージョンが付けられた(および他のすべての構成)、同じまたはほぼ同じ新しいサーバーを展開するのは非常に簡単で、自動化できます。

(記録には構成管理を使用しないため、@drgの回答などのグループシステムを使用します)。

関連情報