Cómo comprobar las credenciales de inicio de sesión en Linux cuando no se está ejecutando como root?

StackOverflow https://stackoverflow.com/questions/1948535

Pregunta

He escrito una aplicación cgi-bin en C que se ejecuta en un navegador y permite al usuario abrir un shell interactivo y ver y editar archivos en una máquina Linux. Se ejecuta como el usuario estándar Apache "www-data". Acabo de añadir una pantalla de inicio de sesión para que cuando el usuario teclea su nombre y contraseña (en forma) pero no pueden autenticar al usuario usando getspnam ya que esta función sólo funciona cuando se ejecuta como root.

¿Qué opciones tengo para comprobar las credenciales de acceso de un usuario cuando no se está ejecutando como root?

PD: En mi shell interactivo que puedo escribir "su root" y escriba la contraseña y lo hace elevar a las raíces finas por lo que, obviamente, se puede realizar de forma interactiva

.
¿Fue útil?

Solución

Con respecto a su PS: Bueno, cuando se hace una su root se está cambiando al usuario root. Así que sí, por supuesto, la raíz puede leer el archivo de sombra, que todo listo dicho.

Con respecto a su problema: ¿No puede tener sus procesos de Apache elevan temporalmente a raíz (llamando setuid o similar) para realizar la autenticación?

Buena suerte!

Otros consejos

Creo que desee echar un vistazo a enchufable módulos de autenticación . Que yo sepa, el PAM se encarga de todo el material sucio para usted y usted sólo tiene que hacer un par de llamadas de función para autenticar al usuario en cualquiera que sea el backend para autenticar usuarios en la máquina Linux es (ya sea la sombra de contraseñas, NIS, LDAP, lo que sea)

He aquí una breve guiar sobre la integración de su código C con ellos.

Como se ha sugerido, creo PAM es la forma moderna de hacer esto. Pero si quieres ir de la vieja escuela, es necesario crear un programa setuid root (no un script) para hacer su autenticación.

Hay un montón de trampas con los programas setuid root, por lo que es probable PAM mejor.

Aquí hay un enlace a algunos buenos papeles en la escritura de forma segura programas setuid root .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top