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]