¿Cómo instalo sudo insults en Mac?

¿Cómo instalo sudo insults en una terminal Mac?

Aparentemente, Apple lo ha limpiado de Darwin, por lo que agregarlo Defaults insultsno sudo visudoayuda.


Las cosas insultantes que dice el comando sudo cuando ingresas una contraseña incorrecta.

Respuestas (1)

Para instalar un sudo con insultos tienes que compilarlo tú mismo:

Requisitos: Xcode 8.0, Sierra 10.12, probablemente SIP deshabilitado

  • Copia de seguridad de sudo y visudo:

    sudo cp /usr/bin/sudo  /usr/bin/sudo.backup
    sudo cp /usr/sbin/visudo  /usr/sbin/visudo.backup
    
  • Crear un directorio:mkdir sudo
  • Cambiar al directorio:cd sudo
  • Curl el sudo de código abierto de Apple:

    curl https://opensource.apple.com/tarballs/sudo/sudo-83.tar.gz | tar zxf -
    
  • cd a la carpeta fuente:

    cd sudo-83/src
    
  • configurar, hacer y hacer instalarlo:

    ./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
    

    ¡El archivo sudo-83/src/INSTALL contiene muchas más opciones de ajuste para el comando de configuración!

  • Los archivos pueden instalarse en /usr/local/bin/ y /usr/local/sbin/ por lo que es posible que deba moverlos (en mi caso tuve que hacerlo):

    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
    

    o modifique su ruta y anteponga /usr/local/bin y /usr/local/sbin.

  • Ingresar/usr/bin/sudo /usr/sbin/visudo

  • Agregue la línea en el modo de inserción (simplemente presione i)

    Defaults        lecture_file = "/etc/sudo_lecture" #<-already there
    Defaults        insults
    

    Guarde el archivo después de presionar esccon :wq!.

  • Probablemente tengas que salir y reiniciar Terminal ahora.

Resultados:

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

¡Los archivos pueden sobrescribirse después de una actualización/mejora del sistema!


La recompilación de sudo con insultos también funciona en sistemas más antiguos; sin embargo, debe elegir el tarball respectivo (por ejemplo, sudo-73.tar.gz debería funcionar con 10.9 y 10.10).


Al modificar ins_*.h en la carpeta src , debería poder incluir más insultos. También puede agregar archivos ins_*.h adicionales, pero luego debe incluirlos en insults.h como ya están los otros cuatro. ¡También puedes incluir insultos que no sean en inglés, por supuesto!

@displayName Probé el procedimiento en una máquina virtual y funcionó. Los dos archivos sudo difieren notablemente en tamaño: el original tiene unos 370 KB, el modificado (con insultos) es mucho más pequeño: ~235 KB. Por favor, chequee esto. Puedo volver a ejecutar la compilación y verificar el tamaño exacto y/o cargarlo en algún lugar
Acabo de probarlo en macOS Mojave 10.14.3 y funcionó bien. Solo que los archivos sudo no se pueden reemplazar y la ruta debe actualizarse, como se describe en la respuesta.
¿Es posible recompilar sudomientras se sigue permitiendo el truco de TouchID?
@MaxCoplan sudono debería depender del método de autenticación. Pero no puedo probar esto porque no tengo ningún dispositivo TouchID.
por favor vea mi pregunta completa