
両方のsetuidプログラムは設定ファイルを/usr/bin/bar
共有します。構成ファイルには機密情報が含まれているため、スキーマにあります。プログラムは次から始まります(つまり、ユーザーとして/usr/bin/baz
foo
0640
bar:bar
バー、グループバーbaz:baz
);ユーザーの変更はオプションではありません。グループを変更しても良い選択肢ではありません。
/etc/bar/foo
単一の構成ファイルをとにハードリンクしたいと思います/etc/baz/foo
。しかし、私が知っている限り、ファイルはまたはroot:bar
に属する必要があるため失敗しますroot:baz
。
barbaz
考えられる解決策:メンバーが新しいbar
グループを作成しますbaz
。foo
属してくださいroot:barbaz
。
私にとって、これは非常に大胆な解決策のようです。foo
2つのプログラム間で設定ファイルを共有するよりクリーンでクリーンな方法はありますか?
現在、私はこのファイルの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を作成しますbaz
。foo
属してくださいroot:barbaz
。私にとって、これは非常に大胆な解決策のようです。
foo
2つのプログラム間で設定ファイルを共有するよりクリーンでクリーンな方法はありますか?
新しいグループを作るのになぜそんなに厳しいのですか?これは、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の回答などのグループシステムを使用します)。