How do I install sudo insults† on Mac terminal?
Apparently Apple has cleaned it up from Darwin, so adding
Defaults insults through
sudo visudo does not help.
† The insulting things sudo command says when you enter wrong password.
Ask Different is a question and answer site for power users of Apple hardware and software. It only takes a minute to sign up.Sign up to join this community
To install a sudo with insults you have to compile it yourself:
Requirements: Xcode 8.0, Sierra 10.12, probably SIP disabled
Backup sudo and visudo:
sudo cp /usr/bin/sudo /usr/bin/sudo.backup sudo cp /usr/sbin/visudo /usr/sbin/visudo.backup
Curl the Apple open source sudo:
curl https://opensource.apple.com/tarballs/sudo/sudo-83.tar.gz | tar zxf -
cd to the source folder:
configure, make and make install it:
./configure --with-password-timeout=0 --disable-setreuid --with-env-editor --with-pam --with-libraries=bsm --with-noexec=no --sysconfdir="/private/etc" --with-timedir="/var/db/sudo" --with-all-insults make sudo make install
The file sudo-83/src/INSTALL contains a lot more tweak options for the configure command!
The files may be installed to /usr/local/bin/ and /usr/local/sbin/ so you may have to move them (in my case I had to):
sudo mv /usr/local/sbin/visudo /usr/sbin/visudo sudo rm /usr/local/bin/sudoedit sudo mv /usr/local/bin/sudoreplay /usr/bin/ sudo mv /usr/local/bin/sudo /usr/bin/sudo /usr/bin/sudo ln -s /usr/bin/sudo /usr/bin/sudoedit
or modify your path and prepend /usr/local/bin and /usr/local/sbin.
Add the line in insert mode (simply hit i)
Defaults lecture_file = "/etc/sudo_lecture" #<-already there Defaults insults
Save the file after hitting esc with
host:~ user$ ls -l /usr/bin/sudo* -rwsr-xr-x 1 root wheel restricted 225428 Oct 19 02:01 /usr/bin/sudo -r-x--x--x 1 root wheel restricted 369136 Oct 19 02:00 /usr/bin/sudo.backup lrwxr-xr-x 1 root wheel restricted 13 Oct 19 02:03 /usr/bin/sudoedit -> /usr/bin/sudo -rwxr-xr-x 1 root wheel restricted 49544 Oct 19 02:01 /usr/bin/sudoreplay host:~ user$ sudo openssl sha1 /usr/bin/sudo* SHA1(/usr/bin/sudo)= 87d9ad990813b5a949d07267d566bb3a1fddeec0 SHA1(/usr/bin/sudo.backup)= 088c317bf7b8a146803533173699021b9aef5b16 SHA1(/usr/bin/sudoedit)= 87d9ad990813b5a949d07267d566bb3a1fddeec0 SHA1(/usr/bin/sudoreplay)= f76c5ad8d6f2aebbc24d77fee54a54ba9d207e25 Last login: Wed Oct 19 02:09:33 on console host:~ user$ sudo ifconfig Password: Do you think like you type? Password: He has fallen in the water! Password: I don't wish to know that. sudo: 3 incorrect password attempts
The files may be overwritten after a system update/upgrade!
Recompiling sudo with insults also works in older systems - you have to choose the respective tarball though (e.g. sudo-73.tar.gz should work with 10.9 and 10.10).
By modifying the ins_*.h in the src folder you should be able to include more insults. You can also add additional ins_*.h files but then you have to include them in insults.h like the other four already are. You may also include non-english insults of course!