SElinuxは、起動時にsystemdが自分のカスタムサービスを選択するのを防ぎます。
MESSAGE = SELinuxのため、systemdはcustom.serviceファイルへのアクセスを読み取ることができません。
再起動する前に
[root@box opt]# systemctl daemon-reload
[root@box opt]# systemctl enable --now custom
[root@box opt]# systemctl status custom.service
● custom.service - foo
Loaded: loaded (/opt/foo/bar/systemd/custom.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2022-10-07 12:18:27 EDT; 1min 28s ago
...
...
再起動後
[root@box opt]# systemctl status custom.service
Unit custom.service could not be found.
だからselinuxを無効にして再起動しましたが、役に立たないようです。その後、selinuxユーザー、役割、およびサービスファイルの種類を変更して再起動しようとしました。
[root@box opt]# chcon -R -u unconfined_u -r object_r -t systemd_unit_file_t foo/bar/systemd/
まだ何もありません/etc/systemd/system
。サービスファイルをそのディレクトリに?
入れると同じことが起こります。cp
/etc/systemd/system
[root@box opt]# ls -Z /etc/systemd/system/custom.service
? /etc/systemd/system/custom.service
この問題を解決するには、ここで何をすべきかを知っている人はいますか?
全長DR- SElinuxは、selinuxが無効になっていてもsystemdが有効なカスタムsystemdユニットを読み取ることを防ぎます。
ベストアンサー1
解決策が見つかりました。
許可モードで selinux を再度有効にし、ブート後にサービスを開始しました。chcon
selinuxが事前に無効になっていたので、私が実行したコマンドがうまくいかなかったようです。
これでselinuxを無効にして再起動しましたが、すべてが正常に動作しているようです。 selinuxが無効になっていると、2番目のコンテキストがなぜ重要なのかはまだ理解されていません。
# ls -Z now shows the correct context
[root@box ~]$ ls -Z /etc/systemd/system/custom.service
system_u:object_r:systemd_unit_file_t:s0 /etc/systemd/system/custom.service