在PATH中获取警告"不安全世界可写dir/home/chance",模式040777用于rails和gem

Cha*_*nce 80 ruby linux gem ruby-on-rails rvm

我试过这个,但它没有用,似乎是osx.我有一个新的Ubuntu 10.10安装与rvm,rails 3和ruby 1.9.2.我有一个新的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
Run Code Online (Sandbox Code Playgroud)

$ 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
Run Code Online (Sandbox Code Playgroud)

只是重要的是,这是我的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
Run Code Online (Sandbox Code Playgroud)

mat*_*att 181

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

chmod go-w /home/chance
Run Code Online (Sandbox Code Playgroud)

代替.

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

此命令更改目录的权限,以使其不再是全局可写的.

在unix中,为三个类别指定文件权限,文件所有者(用户),文件组(组)和其他所有人(其他).(有关unix文件权限的更多信息,请参阅Google).

所以打破上面的命令:

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

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

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

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

在另一个答案中,导致问题的目录是/usr/local/binroot所拥有的,因此sudo需要更改它的权限./home/chance是您的主目录,由chance可以更改权限的用户拥有- sudo不需要.


小智 35

您可以将chmod go-w用于终端为您提供的任何路径.

因此,如果它将/ usr/local称为错误消息中的路径:

warning: Insecure world writable dir /usr/local in PATH, mode 040777
Run Code Online (Sandbox Code Playgroud)

你写

chmod go-w /usr/local
Run Code Online (Sandbox Code Playgroud)


bry*_*nus 21

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

chmod -R go-w /Users/username
Run Code Online (Sandbox Code Playgroud)


Waz*_*ery 8

(如果您在Mac中)尝试从磁盘实用程序中选择"修复磁盘权限"

在此输入图像描述

细节日志中的几行可能会说:

Permissions differ on “usr”; should be drwxr-xr-x ; they are drwxrwxrwx.
Repaired “usr”
Run Code Online (Sandbox Code Playgroud)

  • 问题是标记Linux,而不是Mac.不过这个帖子是谷歌的第一个热门,而且我在Mac上,所以这对我有用![Canonical Mac在这里回答相同的问题](http://stackoverflow.com/a/23271756/62269). (3认同)

Pab*_*bio 5

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

让它工作的事情是 chmod go-w /User/username/.rvm