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