whi*_*ark 15 linux sudo path gem
简而言之:如何让 sudo 每次都不刷新 PATH?
我在我的服务器上部署了一些网站(Debian 测试),这些网站是用 Ruby on Rails 编写的。我使用 Mongrel+Nginx 来托管它们,但是当我需要重新启动 Mongrel(例如,在进行一些更改之后)时会出现一个问题。
所有站点都在 VCS 中检查(git,但这并不重要)并且将所有者和组设置为我的用户,而 Mongrel 运行在权限受到严格限制的 mongrel 用户下。所以Mongrel必须在root下启动(它可以自动改变UID)或mongrel。
为了管理 mongrel,我使用 mongrel_cluster gem,因为它允许只用一个命令启动或停止任意数量的 Mongrel 服务器。但是它需要目录 /var/lib/gems/1.8/bin 位于 PATH 中:这不足以以绝对路径启动它。
在 root .bashrc 中修改 PATH 没有任何改变,调整 sudo 的 env_reset 和 env_keep 也没有。
所以问题是:如何将目录添加到 PATH 或将用户的 PATH 保留在 sudo 中?
更新:一些例子
$ env | grep PATH
PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/var/lib/gems/1.8/bin
$ sudo cat /etc/sudoers | egrep -v '^$|^#'
Defaults env_keep = "PATH"
root ALL=(ALL) ALL
%sudo ALL=NOPASSWD: ALL
$ sudo env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
Run Code Online (Sandbox Code Playgroud)
我也可以说它在 Debian stable (lenny) 中也是这样工作的。
小智 13
为同样的问题苦苦挣扎了几个小时。在 debian lenny 中,您可以通过添加来修复它
Defaults exempt_group=<your group>
Run Code Online (Sandbox Code Playgroud)
到 sudoers 文件。
这是绕过编译的 --secure-path 选项的唯一方法(据我所知)。
值得注意的是,这也将免除用户在执行 sudo 时需要输入密码。
| 归档时间: |
|
| 查看次数: |
17846 次 |
| 最近记录: |