sudoのないサービス機能

sudoのないサービス機能

CentOSのマイサービスは、設定ファイルの特定のユーザーとして実行するように設定されています/etc/systemd/system

[Service]
User=buildman

ビルドマンのときは、su以下を実行できます。

systemctl status myservice.service

startただし、orを実行しようとすると、stopパスワードの入力を求められます。

私がするなら:

sudo systemctl status myservice.service

すでに設定しているため、メッセージは表示されませんvisudo

%buildman ALL= NOPASSWD:  /bin/systemctl * myservice.service

しかし、なぜサービスが停止し、状態のように動作し始めないのですか? Buildmanがsudoやパスワードなしでこれらのサービスコマンドを実行できることを願っています。

主な理由は、Jenkinsでサービスを再起動する必要があり、実行するには「TTY」が必要であると文句を言うコンテナでsudoを実行するのに問題があるためです。

答え1

start/stopとの違いは、システムの状態が変わらないstatusことです。status

システム全体の状態または構成を変更するには、システム全体の管理権限が必要です。つまり、sudoです。サービスの「状態」の読み取りは読み取り専用の操作であるため、通常は保護されません。

ユーザーサービスにはsudoが必要ないことは注目に値します。例えば

systemctl --user start bobsburgers

bobによって解放されると成功しますが、bobによってのみ成功します。 (ルートサービスではないため、ルートではこのサービスを開始できません。)

したがって、ここで関心のあるサービスがシステム全体の状態を変更しない場合は、そのサービスをユーザーサービスとしてインストールできます。

systemctl --user enable bobsburgers

標準設定はサービスファイルを~/.config/systemd/user

答え2

statusこのコマンドを実行するためにスーパーユーザー権限は必要ありませんsudostartそしてstop本当に必要ですsudo。パスワードの入力は避けられますが、sudoを指定する必要はありません。

関連情報