Don't accidentally inherit group "wheel" from /tmp
Because files on OS X are assigned the group of the directory in which they are created, using /tmp during the installation process would result in some installed files having the group "wheel" even though "admin" was intended. Thanks to Xu Cheng for suggesting a simpler location for the fix. Closes Homebrew/homebrew#45869 Closes Homebrew/homebrew#48732. Signed-off-by: Xu Cheng <xucheng@me.com>
This commit is contained in:
parent
fb9818ae8c
commit
ca77025f8b
@ -1,5 +1,6 @@
|
|||||||
require "fileutils"
|
require "fileutils"
|
||||||
require "tmpdir"
|
require "tmpdir"
|
||||||
|
require "etc"
|
||||||
|
|
||||||
# Homebrew extends Ruby's `FileUtils` to make our code more readable.
|
# Homebrew extends Ruby's `FileUtils` to make our code more readable.
|
||||||
# @see http://ruby-doc.org/stdlib-1.8.7/libdoc/fileutils/rdoc/FileUtils.html Ruby's FileUtils API
|
# @see http://ruby-doc.org/stdlib-1.8.7/libdoc/fileutils/rdoc/FileUtils.html Ruby's FileUtils API
|
||||||
@ -10,6 +11,23 @@ module FileUtils
|
|||||||
prev = pwd
|
prev = pwd
|
||||||
tmp = Dir.mktmpdir(prefix, HOMEBREW_TEMP)
|
tmp = Dir.mktmpdir(prefix, HOMEBREW_TEMP)
|
||||||
|
|
||||||
|
# Make sure files inside the temporary directory have the same group as the
|
||||||
|
# brew instance.
|
||||||
|
#
|
||||||
|
# Reference from `man 2 open`
|
||||||
|
# > When a new file is created, it is given the group of the directory which
|
||||||
|
# contains it.
|
||||||
|
group_id = if File.grpowned? HOMEBREW_BREW_FILE
|
||||||
|
File.stat(HOMEBREW_BREW_FILE).gid
|
||||||
|
else
|
||||||
|
Process.gid
|
||||||
|
end
|
||||||
|
begin
|
||||||
|
chown(nil, group_id, tmp)
|
||||||
|
rescue Errno::EPERM
|
||||||
|
opoo "Failed setting group \"#{Etc.getgrgid(group_id).name}\" on #{tmp}"
|
||||||
|
end
|
||||||
|
|
||||||
begin
|
begin
|
||||||
cd(tmp)
|
cd(tmp)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user