Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Infinite loop on gemset create if the user does not have write permissions #4102

Closed
DanielRussell opened this issue Jul 12, 2017 · 0 comments

Comments

@DanielRussell
Copy link
Contributor

Description

When a user attempts to create a new gemset, but does not have write permissions in the gem directory, rvm goes into an infinite loop.

Steps to reproduce

  1. Perform a Multi-User
  2. Ensure a user is not a member of the rvm group
  3. Run /usr/local/rvm/bin/rvm ruby-2.4.1 gemset create my-gemset

NOTE: I'm running rvm directly like this because it's part of a CI job; easier to run directly than to source into the environment.

Expected behavior

I would expect rvm to return an error.

Actual behavior

Infinite loop / fork bomb which required a system reboot.

$ groups
users docker
$ ls -dl /usr/local/rvm/gems/ruby-2.4.1
drwxrwsr-x 6 root rvm 4096 May  5 15:23 /usr/local/rvm/gems/ruby-2.4.1
$ /usr/local/rvm/bin/rvm ruby-2.4.1 gemset create my-gemset
mkdir: cannot create directory ‘/usr/local/rvm/gems/ruby-2.4.1@my-gemset’: Permission denied
mkdir: cannot create directory ‘/usr/local/rvm/gems/ruby-2.4.1@my-gemset’: Permission denied
ruby-2.4.1 - #gemset created /usr/local/rvm/gems/ruby-2.4.1@my-gemset
mkdir: cannot create directory ‘/usr/local/rvm/gems/ruby-2.4.1@my-gemset’: Permission denied
mkdir: cannot create directory ‘/usr/local/rvm/gems/ruby-2.4.1@my-gemset’: Permission denied
ruby-2.4.1 - #gemset created /usr/local/rvm/gems/ruby-2.4.1@my-gemset
mkdir: cannot create directory ‘/usr/local/rvm/gems/ruby-2.4.1@my-gemset’: Permission denied
mkdir: cannot create directory ‘/usr/local/rvm/gems/ruby-2.4.1@my-gemset’: Permission denied
...

Environment info

$ rvm info

ruby-2.2.3:

  system:
    uname:        "Linux my-hostname 4.9.32-15.41.amzn1.x86_64 #1 SMP Thu Jun 22 06:20:54 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux"
    name:         "Amazon"
    version:      "2017.03"
    architecture: "x86_64"
    bash:         "/bin/bash => GNU bash, version 4.2.46(1)-release (x86_64-redhat-linux-gnu)"
    zsh:          " => not installed"
    remote path:  "amazon/2017.03/x86_64"

  rvm:
    version:      "rvm 1.29.2 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io/]"
    updated:      "11 minutes 46 seconds ago"
    path:         "/usr/local/rvm"
    autolibs:     "[4] Allow RVM to use package manager if found, install missing dependencies, install package manager (only OS X)."

  ruby:
    interpreter:  "ruby"
    version:      "2.2.3p173"
    date:         "2015-08-18"
    platform:     "x86_64-linux"
    patchlevel:   "2015-08-18 revision 51636"
    full_version: "ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]"

  homes:
    gem:          "/usr/local/rvm/gems/ruby-2.2.3"
    ruby:         "/usr/local/rvm/rubies/ruby-2.2.3"

  binaries:
    ruby:         "/usr/local/rvm/rubies/ruby-2.2.3/bin/ruby"
    irb:          "/usr/local/rvm/rubies/ruby-2.2.3/bin/irb"
    gem:          "/usr/local/rvm/rubies/ruby-2.2.3/bin/gem"
    rake:         "/usr/local/rvm/rubies/ruby-2.2.3/bin/rake"

  environment:
    PATH:         "/usr/local/rvm/gems/ruby-2.2.3/bin:/usr/local/rvm/gems/ruby-2.2.3@global/bin:/usr/local/rvm/rubies/ruby-2.2.3/bin:/usr/local/src/nvm/versions/node/v4.2.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/go/bin:/usr/local/go-global/bin:/opt/aws/bin:/usr/local/rvm/bin:/home/dpr/bin"
    GEM_HOME:     "/usr/local/rvm/gems/ruby-2.2.3"
    GEM_PATH:     "/usr/local/rvm/gems/ruby-2.2.3:/usr/local/rvm/gems/ruby-2.2.3@global"
    MY_RUBY_HOME: "/usr/local/rvm/rubies/ruby-2.2.3"
    IRBRC:        "/usr/local/rvm/rubies/ruby-2.2.3/.irbrc"
    RUBYOPT:      ""
    gemset:       ""

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants