【发布时间】:2018-05-23 03:36:46
【问题描述】:
我们公司使用瘦客户端,并且有很多用户使用同一个盒子。我已按照以下网站上的说明将 rbenv 安装为系统安装;
https://blakewilliams.me/posts/system-wide-rbenv-install
归结为这些命令
cd /usr/local
git clone git://github.com/sstephenson/rbenv.git rbenv
chgrp -R staff rbenv
chmod -R g+rwxXs rbenv
通过运行最后一行,我们应该能够以系统的任何用户(属于“员工”组的一部分)的身份安装 gems。我们有两个开发人员属于该组,他们都不能安装 gem。
我们得到错误;
~ % gem install cheat
/usr/local/rbenv/versions/2.3.5/lib/ruby/2.3.0/rubygems/config_file.rb:332:in `exist?': Insecure operation - exist? (SecurityError)
from /usr/local/rbenv/versions/2.3.5/lib/ruby/2.3.0/rubygems/config_file.rb:332:in `load_file'
from /usr/local/rbenv/versions/2.3.5/lib/ruby/2.3.0/rubygems/config_file.rb:198:in `initialize'
from /usr/local/rbenv/versions/2.3.5/lib/ruby/2.3.0/rubygems/gem_runner.rb:75:in `new'
from /usr/local/rbenv/versions/2.3.5/lib/ruby/2.3.0/rubygems/gem_runner.rb:75:in `do_configuration'
from /usr/local/rbenv/versions/2.3.5/lib/ruby/2.3.0/rubygems/gem_runner.rb:40:in `run'
from /usr/local/rbenv/versions/2.3.5/bin/gem:21:in `<main>'
~ % gem install cheat
如果我从组中删除粘性位,那么他们可以添加 gem,但如果有人试图删除其他人安装的 gem,这将失败;
~ % chmod -R g-s rbenv
如何允许多个用户从系统范围的 rbenv 安装中安装/卸载 gem?
更新
这里是/usr/local/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems目录下的安装示例,如你所见
drwxrwxr-x 5 map7 map7 4.0K Jun 4 15:50 unicode-display_width-1.3.3
drwxrwxr-x 5 andre andre 4.0K May 23 13:22 vcr-3.0.3
drwxrwxr-x 3 map7 staff 4.0K Apr 30 11:01 web-console-3.6.2
我找到的解决方案是
: cd /usr/local/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0
: sudo chown -R map7:staff gems
: sudo chmod -R 775 gems
: sudo chmod g+s gems
【问题讨论】:
-
你有什么问题?
-
在末尾添加了对我的问题的说明。
-
您希望他们共享宝石还是有可能拥有单独的宝石?
-
分享宝石。我不想在同一台机器上保留两个副本,所以这就是我创建 rubies 系统安装的原因
标签: ruby permissions rubygems rbenv