Seguinte....consegui fazer um programa que altera a senha na linha de
comando...

set_passwd user senha

A� vai o fonte e a explica��o de como fazer:

Pegar o .src.rpm do shadow utils
Instalar
Ir no subdir lib
make
copiar o commonio.o
                encrypt.o
                shadowio.o para o diret. que vc estiver trabalhando
colar esse fonte:

#include<stdio.h>
#include<shadow.h>
#include<unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(int argc, char **argv) {

        char *usuario = argv[1];
        char *password = argv[2];

        struct spwd *senha;
        int status = 0;

       if(argc != 3) {
                printf("\nSintaxe: set_quota usuario quota_in_kbytes\n\n");
                exit(1);
        }

       if (!(senha = getspnam(usuario))) {
                printf("\nUsu�rio %s n�o existe\n",usuario);
                exit(1);
        }


        if(!spw_lock() || !spw_open(O_RDWR)) {
                printf("Impossivel abir arquivos");
                exit(1);
        }

        senha->sp_pwdp = (char *)crypt(password,senha->sp_pwdp);
        status = spw_update(senha);

        if(!spw_close() || !spw_unlock()) {
                printf("Erro ao fechar arquivos");
                exit(1);
        }

        if(status)
                printf("Mudan�a feita com sucesso!!!\n");
        else
                printf("Erro no upgrade\n");
}

Depois � s� compilar com a seguinte sequ�ncia:

gcc set_passwd.c -o set_passwd encrypt.o shadowio.o commonio.o -lcrypt

e prontinho......

Detalhe os arquivos .o s�o preciso por causa das depend�ncias de fun��es
como:

pw_encrypt -> encrypt.o (criptografa a senha) Tb. pode ser feito com o crypt
da unistd.h

spw_lock, spw_open, spw_close,spw_unlock,spw_update -> shadowio.o e que
depende do commonio.o (trava,abre,fecha,destrava e atualiza tabela shadow);

getspnam e struct *spwd  -> shadow.h


Acho que � isso...aqui funcionou legal...
QQ d�vida, sugest�o ou cr�tica.....mande me um "z� 1/2"
Fernando Bertasso


_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


Assinantes em 15/01/2002: 2224
Mensagens recebidas desde 07/01/1999: 150565
Historico e [des]cadastramento: http://linux-br.conectiva.com.br
Assuntos administrativos e problemas com a lista: 
            mailto:[EMAIL PROTECTED]

Responder a