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 "tmpdir"
 | 
			
		||||
require "etc"
 | 
			
		||||
 | 
			
		||||
# 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
 | 
			
		||||
@ -10,6 +11,23 @@ module FileUtils
 | 
			
		||||
    prev = pwd
 | 
			
		||||
    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
 | 
			
		||||
      cd(tmp)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user