MacOS sudo wtf
19 Oct 2017 22:55 | macOS | security
I’ve just discovered something totally batshit about sudo on macOS.
Spot the difference..
Linux:
$ ls -la /tmp/wtf ls: cannot access ‘/tmp/wtf’: No such file or directory $ echo “touch /tmp/wtf” >> ~/.bashrc $ sudo bash
ls -la /tmp/wtf
ls: cannot access ‘/tmp/wtf’: No such file or directory
macOS:
$ ls -la /tmp/wtf ls: /tmp/wtf: No such file or directory $ echo “touch /tmp/wtf” >> ~/.bashrc $ sudo bash
ls -la /tmp/wtf
-rw-r–r– 1 root wheel 0 19 Oct 22:58 /tmp/wtf
!!!!!
So when sudo’ing to root it executes ~/.bashrc in the original user’s home directory.. as root?!
Just to make sure I wasn’t going crazy or that this wasn’t an artefact of my customised dotfiles I tried it on a fresh 10.13 VM with a fresh user account.
---- Update 19/10 23:16
Turns out this is the default on macOS:
grep HOME /etc/sudoers
Defaults env_keep += “HOME MAIL”
So when you elevate you retain your home dir and it will execute the dotfiles there rather than in /var/root/
Madness.
