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:

  1. Enable the root user using Apple's instructions here (under the section 'Enable or disable the root user').
  2. 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.
  3. 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
    
  4. 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