Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo resolver getpwuid_r(): error debido a ID de usuario desconocido (0)

Cómo resolver getpwuid_r(): error debido a ID de usuario desconocido (0)

La advertencia simplista dice que getpwuid_r() no obtuvo el ID de usuario 0.

Consulte la página de manual de Linux para obtener una explicación de la función getpwuid_r():

La función getpwnam() devuelve un puntero de estructura que contiene la base de datos de contraseñas (como la contraseña local file/etc/passwd, NIS y LDAP) que coincidan con el nombre de usuario.

La función getpwuid() devuelve un puntero a una estructura que contiene los campos delimitados del registro en la base de datos de contraseñas que coincide con el ID de usuario.

La estructura passwd se define de la siguiente manera en lt;pwd.hgt;:

struct passwd {

char *pw_name /* Username*/

p >

char *pw_passwd; /* Contraseña de usuario */

uid_t pw_uid; /* ID de usuario */

gid_t pw_gid /* ID de grupo */

char *pw_gecos;/* información del usuario*/

char *pw_dir;* directorio de inicio*/

char *pw_shell /* programa shell*/

};

Consulte passwd(5) para obtener más información sobre estos campos.

Las funciones getpwnam_r() y getpwuid_r() obtienen la misma información que las funciones getpwnam() y getpwuid(), pero almacenan la estructura passwd obtenida en el espacio señalado por pwd. El campo de cadena al que apunta el miembro de la estructura passwd se almacena en el búfer buf de tamaño buflen. El resultado (en caso de éxito) o NULL (en caso de entrada no encontrada o cuando se produce un error) se almacena en *resultado.

Como se puede ver en la página del manual anterior, se utiliza para obtener la información de inicio de sesión del usuario actualmente conectado en el archivo /etc/passwd. Entonces podemos encontrar el problema:

La información de id(0) en el archivo passwd no está disponible. De hecho, la identificación de usuario: 0 es la identificación del usuario root

. Es posible que se produzca este problema Motivo:

lt;1gt; No hay información del usuario root en el archivo passwd, como se muestra a continuación:

root:x:0:0:root :/root:/bin/bash

lt; 2gt; El archivo passwd no se puede leer --gt; ¿Está el archivo dañado o no tiene permiso de lectura?