Pregunta

Está bien así que mi pregunta es simple, pero yo soy un poco nuevo a C y esperaba que alguien me podría ayudar. Quiero cambiar a un usuario diferente en C. Por ejemplo, sé la contraseña del usuario, y si el usuario escribe: ./change usuario1 Se va a cambiar a usuario1. Sé que esto puede ser un problema de seguridad en este momento, pero yo no estoy preocupado por la seguridad en el momento.

¿Fue útil?

Solución

tendrá que usar setuid que se puede encontrar en unistd.h por lo que está disponible en sistemas POSIX (por lo que cualquier Linux / Unix falvour debería estar bien)

Desde la página del manual

  

Si el proceso tiene privilegios apropiados, setuid () deberá establecer el identificador de usuario real,     efectiva ID de usuario, y los salvados set-user-ID del proceso de llamada a UID.

     

Si el proceso no tiene privilegios apropiados, pero uid es igual a la verdadera     ID de usuario o el conjunto-user-ID guardado, setuid () deberán establecer el identificador de usuario efectivo a uid;     el ID de usuario real y salvado set-user-ID permanecerán sin cambios.

     

La función setuid () no afectará a la lista de grupo suplementario de ninguna manera.

Otros consejos

Llamada en el binario su (por ejemplo a través system() o una combinación de fork() y una de las funciones exec), que conoce todas las complejidades de cambio de credenciales, tanto en Unix genérica y de su sistema operativo particular. El terminal se comparte y sigue perteneciendo al usuario original.

Algunas de estas complejidades no manejados por una simple llamada setuid() son grupos, inhabilitación de su cuenta y los límites de recursos.

Si esto es sólo por diversión, setuid() precedido por setgid() y initgroups() probablemente será suficiente para ti.

Usted tiene que averiguar el UID usando getpwuid () . Epílogos tiene que configurar el UID en su programa con setuid () seguido de la aplicación / función que la intención de correr con estos nuevos derechos, por ejemplo, la cáscara. Para iniciar una aplicación con el actuales uso UID href="http://linux.die.net/man/3/system" rel="nofollow"> sistema .

scroll top