From 1fe644f84f34c1df39d368c31f152cdcde8cbf6f Mon Sep 17 00:00:00 2001 From: Roland Walker Date: Wed, 7 May 2014 10:56:04 -0400 Subject: [PATCH] special case permissions when creating `/opt` or any other toplevel directory. Closes #4187 --- lib/cask.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/cask.rb b/lib/cask.rb index f8738d45b069..fc5bce840215 100644 --- a/lib/cask.rb +++ b/lib/cask.rb @@ -55,9 +55,19 @@ def self.init if caskroom.parent.writable? system '/bin/mkdir', caskroom else + toplevel_dir = caskroom + toplevel_dir = toplevel_dir.parent until toplevel_dir.parent.root? + unless toplevel_dir.directory? + # If a toplevel dir such as '/opt' must be created, enforce standard permissions. + # sudo in system is rude. + system '/usr/bin/sudo', '--', '/bin/mkdir', '--', toplevel_dir + system '/usr/bin/sudo', '--', '/bin/chmod', '--', '0775', toplevel_dir + end # sudo in system is rude. system '/usr/bin/sudo', '--', '/bin/mkdir', '-p', '--', caskroom - system '/usr/bin/sudo', '--', '/usr/sbin/chown', '-R', '--', "#{current_user}:staff", caskroom.parent + unless caskroom.parent == toplevel_dir + system '/usr/bin/sudo', '--', '/usr/sbin/chown', '-R', '--', "#{current_user}:staff", caskroom.parent + end end end end