如何以特定用户身份运行Ruby守护进程?
问题描述:
我正在尝试使用daemons
gem来运行Ruby守护进程。如何以特定用户身份运行Ruby守护进程?
它将以用户'joe'开始,但一旦被妖魔化后需要更改为'www-data',以便它可以访问将要处理的文件。
我可以看到,守护进程对应用程序类change_privilege
方法,但我无法弄清楚如何使用它解决此代码:
require 'daemons'
Daemons.run(
File.join(File.dirname(__FILE__), 'worker.rb'),
{
:backtrace => true,
:log_output => true,
:dir_mode => :script,
:log_dir => '/tmp',
:monitor => true
}
)
答
你不应该运行为www-data
,因为这是一个特定用户到Apache。但是,您应该向可以访问这些文件的www用户组添加“joe”。
+0
太棒了,谢谢迈克! – Val 2011-04-26 11:59:57
只是FYI。用户“joe”启动的进程将无法更改为“www-data”的用户标识。它需要由root用户启动。 – Doon 2011-04-26 02:58:01
你是对的,乔只是一个例子:) – Val 2011-04-26 11:58:00
我通常处理上述的方式是要么使用操作系统设施setuid在启动脚本。或者像神一样设置有效的ID。 – Doon 2011-04-26 12:03:30