0

バックグラウンド:

毎日新しくデプロイされるアプリケーションがあります。VMが作成され、そのシステムのルートが「systemuser」を作成し、それがアプリケーションをインストールします。

実行中:

  • CentOS 6
  • RVM
  • Rails上のRuby1.8.7
  • 乗客

設定方法として、Ruby on Railsをインストールし、passengerをインストールする必要があります。この目的のために、サービスを実行しているユーザーにはsudo権限がありますが、インストール中に必要なコマンドのみを許可することを目的としています。セキュリティと保守性の理由から、スクリプトにsudoパスワードを入れることはできません。

私の/etc/sudoersには次のものが含まれます。

systemuser ALL = NOPASSWD: /usr/bin/env, /bin/bash, /usr/local/rvm/rubies/ruby-1.8.7-p358/bin/gem, /bin/cp, /bin/ln, /bin/mv, /bin/rm, /etc/init.d/httpd *

問題:

最近まで、これの変種はうまく機能していました。ただし、最近、どこかで何かが変更され(?)、パスワードプロンプトがないとrvmsudoコマンドが実行されなくなりました。

$ rvmsudo passenger-install-apache2-module

 We trust you have received the usual lecture from the local System
 Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

 [sudo] password for systemuser: 

質問:

rvm、ruby、bundler / gem、次にpassenger2をapacheにインストールするために/ etc / sudoersに必要な最小限のコマンドセットは何ですか?

はい、 https://rvm.io/integration/passenger/の「ドキュメント」を読みました。

クリエイティブなソリューションを歓迎します!これはかなりハッキーなシステムのように見えると言う人もいるかもしれませんが、私はあなたに同意します。しかし、現時点では、このパッセンジャーインストールスクリプトによって実行されているコマンドを理解せずに改善することは困難です。

前面から「env」と「bash」を削除し、「rvm」を追加すると、もう少し先になります。

systemuser ALL = NOPASSWD: /usr/local/rvm/bin/rvmsudo, /usr/local/rvm/gems/ruby-1.8.7-p358/bin/passenger-install-apache2-module, /bin/cp, /bin/ln, /bin/mv, /bin/rm, /etc/init.d/httpd *

これを実行する:

$ rvmsudo passenger-install-apache2-module
[sudo] password for systemuser: 

ご清聴ありがとうございました!

4

1 に答える 1

0

/usr/bin/envは、任意のコマンドを実行できるルーターです。と同じように、コマンドの代わりに/bin/bash追加する必要があります。which passenger-install-apache2-module

于 2012-12-17T23:21:32.023 に答える