当我运行Ruby命令(比如gem -v)时,会出现以下错误:

/Users/kristofer/.rvm/rubies/ruby-1.9.2-p180/bin/gem:4:

1.6.2

首先,我不明白这意味着什么/根据echo $PATH,用户/克里斯托弗不在我的道路上.echo $PATH的结果是:

/Users/kristofer/.rvm/gems/ruby-1.9.2-p180/bin:/Users/kristofer/.rvm/gems/ruby-1.9.2-p180@global/bin:/Users/kristofer/.rvm/rubies/ruby-1.9.2-p180/bin:/Users/kristofer/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

正如你所见,这条路很干净.只是默认路径+RVM添加的内容.

我看到过其他类似的帖子,推荐的解决方法是运行chmod go-w path/to/folder

然而,我很确定让我的主文件夹不可写是个坏主意,对吗?我已经使用Disk Utility修复了权限,它没有发现我的主文件夹上的权限有任何问题.

你知道问题是什么吗?我该怎么解决?

推荐答案

你的主文件夹只能由你自己写,其他人不能写.gem抱怨这一点的原因是,你的路径中有文件夹,它们位于你的(不安全的)主文件夹中,这意味着任何想要的人都可以通过重命名/移动你的文件夹来攻击你.rvm文件夹,并将其替换为冒名顶替者.

要修复主文件夹,请运行chmod go-w /Users/kristoffer.如果有任何其他不安全的文件夹在你的路径上,你应该修复他们类似的方式.

顺便说一句,Disk Utility之所以没有修复这个问题,是因为它只修复作为操作系统一部分安装的文件(请参阅Apple's KB article on the subject).如果从安装DVD启动并从实用程序菜单运行密码重置,可以 Select 修复主文件夹权限,但我不确定它是重置权限本身还是仅重置所有权.

Ruby相关问答推荐

扫描不带空格的字符串中的单词

Ruby:如何在 vanilla ruby​​ 中使用有效支持日期?

每秒做某事 x 次

有没有办法在 Capybara 中保持登录状态?

Python 正则表达式是否等同于 Ruby 的原子分组?

在Ruby中将嵌套哈希键从CamelCase转换为snake_case

类中的 Ruby 类(或模块中的模块)

在 Ruby 中,获取第一个块返回 true 的可枚举元素的最快方法是什么?

osx bash上的树命令

为什么整数除法在许多脚本语言中舍入?

查找两个数组之间的共同值

如何删除Ruby中数组中满足条件的所有元素?

什么是匹配不在行尾的字符串的正则表达式?

rbenv、rvm 和 chruby 有什么区别?

to_proc 方法是什么意思?

哪个键/值存储最有前途/最稳定?

如何在 Ruby 中向异常消息中添加信息?

如何在 Ruby 中对数组进行分块

在 Ruby 中使用元组?

传递块时 Array#sort 如何工作?