Bash rvmsudo乘客安装-apache2-module的sudoers文件

Bash rvmsudo乘客安装-apache2-module的sudoers文件,bash,rvm,passenger,sudo,sudoers,Bash,Rvm,Passenger,Sudo,Sudoers,背景: 我每天都有一个新部署的应用程序——创建一个VM,然后该系统的root用户创建一个“systemuser”,然后安装该应用程序 它正在运行: CentOS 6 RVM Rails上的Ruby 1.8.7 乘客 按照它的设置方式,我必须让RubyonRails自行安装,并安装passenger。为此,运行服务的用户具有sudo权限,但其目的是只允许在安装过程中使用所需的命令。出于安全性和可维护性的原因,我们不能将sudo密码放入脚本中 my/etc/sudoers包括: systemus

背景:

我每天都有一个新部署的应用程序——创建一个VM,然后该系统的root用户创建一个“systemuser”,然后安装该应用程序

它正在运行:

  • CentOS 6
  • RVM
  • Rails上的Ruby 1.8.7
  • 乘客
按照它的设置方式,我必须让RubyonRails自行安装,并安装passenger。为此,运行服务的用户具有sudo权限,但其目的是只允许在安装过程中使用所需的命令。出于安全性和可维护性的原因,我们不能将sudo密码放入脚本中

my/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: 
问题是:

在apache上安装rvm、ruby、bundler/gem和passenger2时,/etc/sudoers中应该包含的最小命令集是什么

是的,我已经阅读了网站上的“文档”

欢迎创意解决方案!我意识到有人可能会说这看起来像一个相当黑客的系统,我同意你的看法。但目前,如果不了解这个乘客安装脚本运行的是什么命令,我很难改进它

从前面删除“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: 

谢谢你的关注

/usr/bin/env
是一种允许运行任何命令的路由器,对于
/bin/bash
,您必须添加
哪个乘客安装-apache2-module

。按照你的建议,我将这行代码改为:systemuser ALL=NOPASSWD:/usr/local/rvm/bin/rvmsudo、/usr/local/rvm/gems/ruby-1.8.7-p358/bin/passer-install-apache2-module、/bin/cp、/bin/ln、/bin/mv、/bin/rm、/etc/init.d/httpd*…但我仍然看到了相同的结果。可能有sudo缓存之类的东西吗?我对sudo有点迷茫。您仍然有危险的命令,请尝试:
systemuser ALL=NOPASSWD:passer-install-apache2-module,/etc/init.d/httpd*
我会的,谢谢。关于为什么它仍然要求乘客安装-apache2-module的密码,即使它在NOPASSWORD行中,有什么想法吗?我不知道-请参阅sudo手册或打开一个新问题