SELinux用systemd拡張開発のジレンマ

SELinux用systemd拡張開発のジレンマ

みんな、

私はsystemd-sleepと同様に、一時停止、ハイブリッドスリープなどでカスタムスクリプト呼び出しをサポートするためにsystemd-sleepを拡張するsystemdの修正を開発しています。これはうまくいきましたが、SELinuxサポートシステムでテストを開始したときに問題が発生し始めました。

私はSELinuxに慣れていないので、どこから見るべきかさえわかりません。デフォルトでは、サービスは設定されたユーザー(/usr/lib/systemd/systemd-sleep-user)でスクリプトを呼び出します$HOME/.config/systemd/system-sleep

関連するエラーメッセージは次のとおりです。SELinux is preventing systemd-sleep-u from execute_no_trans access on the file /home/stallion/.config/systemd/system-sleep/kill-scdaemon.sh.

この動作はsystemd-sleepの仕組みと似ているため(/usr/lib/systemd/system-sleepを使用しますが)、これはユーザーの場所に同じ属性を適用するだけです。

どんなアイデアがありますか?

編集する:関連監査ログエントリは次のとおりです。

type=AVC msg=audit(1508702442.885:388): avc:deny{execute_no_trans} for pid=3539 comm="systemd-sleep-u" path="/home/stallion/.config/systemd/system-sleep/kill- scdaemon.sh" dev="dm-3" ino=533984 scontext=system_u:system_r:init_t:s0 tcontext=system_u:object_r:config_home_t:s0 tclass=ファイル権限=0

答え1

特定のアクセスを許可するSELinuxポリシーにルールがないため、エラーが発生します。コンテキストを持つファイルの変換されていない実行を許可する設定_ホーム_t実行されるプロセスを通じて初期化_tフィールド。

これらのルールを含むカスタムポリシーモジュールを作成できますが、おそらく許可したくありません。どの実行するプロセスを初期化します。どのユーザーマスタデータでタグ付けされたファイルです。別のオプションは、スクリプトの新しいファイルコンテキスト、一致するラベルルール、およびプロセスを許可するルールを含むカスタムポリシーを作成することです。初期化_tドメインを実行します。

3番目のオプション(おそらく最も単純な)は、次のプロセスを実行するようにsystemdを設定することです。無制限のドメイン、SELinuxにはほとんど制限はありません(通常のDACなどの制限はまだ適用されます)。SELinuxContextsystemdサービスファイルのオプションを使用してください。

SELinuxContext=system_u:system_r:unconfined_t:s0 

関連情報