の場合、sysvinit
次sudoers
のような項目で十分です。
%webteam cms051=/sbin/service httpd *
これにより、次のコマンドを使用できます。
sudo service httpd status
sudo service httpd restart
これで、systemd
サービス名は最後のパラメータです。つまり、サービスの再起動は次のように行われます。
systemctl restart httpd.service
もちろん、コマンドを定義すると効果があると思いますが、そうすると、望む効果が得られないsystemctl * httpd.service
同様の結果が出ます。systemctl restart puppet.service httpd.service
これを念頭に置いて、systemd
root以外のユーザーがサービスを制御できるようにする最善の方法は何ですか?その必要はありませんsudoers
。ファイル権限を変更するだけで十分でしょうか?
答え1
必要なすべてのコマンドをsudoers
個別に追加するだけです。
%webteam cms051=/usr/bin/systemctl restart httpd.service
%webteam cms051=/usr/bin/systemctl stop httpd.service
%webteam cms051=/usr/bin/systemctl start httpd.service
答え2
@jofelの答えは、正確にジョブ設定を取得するために必要なものです。この問題を経験している他の人のためにこの記事を投稿してください。capistrano
ローカルコンピュータにRubyアプリケーションをデプロイした後に再起動する方法が必要です。つまり、systemd
サービスを再開するには、パスワードのないアクセスが必要です。これが私が持っているものであり、うまくいきます!
ノート:私のユーザーとグループが呼び出されます。deployer
カスタムファイルにコードを入れる:/etc/sudoers.d/deployer
コード:
%deployer ALL= NOPASSWD: /bin/systemctl start my_app
%deployer ALL= NOPASSWD: /bin/systemctl stop my_app
%deployer ALL= NOPASSWD: /bin/systemctl restart my_app
答え3
アクセス可能なコマンドでコマンドエイリアスを作成します。次に、グループをコマンドエイリアスに割り当てます。
Cmnd_Alias APACHE-SVC = /usr/bin/systemctl stop httpd, /usr/bin/systemctl start httpd, /usr/bin/systemctl restart httpd
%webteam ALL=APACHE-SVC
sudoersファイルを直接編集するよりも、/etc/sudoers.d/filenameに編集内容を保存する方が良い習慣です。 sudoersで.d/ファイル名を指定する必要があります。ほとんどの新しいディストリビューションはとにかくこれを行います。 sudoerに次の2行を入力すると、問題が解決します。
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d
注:includeirの前の#はコメントではありません。残る必要があります。
答え4
RHEL8から:
httpd.service
別のオプションは、Webチームのホームディレクトリにファイルを置き、~/.config/systemd/user
自分で起動/停止/アクティブ化などを行うことができるようにすることです。
systemctl --user enable httpd.service
systemctl --user start httpd.service
ユーザーがサービスの開始権限を持っている間に上記のタスクが機能していることを確認してください。これは開発システムで役に立ち、開発者はdevops / opsで利用可能なすべての構成でタイマーとパイプラインを効率的に実行できます。
これを本番環境に移動し、組み込みのhttpdタスクを使用して実際のサーバー環境で完全な起動シーケンスをテストすることも有益であるように思われます。しかし、私はただここで考えて文を書いているだけです。
システムユーザー文書が広範囲ではないので、最高のオンライン参照: