警告:当我运行ruby或gem命令时,出现了不安全的可写目录

48

我不确定为什么会出现这个警告,但我刚刚安装了RVM、新的Ruby 1.9并重新安装了一些gems,然后我得到了如下警告:

/Users/johnsmith/.rvm/rubies/ruby-1.9.1-p378/bin/gem:4: 警告: 在PATH环境变量中存在一个权限为040777的不安全可写目录 /opt/local/bin

除此之外,一切都正常运行。但我想知道是否有办法消除这个警告。


可能是警告不安全的可写目录的重复问题。 - Kornel
1
@kenorb 呃.. 这个问题先被问了。 - Trip
5个回答

95

只需在 shell 提示符下输入 chmod go-w /opt/local/bin(根据权限,您可能需要使用 sudo)。


是的!你真是个天才!这就结束了我成功安装RVM,Ruby 1.9和64位挑战的过程 :D - Trip
2
@明,任何在你的机器上运行的程序都可以随意将任何内容放置在/opt/local/bin目录下(包括对系统文件的替换以及其他木马等),而不需要经过任何确认:这怎么能说不是不安全的呢?! - Alex Martelli
1
你是在说这个答案是一个可怕的想法,使用它会在我的系统中打开一个巨大的安全漏洞吗? - Timulus
6
chmod: /opt/local/bin: 没有那个文件或目录。 - Kirk Strobeck
1
在OSX中,将/usr/local/bin目录的写权限从组和其他用户中移除,可以使用命令chmod go-w /usr/local/bin - Davi Lima
谢谢,这帮助我解决了与同一问题相关的另一个问题。 - bradpotts

11
为了澄清,无论路径在它说不安全的可写世界之后返回什么,都是您要使用的内容。
所以,您会将 /opt/local/bin 替换为您的路径,而不是:chmod go-w /opt/local/bin。

3

找到您的Gem路径,以便我们可以编辑Bundler gem。在您的Shell中执行以下操作:

$ ruby -r rubygems -e "p Gem.path"

导航到您的Gem路径并进入当前使用的bundler版本。现在导航到lib -> bundler并在您最喜欢的文本编辑器中打开runtime.rb。在第2行添加“$ VERBOSE = nil”。

require "digest/sha1" 
$VERBOSE = nil 
module Bundler   
class Runtime < Environment
    include SharedHelpers

    def setup(*groups)
      # Has to happen first
      clean_load_path

...


这会使所有输出静音,包括来自rake任务的输出。这不是我想要的。 - Ortwin Gentz

1
在某些情况下(比如我的情况),堆栈深度超过了opt/local/bin。这种情况下,请使用:
sudo chmod go-w opt/local/*/bin usr/local/*/bin opt/local/bin usr/local/bin

无论如何,错误提示都指向了不安全的世界。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接