1. ホーム
  2. ruby-on-rails

[解決済み] PATHに "Insecure world writable dir /home/chance " という警告が出る、railsとgemのモード040777

2023-04-29 12:39:38

質問

私は この を試しましたが、うまくいかず、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

どのように解決するのですか?

もし、あなたが sudo chmod go-w /usr/local/bin を他の回答から試した場合は、試してみてください。

chmod go-w /home/chance

の代わりに

何が起こったかというと、どういうわけかホームディレクトリ ( /home/chance ) が、あなたの $PATH (起動する実行ファイルを探すときに OS が検索するディレクトリのリスト) に追加され、誰でも書き込めるようにパーミッションが変更されました。これはセキュリティ上の問題で、他のユーザがこのディレクトリに実行ファイルを置いて、あなたが誤って起動する可能性があります。Ruby はこのことに気づき、警告を発します。

このコマンドは、ディレクトリのパーミッションを変更し、もはや世界的に書き込みができないようにします。

unixでは、ファイルのパーミッションは、ファイルの所有者(user)、ファイルのグループ(group)、その他の人(other)の3つのカテゴリに対して指定されます。(unixのファイルパーミッションの詳細については、Googleを参照してください)。

ということで、上のコマンドを分解すると

chmod - ファイルの「モード」(つまりパーミッション)を変更します。

go - グループ(g)とその他(o)に対して

-w - (マイナスw)書き込み権限を削除

/home/chance - 該当するファイル(またはディレクトリ

他の回答では、問題を引き起こしていたディレクトリは /usr/local/bin で、これはrootによって所有されているので sudo はそのパーミッションを変更するために必要です。 /home/chance はあなたのホームディレクトリで、その所有者は chance ユーザが所有し、そのユーザはパーミッションを変更することができます。 sudo が必要です。