¿Se puede usar un archivo de claves como contraseña para sudo?


11

Contexto

Me gusta trabajar en público en mi computadora portátil, pero también me gusta usar sudo sin contraseña. Según lo que sé ahora, usaría la NOPASSWDopción en mi sudoersarchivo, pero, por supuesto, cualquiera podría usar sudo como lo desee.

Un pensamiento importante que me viene a la mente es que existen programas de bloqueo. Sin embargo, preferiría usar una unidad flash (y usarla solo para sudo) porque (1) es más rápida, (2) más fácil que ingresar mi contraseña y (3) No me preocupa que las personas accedan a mi contenido ni hagan maldad cosas: la computadora portátil estaría en público cerca de otras personas, y la única propiedad intelectual de mi computadora portátil es un proyecto angular muy básico.

Además, es posible que yo y otros deseemos evitar el mal uso de sudo en una computadora que no ejecuta un entorno X o Wayland. Mi trabajo actual requiere un navegador web moderno, pero si alguna vez tengo la oportunidad de no usar X y solo usar un multiplexor, lo hago: mi computadora portátil es un poco vieja y lenta.

Pregunta

Lo que me gustaría hacer es colocar un archivo clave en una unidad flash, y simplemente enchufar la unidad flash cuando esté en la computadora portátil, y sacarla cuando me aleje de ella.

Así que aquí están mis tres preguntas derivadas de este problema:

  1. ¿Es esto posible con sudo tal cual?
  2. Si no, ¿podría escribir un programa que me permita hacer esto?
  3. Si es así, ¿qué idioma podría ser el mejor para escribir este programa?

(4. [Quizás una pregunta extraña] ¿Podría este paquete estar separado o necesitaría ser un tenedor de sudo?)

Nota

Si es relevante, mi configuración es Arch Linux con bspwm, sin entorno de escritorio. La mayor parte de mi trabajo es desarrollo web en urxvt / vim y verificarlo con Chrome.


1
¿ Pam_usb satisface tus necesidades?
StrongBad

@StrongBad Oh ... sí. Parece que no solo hace sudo de inmediato , y se conecta y sudo juntos, pero eso no me importa. ¡Gracias!
Gage Sorrell

2
De acuerdo, para aclarar, desea permanecer conectado constantemente y evitar que las personas usen sudo en su cuenta.
StrongBad

@StrongBad Correcto.
Gage Sorrell

Es posible que pueda configurar algo usando la rootpwbandera en los /etc/sudoersarchivos y configurando el pam_usbinicio de sesión raíz.
RubberStamp

Respuestas:


3

No estoy seguro de entender por qué la NOPASSWDopción no satisface sus requisitos por sí sola, pero si desea requerir la presencia de la unidad flash, puedo pensar en algo que casi podría hacer lo que está buscando.

Esto es más una solución alternativa, pero podría crear un usuario administrativo local, por ejemplo superuser, y darle a ese usuario sudoderechos sin contraseña , es decir, agregar la siguiente línea a su /etc/sudoersarchivo:

superuser ALL=(ALL) NOPASSWD:ALL

Luego puede deshabilitar el inicio de sesión con contraseña y configurar la autenticación SSH de solo clave para ese usuario, es decir, ejecutar passwd -l superusery agregar la siguiente estrofa a su /etc/ssh/sshd_config:

Match user superuser
PasswordAuthentication no

Luego cree un par de claves SSH para este usuario. Agregue la clave pública /home/superuser/.ssh/authorized_keysy coloque la clave privada en su unidad flash. Luego, cuando desee utilizar la superusercuenta, conecte su unidad flash y ssh en la superusercuenta con su clave privada. ¡Y voilá! Ahora tiene sin contraseña sudopara su usuario. Por supuesto, aún necesitará salir de sus sesiones de shell cuando haya terminado; desenchufar la unidad flash no será suficiente. Aunque supongo que también podría configurar un enlace de precomando para verificar la clave privada y salir automáticamente si no está presente (o si no es válida).


Una respuesta fácil para aclarar por qué es posible que desee hacer esto. para este servidor al que estoy tratando de volver, solo tengo la clave raíz, no tengo acceso ssh raíz, estoy bloqueado en el usuario ec2, que sudo está pidiendo un pw que no tengo. Scp'd mi clave raíz al servidor, por lo que idealmente ahora me gustaría usar esta clave para obtener acceso a sudo, entonces puedo arreglar las cosas.
Brian Thomas
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.