/usr/lib/systemd/system の下にサービスがあります。このサービスは、私が開発しているアプリケーション(.net core 2.0)を実行します。同じアプリケーションが異なるシステム(両方ともcentos7)で実行されています。彼らはお互いを見つけるためにUDPソケットを使用します。
このアプリを準備する前に、長い間テストをしてきました。。提供するファイルを送信すると、すべてが順調に進みます。彼らはお互いにメッセージを放送することができます。
サービスがアプリケーションを実行したときにインスタンスが取得できる唯一のメッセージは、同じインスタンスが最初にブロードキャストしたメッセージです。他のコンピュータでも同じことが起こります。自分の放送は受けられますが、他人の放送は見ることができません。
私はLinuxに初めてアクセスし、どこで何を検索するのかわからないので、役に立たない情報を見つけました。これがここで助けが必要な理由です。
ありがとう
.service ファイルの内容
[Unit]
Description=Apix
[Service]
WorkingDirectory=/apix
ExecStart=/usr/bin/dotnet /APIX/Apix.dll
[Install]
WantedBy=multi-user.target
直接アプリケーションを実行すると、udpポートがdotnetで使用されていることがわかります。ただし、サービスがアプリケーションを実行すると、この行は消えます。
netstat -lntup
udp 0 0 0.0.0.0:14235 0.0.0.0:* 11319/dotnet
答え1
ダンウォルシュライブジャーナル2014説明にunconfined_service_t
SELinux 用語が多く含まれていますが、現在 SELinux の知識レベルによっては多くの情報を取得できない場合があります。
あなたのコメントによると、プロセスのSELinuxラベルは次のとおりです。
- .serviceファイルを使用して起動した場合:
system_u:system_r:unconfined_service_t:s0
- 手動で起動する場合:
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
SELinuxラベルは4つの部分で構成されています。
- SELinuxユーザー(
_u
サフィックスを含む) - SELinuxの役割(
_r
サフィックスを含む) - SELinuxタイプ(
_t
サフィックスを含む) - およびSELinuxレベルの定義(完全な場合のみ)マルチレベルセキュリティSELinuxポリシー(軍事セキュリティなど)、デフォルトなしターゲットになったポリシー。
SELinux 基本ポリシーでは、SELinux ユーザー識別子は一般ユーザー名とは異なります。実際、SELinuxは、ファイルまたはプロセスが誰に属しているかにかかわらず、デフォルトのシステムプロセスであるかどうかsystem_u
()、管理者(sysadm_u
)、一般ユーザー(user_u
)、またはSELinuxポリシー免除の対象として指定されたユーザー(unconfined_u
)です。
「役割」セクションを使用して、dbadm_r
データベース管理やlogadm_r
システムログアクセスなど、複数の「部分管理者」役割を指定できます。
について最も重要な部分はターゲットになったSELinuxポリシーは、タイプ仕様または接尾辞付きの部分です_t
。
unconfined_service_t
無制限の型でなければならないので、そこに何が問題なのかよくわかりません。ディレクトリツリーの下のファイルに/APIX/
タグが付けられていないため、問題が発生する可能性がありますか?
プロセスと同様に、ファイルにも使用できるSELinuxラベルが必要ですls -Z
。通常、SELinuxはdefault_t
指定されたラベルがないすべてのファイルにラベルを提供します。 SELinuxは「これが何であるかわかりませんdefault_t
。おそらくラベルが欠落しているUltra Top Secretなので、一部の管理者が正しいラベルを知らせるまで追加のセキュリティを保ちましょう」と「考えます」と言いますdefault_t
。あなたが解決しなければならない問題。
SELinuxルールが別途指定されていない限り、ファイルは通常、ファイルが生成されたディレクトリのラベルを継承します。ただし、たとえば、新しいトップレベルディレクトリを作成する場合は、/APIX
ラベルを付ける方法を決定する必要があります。それ以外の場合は終了しますdefault_t
。
設定を試すことができます。 SELinuxが完全に有効になっているように、SELinuxポリシー違反を記録し続けると、semanage permissive -a unconfined_service_t
すべてのサービスで無料アクセスを使用できます。その後、監査ログの関連部分を実行すると、SELinuxがプログラムが目的の操作を実行できない理由をより明確に把握できます。unconfined_service_t
/var/log/auth/
audit2why
正しい修正方法は、/APIX/
適切なファイルシステムラベルでディレクトリにラベルを付けることです。