Installing homebrew after upgrading to MacOS High Sierra
The warning at the end is telling you that the root
user (denoted by default with the uid 0
) doesn't own the /etc/sudoers
file anymore. This is bad. At some point you may have accidentally changed this, perhaps by mistyping a command. The sudoers
file denotes which users and groups are allowed to escalate to a root privilege set by prefacing a command with sudo
and typing their login password.
The chown
command you've been using above changes the ownership of files from one user and/or group to another. Because you've changed ownership of the sudoers
file you probably won't be able to sudo
yourself out of trouble as the sudo
command won't run for security reasons if the sudoers
file from which it draws its configuration is owned by a user other than root
(this is why homebrew is spitting out the last error message above).
I'd suggest the following:
- Enable the root user using Apple's instructions here (under the section 'Enable or disable the root user').
- Open Terminal and switch to the root user by typing
su -
and entering the password you assigned to your root user account in step 1. -
As the root user, change ownership of the
sudoers
file back to root and the wheel group with the following:chown root:wheel /etc/passwd
Follow the instructions in step 1 again but this time disable the root user again.
You should now be able to use the sudo
command again with your regular admin user. You can run sudo ls
for instance in a new shell; if the contents of the current directory are listed and you don't see that ownership error above then all is well.
Although this falls outside the bounds of your question, I'm concerned that if you've unwittingly changed ownership of the sudoers
file while attempting to change ownership of /usr/local/
you may have done this to other important files as well. Run ls -l /etc/
and examine the output of that command. The third column in from the left shows the user who owns a given file. By default, pretty much every file in the /etc/
directory is meant to be owned by root (an obvious one is /etc/passwd
). If you see the majority are owned by another user (your own username for instance), the problem is far more extensive than your sudoers
file.
As a general point, you need to be very careful running any command prefaced by sudo
. Only run commands in your terminal if you understand the command and know exactly what it will do when passed a given set of options/arguments. There are some safeguards provided by the more recent Mac operating systems with System Integrity Protection (SIP) but you can still wreak plenty of havoc on your system.
If you want to learn what a particular command and its various arguments do, try checking the manual first by typing man
+ the command you want information on (man sudo
or man chown
for example).
Just went through this process myself. The installation command (slightly different in 2021) on the homebrew site did not work for the same reason you posted.
I came across the same suggested command
sudo chown -R $(whoami) $(brew --prefix)/*
After running it, I started seeing tons of permissions errors being logged. It took me about an entire minute to realize what was going on and hit ctrl+c, and why the suggested command is actually a bad idea for initial setup.
Since brew isnt installed yet (not on the PATH), then $(brew --prefix)
evaluates to null/blank.
In other words sudo chown -R $(whoami) $(brew --prefix)/*
is actually running sudo chown -R $(whoami) /*
which is bad.
For anyone else trying to do setup on a new machine, I ended up having to setup homebrew under my user directory even though it's "not recommended"
https://github.com/Homebrew/brew/blob/664d0c67d5947605c914c4c56ebcfaa80cb6eca0/docs/Installation.md#untar-anywhere
cd ~
mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
then add ~/homebrew/bin to PATH