Получение предупреждения «Небезопасный мир, доступный для записи, каталог / дом / шанс» в PATH, режим 040777 для rails и gem

85

Я пробовал это, но это не сработало и, похоже, для 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

$ 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/…, если это то же самое решение. Мой сервер действительно запустится, поэтому я не знал, была ли это та же проблема. (Im a * nix newb)
Chance
1
Когда вы сказали , что вы пытались ответ от другого вопроса, вы просто использовать команду предложили там: sudo chmod go-w /usr/local/bin? Если так, попробуйте chmod go-w /home/chanceвместо этого.
Matt
Мэтт, ты можешь ответить этим? это был глупый вопрос, но / usr / local / bin молча потерпел неудачу, поэтому я подумал, что chmod прошел. Спасибо чувак.
Chance
Я получаю указанную выше ошибку для / usr / lib - и даже не могу выполнить chmod go-w, поскольку нет разрешения для любого пользователя, кроме Root. По определенным причинам не могу войти в Root. Следовательно, какое решение теперь, кроме игнорирования?
Чайтанья

Ответы:

188

Если вы пробовали sudo chmod go-w /usr/local/binдругой ответ, попробуйте:

chmod go-w /home/chance

вместо.

Похоже, что произошло то, что каким-то образом ваш домашний каталог ( /home/chance) был добавлен в ваш $PATH(список каталогов, которые ОС ищет при попытке найти исполняемый файл для запуска), а также были изменены его разрешения, чтобы любой мог писать в него. Это потенциальная проблема безопасности, поскольку другой пользователь может поместить исполняемый файл в этот каталог, который вы могли случайно запустить. Руби замечает это и выдает предупреждение.

Эта команда изменяет права доступа к каталогу, чтобы он больше не был доступен для записи.

В unix права доступа к файлам указаны для трех категорий: владельца файла (пользователя), группы файла (группы) и всех остальных (других). (Подробнее о разрешениях файлов unix см. В Google).

Итак, разбивая команду выше:

chmod - изменить "режим" файла (т.е. его права доступа)

go - для группы (г) и других (о)

-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команду, и проблема была решена.
Стефан
38

Вы используете команду chmod go-w для любого пути, который вам дает терминал.

Итак, если в качестве пути в сообщении об ошибке указано / usr / local:

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

Ты пишешь

chmod go-w /usr/local
Темо Дапе
источник
23

Мне пришлось использовать -R, чтобы исправить мою:

chmod -R go-w /Users/username
Bryanus
источник
Не запускайте sudo, если не знаете, что делаете! (вы проверили разрешения для каждой папки внутри)
qwr 05
9

(Если у вас Mac) Попробуйте опцию «Восстановить права доступа к диску» из дисковой утилиты.

введите описание изображения здесь

Вероятно, пара строк в подробном журнале скажет:

Permissions differ on “usr”; should be drwxr-xr-x ; they are drwxrwxrwx.
Repaired “usr”
Wazery
источник
4
Вопрос помечен как Linux, а не Mac. Однако эта ветка была первым хитом Google, и я использую Mac, так что у меня это сработало! Canonical Mac ответит на тот же вопрос здесь .
Bluu
5

Я использую Mac, поэтому / home / username у меня не работает. Однако, когда я попытался изменить разрешения для / User / username , ошибка не исчезла.

То, что заставило его работать, было chmod go-w /User/username/.rvm

Пабло Марамбио
источник
1
это потому, что проблема исходит из папки / usr, а не из папки / User / username или ~ (home).
Эдуардо Чонгкан
3

Если ваша среда не позволяет вам исправить эту ошибку должным образом (т.е. ruby ​​находится в общем сетевом ресурсе или в каком-то другом), см. Этот ответ , чтобы узнать, как устранить ошибку .

Коннор МакКей
источник