permitir sudo a otro usuario sin contraseña

Quiero poder 'su' a un usuario específico, permitiéndome ejecutar cualquier comando sin ingresar una contraseña.

Por ejemplo:

Si mi inicio de sesión fuera usuario1 y el usuario al que quiero 'su' es usuario2:

Yo usaría el comando:

su - user2

pero luego me pide

Password:

Pregunta al otro usuario por la contraseña. Al menos el otro usuario sabe lo que se ha hecho con su id.
Esto no tiene nada que ver con otro usuario físico. Ambas identificaciones son mías. Conozco la contraseña cuando creé la cuenta. Simplemente no quiero tener que escribir la contraseña cada vez.
¿Estaría bien usar ssh en el usuario o necesita heredar un shell en particular y necesita que su funcione?
@bmike Quiero hacer esto porque quiero ejecutar dos copias de Skype según las instrucciones aquí; apple.stackexchange.com/questions/903/… - Esto funciona bien, pero me gustaría automatizarlo aún más usando un script que automáticamente se convertirá en otro usuario y ejecutará Skype.
@zio Gran caso de uso. ¿ open -na SkypeNo te funciona?
@bmike provoca un conflicto y errores con "Tienes otra copia de Skype en ejecución". El uso de una cuenta de usuario diferente para la segunda copia permite que se ejecute. (Vea el enlace de arriba para más información)

Respuestas (2)

sudopuede hacer eso por ti :)

Sin embargo, necesita un poco de configuración, pero una vez hecho esto, solo haría esto:

sudo -u user2 -s

Y usted iniciaría sesión como usuario2 sin ingresar una contraseña.

Configuración

Para configurar sudo, debe editar su archivo de configuración a través de: visudo. Nota: este comando abrirá la configuración usando el vieditor de texto, si no se siente cómodo con eso, necesita configurar otro editor (usando export EDITOR=<command>) antes de ejecutar la siguiente línea. Otro editor de línea de comandos que a veces se considera más fácil es nano, por lo que harías export EDITOR=/usr/bin/nano. Por lo general, necesita privilegios de superusuario para visudo:

sudo visudo

Este archivo está estructurado en diferentes secciones, los alias, luego los valores predeterminados y finalmente al final tienes las reglas. Aquí es donde debe agregar la nueva línea. Así que navega al final del archivo y agrega esto:

user1    ALL=(user2) NOPASSWD: /bin/bash

También puede reemplazar /bin/bashpor ALLy luego podría ejecutar cualquier comando como usuario2 sin una contraseña: sudo -u user2 <command>.

Si desea poder cambiar a cualquier usuario, simplemente use

user1    ALL=(ALL) NOPASSWD: /bin/bash

Actualizar

Acabo de ver tu comentario sobre Skype. Podría considerar agregar Skype directamente al archivo de configuración de sudo. Supongo que tienes Skype instalado en tu carpeta de Aplicaciones :

user1    ALL=(user2) NOPASSWD: /Applications/Skype.app/Contents/MacOS/Skype

Entonces llamarías desde la terminal:

sudo -u user2 /Applications/Skype.app/Contents/MacOS/Skype
Esto es mucho menos complicado que la idea de las claves ssh, así que utilícelo a menos que también necesite las claves ssh para el acceso remoto.
Una cosa a tener en cuenta desde una perspectiva de seguridad es que especificar un comando específico implica que debe ser un comando de solo lectura para el usuario1; De lo contrario, pueden sobrescribir el comando con otra cosa y ejecutarlo como usuario2. Y si no le importa eso, también podría especificar que el usuario1 puede ejecutar cualquier comando como usuario2 y, por lo tanto, tener una configuración de Sudo más simple.
@StanKurdziel buen punto! Aunque es algo a tener en cuenta, es muy raro que los usuarios puedan escribir ejecutables del sistema a menos que seas root, pero en este caso no necesitas sudo ;-) Pero tienes razón al agregar este comentario porque es muy raro que probablemente lo he pasado por alto más de una vez.
Para acercarlo más al comportamiento su - user2en lugar de su user2, todos los comandos probablemente deberían incluir sudo -u user2 -i, para simular un inicio de sesión inicial como usuario2

Configuraría claves ssh públicas/privadas para la segunda cuenta y almacenaría la clave en la primera cuenta.

Entonces podría ejecutar un comando como:

 ssh user@localhost -n /Applications/Skype.app/Contents/MacOS/Skype &

Todavía tendría los problemas en los que Skype se confunde, ya que dos instancias se ejecutan en una cuenta de usuario y los archivos leídos/escritos por ese programa pueden entrar en conflicto. También podría funcionar lo suficientemente bien para sus necesidades y no necesitaría un iPod touch para ejecutar su segunda instancia de Skype.

Esta es una buena solución segura para el caso general de inicio de sesión sin contraseña en cualquier cuenta en cualquier host, pero diría que probablemente sea excesivo cuando ambas cuentas están en el mismo host y pertenecen al mismo usuario.
@scottishwildcat Es mucho más seguro que la alternativa de escribir la contraseña y escribirla en texto claro o usar una variable y almacenar la contraseña en el llavero y usar una herramienta como expectpara escribir la interacción. Solo uso sudo su - blahy escribo mi contraseña. Creo que la otra respuesta cubre sudo lo suficientemente bien como para mantener esto como un comentario.
Oh, ciertamente no estaba sugiriendo que tu respuesta debería ser eliminada... Ni siquiera voté en contra, es una respuesta perfectamente buena.
Parece que estamos totalmente de acuerdo, gracias por la adición, siéntase libre de editarlo en la respuesta si puede mejorarlo.
La solución aceptada ( sudo -u user2 <...>) tiene la ventaja de que no se puede usar de forma remota, lo que podría ayudar a la seguridad: no hay una clave privada para el usuario 1 que se pueda robar.