-
-
Save jaibeee/9a4ea6aa9d428bc77925 to your computer and use it in GitHub Desktop.
#!/bin/sh | |
# Configure homebrew permissions to allow multiple users on MAC OSX. | |
# Any user from the admin group will be able to manage the homebrew and cask installation on the machine. | |
# allow admins to manage homebrew's local install directory | |
chgrp -R admin /usr/local | |
chmod -R g+w /usr/local | |
# allow admins to homebrew's local cache of formulae and source files | |
chgrp -R admin /Library/Caches/Homebrew | |
chmod -R g+w /Library/Caches/Homebrew | |
# if you are using cask then allow admins to manager cask install too | |
chgrp -R admin /opt/homebrew-cask | |
chmod -R g+w /opt/homebrew-cask |
Might want to wrap the calls on /Library/Caches with an "if exists" -- mine didn't.
Why is this not the default for brew?
Thank you!
Very useful!
Changing perms on all of /usr/local breaks postgres (data directory has group of world access)
I get the following when I attempt to use this:
chgrp: /Library/Caches/Homebrew: No such file or directory
chmod: /Library/Caches/Homebrew: No such file or directory
chgrp: /opt/homebrew-cask: No such file or directory
chmod: /opt/homebrew-cask: No such file or directory
Should the script create these directories, if they don't exist, so that they get created with the right permissions, when they get created by homebrew (assuming they get created by homebrew) or will the chgrp do the right thing if the directories get created later?
Thanks was really helpful
In MacOS High Sierra you can't change the owner, group or permissions of /usr/local
so you have to use /usr/local/*
. You might want to update the script to reflect this.
@FrancoSabadini Thanks, /usr/local/* helped.
Unsure why the *
didn't fully work for me, but I needed to also run this for High Sierra.
chgrp -R admin /usr/local/var
chmod -R g+w /usr/local/var
Down the line, I also needed to run:
chgrp -R admin /usr/local/Homebrew
chmod -R g+w /usr/local/Homebrew
maybe the permissions keep resetting themselves somehow? unsure. I was unable to run brew update
because permission was denied to the .git
directory until I ran the above command.
Another one. I needed to do the same for /usr/local/etc
:
$ brew upgrade imagemagick
==> Upgrading 1 outdated package, with result:
imagemagick 7.0.7-30 -> 7.0.7-31
==> Upgrading imagemagick
Error: Permission denied @ unlink_internal - /usr/local/etc/ImageMagick-7/coder.xml
Can't we just create a separate group like brew users or the like and add all users to this. Then change the ownership of these folders to that group?
@coderxx this is exactly what I've done. Great thinking 🤓
Worked great, thanks.
This worked perfectly for me with multiple users on the same machine
https://medium.com/@leifhanack/homebrew-multi-user-setup-e10cb5849d59
In MacOS High Sierra you can't change the owner, group or permissions of
/usr/local
so you have to use/usr/local/*
. You might want to update the script to reflect this.
Tnx, very 'insightful'
All of this doesn't work on macOS BigSur. Only the user who installed all the Homebrew stuff is able to upgrade them afterwards. For all the other users the system complains with Operation not permitted
since th folder belongs to the other user. It seems like Homebrew does not respect the groups write permission and only looks for the user... :(
@Blackjacx I am on Big Sur and this is mostly working for me, but I have to reset permissions every now and then after upgrading.
It seems that this method might be better, any reason it may be less desirable?:
https://unix.stackexchange.com/a/714797/47012
some brew applications use other directories under /usr/local, for example mysql that uses /usr/local/var