ruby-on-rails - Capistrano + Thin + nginx 不允许用户使用 sudo howto?

标签 ruby-on-rails nginx capistrano thin

我有一个这样的场景,我想使用 capistrano 部署我的 ruby​​ on Rails 应用程序:

  1. Web 应用程序位于瘦集群上,配置文件存储在/etc/thin 下。/etc/init.d/thin 中还有一个初始化脚本,因此每当我的服务器需要重新启动时它就会自动启动
  2. nginx 也以相同的方式执行(作为 init 脚本守护进程)
  3. 为了确保万一有人入侵了我的网络服务器,我不希望他们做一些太可怕的事情,因此不允许网络用户使用 sudo。
  4. Thin 和 nginx 都以 Web 用户身份运行以强制执行此类安全性

现在,当我需要进行部署时,我需要将文件安装在/home/webuser/railsapps/helloworld 下,并且之后我需要 cap 脚本重新启动我的 Thin。我想保留 Web 用户拥有的所有文件,因此 cap 脚本主要用户以 Web 用户身份运行。现在,当我想重新启动瘦守护程序时,问题就出现了,因为 web 用户无法使用 sudo。

我在想是否可以调用两个单独的 session - webuser 进行文件部署,然后调用一个特殊的 sudoer 来重新启动守护进程。谁能给我一个关于此的示例脚本?

最佳答案

这可能不是您想要的,但您实际上可以在 sudoers 文件中执行类似的操作:

someuser ALL=NOPASSWD: /etc/init.d/apache2

让某个用户运行/etc/init.d/apache2

如果您尝试做其他事情:

$ sudo ls
[sudo] password for someuser: 
Sorry, user someuser is not allowed to execute '/bin/ls' as root on ...

关于ruby-on-rails - Capistrano + Thin + nginx 不允许用户使用 sudo howto?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/156941/

相关文章:

mysql - 我是否应该将带有 latin1_swedish_ci 排序规则的 MySQL 数据库迁移到 utf-8,如果是,如何迁移?

Mysql2 gem + Mavericks + Rails

regex - 从正则表达式重定向中排除目录

linux - 如何在没有root权限的情况下创建目录?

ruby-on-rails - Capistrano 寻找不存在的版本/文件

ruby-on-rails - 使用 Capistrano 部署时将静态文件保存在服务器中

javascript - JavaScript 的 Rails text_area 格式

ruby-on-rails - ActiveRecord 未检索所有模型

javascript - SailsJS - 创建版本化 API,无需蓝图

nginx - PHP-FPM 和 Nginx 重写导致下载