在PATH模式040777的PATH中获得警告“不安全的世界可写目录/ home / chance”,用于rails和gem


84

我已经尝试过了,但是它没有用,似乎适用于osx。我用rvm,rails 3和ruby 1.9.2重新安装了Ubuntu 10.10。我有一个新鲜的Rails应用程序,但是使用gem或rails会导致以下警告(带有滞后)。

$ rails -v

/home/chance/.rvm/gems/ruby-1.9.2-p180@global/gems/railties-3.0.5/lib/rails/script_rails_loader.rb:11: warning: Insecure world writable dir /home/chance in PATH, mode 040777
/home/chance/.rvm/gems/ruby-1.9.2-p180@global/gems/bundler-1.0.10/lib/bundler/runtime.rb:136: warning: Insecure world writable dir /home/chance in PATH, mode 040777
Rails 3.0.5

$ gem -v

/home/chance/.rvm/rubies/ruby-1.9.2-p180/bin/gem:4: warning: Insecure world writable dir /home/chance in PATH, mode 040777
1.6.2

以防万一,这是我的Gemfile:

source 'http://rubygems.org'

gem 'rails'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
gem 'sqlite3-ruby', :require => 'sqlite3'
gem "haml"
gem "formtastic"
gem "will_paginate"
gem "devise"
gem "delayed_job"
gem "whenever"
gem "memcache-client"
gem "capistrano"
group :testing do
  gem "rspec"
  gem "rspec-rails"
  gem "autotest-standalone"
  gem "autotest-rails"
  gem "autotest-growl"
  gem "mocha"
  gem "shoulda"
  gem "factory_girl_rails"
end

group :development do
  gem "cheat"
  gem "bullet"
  gem "ruby-growl"

end

如果它是相同的解决方案,我也会在stackoverflow.com/questions/5360327/…上获得赏金。我的服务器实际上将启动,所以我不知道这是否是相同的问题。(我是* nix newb)
机会

1
当您说您尝试了另一个问题的答案时,是否只是使用了建议的命令sudo chmod go-w /usr/local/bin?如果是这样,请尝试chmod go-w /home/chance
马特

马特,你真的可以回答吗?这是一个愚蠢的问题,但是/ usr / local / bin静默失败,所以我认为chmod可以通过。谢啦。
机遇


我收到了/ usr / lib的上述错误-并且甚至无法执行chmod go-w,因为除Root以外的任何用户都没有权限。由于某些原因,我无法输入Root。因此,除了忽略之外,现在还有什么解决方案?
Chaitanya Bapat

Answers:


188

如果您尝试sudo chmod go-w /usr/local/bin使用其他答案,请尝试:

chmod go-w /home/chance

代替。

似乎已发生的事情是,您的主目录(/home/chance)已以某种方式添加到您$PATH的目录中(操作系统在尝试查找要启动的可执行文件时搜索的目录列表),并且其权限也已更改,以便任何人都可以写入它。这可能是一个安全问题,因为另一个用户可能会将可执行文件放入此目录中,而您可能会意外启动该可执行文件。Ruby注意到这一点并发出警告。

此命令更改目录的权限,使其不再可写入世界。

在UNIX中,为以下三个类别指定了文件许可权:文件所有者(用户),文件组(组)和其他所有人(其他)。(有关Unix文件权限的更多信息,请参见Google)。

因此,分解上面的命令:

chmod -更改文件的“模式”(即其权限)

go -对于组(g)和其他(o)

-w -(减w)删除写入权限

/home/chance -有问题的文件(或目录)

在另一个答案中,引起问题的目录为,该目录/usr/local/bin归root拥有,因此sudo需要更改其权限。/home/chance是您的主目录,该目录由chance可以更改其权限的用户拥有-sudo不需要。


关于我Lubuntu 16.04的警告:Insecure world writable dir /tmp/. in PATH, mode 041777还在警告上造成无限循环。然后我执行了sudo chmod go-w /tmp命令,它解决了问题。
Stephane '18

38

您可以使用chmod go-w到终端给您的任何路径。

因此,如果错误消息中的路径是/ usr / local:

warning: Insecure world writable dir /usr/local in PATH, mode 040777

你写

chmod go-w /usr/local

22

我不得不使用-R来修复我的问题:

chmod -R go-w /Users/username

除非您知道自己在做什么,否则不要使用sudo运行!(您已检查了其中每个文件夹的权限)
qwr

9

(如果您使用的是Mac,则)尝试使用磁盘实用程序中的“修复磁盘权限”选项

在此处输入图片说明

在详细信息日志中可能有两行显示:

Permissions differ on “usr”; should be drwxr-xr-x ; they are drwxrwxrwx.
Repaired “usr”

4
问题被标记为Linux,而不是Mac。但是,该线程是Google的第一个热门搜索,而且我使用的是Mac,因此对我有用!Canonical Mac在这里回答相同的问题
2014年

5

我在Mac中,因此/ home /用户名对我不起作用。但是,当我尝试更改/ User /的权限时 username的,错误仍然存​​在。

使它起作用的是 chmod go-w /User/username/.rvm


1
那是因为问题出在/ usr文件夹,而不是/ User / username或〜(home)文件夹。
Eduardo Chongkan

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.