`brew link unbound` returns `/usr/local/sbin is not writable` error
By default /usr/local/sbin doesn't exist. The folder should be created by installing brew, the owner/permissions are set to $(whoami):admin/775. Most/all folders in /usr/local/ are owned by the user who installed brew - that's part of the default installation and configuration.
On the other hand some third-party tool may have been installed to this folder previously (e.g AFAIR procexp or Smartmontools have to be installed there). Then the owner/permissions are probably set to root:wheel/755 or root:wheel/775
To solve your problem check whether /usr/local/sbin exists and its folder permissions.
The following command creates this folder if it doesn't exist and makes it world writable, but doesn't change owner:group:
if [ ! -d /usr/local/sbin ]; then sudo mkdir /usr/local/sbin; fi && sudo chmod 777 /usr/local/sbin
Now you can link unbound:
brew link unbound
You may undo the world writable step with:
sudo chmod 775 /usr/local/sbin
Don't forget to add the folder to your user's PATH in ~/.bash_profile or the system's PATH in /etc/paths.
If you get the error:
Error: Could not symlink sbin/unbound
/usr/local/sbin is not writable.
the user doesn't have permissions to write to the folder with the command actually executed.
The command sudo chown -R $(whoami) /usr/local
will change the owner of all subfolders and their content to $(whoami) despite the error chown: /usr/local: Operation not permitted
. The only exception will be a SIP protected item in /usr/local/. By default none of the files and folder is protected though.
Thus the error message is erroneous and you probably already have been successful by entering your sudo chown -R ...
command and you should have tried to simply linked unbound once more.
You can check the folder permissions by entering:
ls -lae /usr/local/sbin
You can get all a protected items in subdirectories of local by entering:
ls -lae -R /usr/local | grep restricted
Running brew doctor
did the trick for me.
It diagnoses all manner of missing folders, folders with permissions that are known to cause problems and other fix ups you might need to perform after another process changes things or things just break.
Running brew doctor
will diagnose the issues for you.
For me sudo mkdir -p /usr/local/sbin
and sudo chown -R $(whoami) /usr/local/sbin
did the trick. Then I linked it to php by running
brew link php
And also sometimes you need to add:
echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.bash_profile
and restart the terminal.