Si pongo estas líneas en el programa
Using perl Syntax Highlighting
use feature qw"switch say";
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Using perl Syntax Highlighting
use Data::Dumper::Simple;
say Dumper $grupos;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
y ejecuto el comando 'mostrar_grupo usuario', sale el volcado de la estructura $grupos. Entre todas las líneas que salen, aparece esto:
Using text Syntax Highlighting
'porUsuario' => {
'prueba2' => [
$grupos->{'datos'}{'usuario'}
],
'usuario' => [
$grupos->{'datos'}{'dialout'},
$grupos->{'datos'}{'cdrom'},
$grupos->{'datos'}{'floppy'},
$grupos->{'datos'}{'audio'},
$grupos->{'datos'}{'www-data'},
$grupos->{'datos'}{'video'}
],
'ejuarez' => [
$grupos->{'datos'}{'cdrom'},
$grupos->{'datos'}{'floppy'},
$grupos->{'porGid'}{'100'}
],
'postgres' => [
$grupos->{'datos'}{'ssl-cert'}
]
},
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
y ya empezamos a ver problemas: los usuarios no tienen bien registrado los grupos a los que pertenecen. Por ejemplo, el usuario 'ejuarez' aparece ahí que pertenece a los grupos 'cdrom', 'floppy' y al 100 ('users'), pero en el fichero passwd se indica que su grupo principal es el 1000 ('usuario'). O por ejemplo, el usuario 'usuario': tampoco viene indicado que pertenezca al grupo 'usuario'.
Cuando mandamos ejecutar el comando 'mostrar_grupo usuario', el programa recupera $grupos->{porNombre}->{usuario}, que apunta a $grupos->{'datos'}{'usuario'}, y según el Dumper, esto es lo que contiene:
Using text Syntax Highlighting
'usuario' => {
'password' => 'x',
'name' => 'usuario',
'users' => [
'prueba2'
],
'gid' => '1000'
},
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
y vemos que solo contiene al usuario 'pruebas2'.
Así que está mal la lectura de los datos. En la subrutina cargar_usuarios(), no se actualiza la variable $grupos con los grupos principales a los que pertenecen los usuarios.
Recuerda: Data::Dumper es tu amigo (también Data::Dumper::Simple, pero éste tienes que instalarlo antes).