両方の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