Patches item #29269, was opened at 2011-06-11 01:33
You can respond by visiting:
http://rubyforge.org/tracker/?func=detail&atid=577&aid=29269&group_id=126
Category: None
Group: None
Status: Open
Resolution: None
Priority: 3
Submitted By: Jorge Jimenez (jjimenez)
Assigned to: Nobody (None)
Summary: Gem.set_paths fails on Etc.getpwuid.uid when running chrooted
Initial Comment:
In a chrooted environment with less privileges for /etc/passwd, method
set_paths fails on Etc.getpwuid.uid call because current user is not allowed to
read /etc/passwd file (for security matters). Changing Etc.getpwuid.uid by
Process.uid solve this issue.
I know this is not a bug, because /etc/passwd file must be readable by all
users, but Etc.getpwuid.uid must first call getuid() function prior to call
getpwuid() function and finally get the uid from the returned data, which is
the same uid that Process.uid returns. So I suggest the following change in
rubygems.rb:
@@ -720,7 +720,7 @@
if 0 == File.expand_path(path).index(Gem.user_home)
unless win_platform? then
# only create by matching user
- next if Etc.getpwuid.uid != File::Stat.new(Gem.user_home).uid
+ next if Process.uid != File::Stat.new(Gem.user_home).uid
end
end
ensure_gem_subdirectories path
Thus we can get the same behaviour, but using Process instead of Etc.getpwuid.
Regards
----------------------------------------------------------------------
You can respond by visiting:
http://rubyforge.org/tracker/?func=detail&atid=577&aid=29269&group_id=126
_______________________________________________
Rubygems-developers mailing list
http://rubyforge.org/projects/rubygems
[email protected]
http://rubyforge.org/mailman/listinfo/rubygems-developers