systemdサービスが開始されていません(権限が拒否されました)

systemdサービスが開始されていません(権限が拒否されました)

だから今日、私はts3サーバーを古いWindowsボックスから新しいcentos8サーバーに移動することにしました。すべてがうまく機能しますが、今すぐ起動時にサーバーが自動的に起動できるようにsystemdサービスファイルを作成しようとしています。サービスユーザーとして起動しようとすると、すべてがうまく実行されますが、root(systemctlを使用)から始めることはできません。追加情報:

一緒に走りたいユーザー

[root@lnxsrv01 opt]# id teamspeak
uid=1000(teamspeak) gid=1000(teamspeak) groups=1000(teamspeak)

マイフォルダ構造(権限の確認と実行フラグの確認)

[root@lnxsrv01 teamspeak]# ll
total 16380
drwxr-xr-x. 9 teamspeak teamspeak     4096 Nov  2 17:28 .
drwxr-xr-x. 3 root      root            23 Nov  2 16:11 ..
-rw-------. 1 teamspeak teamspeak      629 Nov  2 17:30 .bash_history
-rw-rw-rw-. 1 teamspeak teamspeak    66724 Jul  2 11:21 CHANGELOG
drwxr-xr-x. 3 teamspeak teamspeak      192 Jun 17 18:27 doc
drwx------. 4 teamspeak teamspeak       45 Nov  2 16:59 files
-rwxr-xr-x. 1 teamspeak teamspeak   947368 Jul  2 15:24 libts3db_mariadb.so
-rwxr-xr-x. 1 teamspeak teamspeak  2174344 Jul  2 15:24 libts3db_sqlite3.so
-rwxr-xr-x. 1 teamspeak teamspeak  1096144 Jul  2 15:24 libts3_ssh.so
-rw-r--r--. 1 teamspeak teamspeak    68141 Jun 17 18:27 LICENSE
drwx------. 2 teamspeak teamspeak      270 Nov  2 17:10 logs
-rw-rw-rw-. 1 teamspeak teamspeak        0 Nov  2 16:59 query_ip_blacklist.txt
-rw-rw-rw-. 1 teamspeak teamspeak       14 Nov  2 16:59 query_ip_whitelist.txt
drwxr-xr-x. 2 teamspeak teamspeak       29 Jul  2 15:24 redist
drwxrwxrwx. 2 teamspeak teamspeak     8192 Jun 24 11:28 serverquerydocs
drwxrwxrwx. 5 teamspeak teamspeak     8192 Jun 17 18:26 sql
-rw-rw-rw-. 1 teamspeak teamspeak     3243 Nov  2 16:59 ssh_host_rsa_key
-rwxr-xr-x. 1 teamspeak teamspeak 12033888 Jul  2 15:24 ts3server
-rw-rw-r--. 1 teamspeak teamspeak        0 Nov  2 16:59 .ts3server_license_accepted
-rwxrwxrwx. 1 teamspeak teamspeak      117 Jun 17 18:26 ts3server_minimal_runscript.sh
-rw-rw-r--. 1 teamspeak teamspeak        6 Nov  2 17:10 ts3server.pid
-rw-r--r--. 1 teamspeak teamspeak   282624 Nov  2 16:58 ts3server.sqlitedb
-rw-r--r--. 1 teamspeak teamspeak    32768 Nov  2 17:22 ts3server.sqlitedb-shm
-rw-r--r--. 1 teamspeak teamspeak     6320 Nov  2 17:21 ts3server.sqlitedb-wal
-rwxrwxrwx. 1 teamspeak teamspeak     2654 Jun 18 11:51 ts3server_startscript.sh
drwxr-xr-x. 2 teamspeak teamspeak       85 Jul  2 15:24 tsdns
[root@lnxsrv01 teamspeak]# pwd
/opt/teamspeak

マイシステムサービスファイル

[root@lnxsrv01 teamspeak]# cat /lib/systemd/system/teamspeak3.service
[Unit]
Description=TeamSpeak Server Service
After=network.target

[Service]
Type=forking
WorkingDirectory=/opt/teamspeak/
ExecStart=/opt/teamspeak/ts3server_startscript.sh start
ExecStop=/opt/teamspeak/ts3server_startscript.sh stop
User=teamspeak
Group=teamspeak
PIDFile=/opt/teamspeak/ts3server.pid
Restart=always
RestartSec=9
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=teamspeak3

[Install]
WantedBy=multi-user.target

関連システムログエントリ

Nov  2 17:26:36 lnxsrv01 systemd[17585]: teamspeak3.service: Failed to execute command: Permission denied
Nov  2 17:26:36 lnxsrv01 systemd[17585]: teamspeak3.service: Failed at step EXEC spawning /opt/teamspeak/ts3server_startscript.sh: Permission denied
Nov  2 17:26:36 lnxsrv01 systemd[1]: teamspeak3.service: Control process exited, code=exited status=203
Nov  2 17:26:36 lnxsrv01 systemd[1]: teamspeak3.service: Failed with result 'exit-code'.
Nov  2 17:26:36 lnxsrv01 systemd[1]: Failed to start TeamSpeak Server Service.
Nov  2 17:26:43 lnxsrv01 systemd[1]: Stopped TeamSpeak Server Service.

"teamspeak"ユーザーにsuを要求してそこからstartscriptを実行すると、すべてがうまくいきます。しかし、システムが正しく動作していないようです。

ここで見逃したアイデアはありますか?

答え1

SELinuxをオフにして問題を解決できる場合は、もう少し詳しく調べて原因を特定することをお勧めします。

(ポート80を開くためにファイアウォールを閉じませんか?)

この特別な場合、システム単位のファイルを介してバイナリまたはスクリプトを呼び出すには、SELinuxタイプbin_t(通常のファイル/usr/binに似ている)でなければなりません。/usr/sbin

ファイルの種類を確認するには、ls's-Zフラグを使用してください。次に、それに応じてタイプを設定します。

chcon -t bin_t /opt/teamspeak/ts3server_startscript.sh

SELinux でブロックする作業とその理由については、 で監査ログを確認してください/var/log/audit/audit.log

しかし、ファイルのSELinuxタイプを変更するだけでは十分ではありません。

  • 時にはsemanage fcontext …(マンページここ)永続的なセキュリティコンテキスト変更を実行するコマンド(ディレクトリ内の新しいファイルが正しいコンテキストを継承するようにする)。

  • 時には一つブール値あなたが達成したいことを正確に存在します。

  • 最悪の場合は、SELinuxポリシーパッケージをコンパイルする必要があります(私は次のように書いています)。記事私はしばらく前に言いました。)

答え2

SElinuxは私のレーダーになかった。 SElinuxをオフにすると問題が解決しました。

関連情報