peguei este script em um dos postos, so não me recordo do autor para sitar o mesmo aqui , porém ai vai, deve te ajudar

- Antes de usar faça uma cópia do passwd.

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>

int
main(int argc, char *argv[])
{
FILE *passwd;
char str[51],*str2=(char *)malloc(256),user[256];
int x=0,ch;

if(argc < 2){
printf("Erro de sintaxe\n");
printf("Verefica help para mais informacoes: id-check -h\n");
exit(1);
}

if(setuid(0)!=0)
{
printf("\nVc nao eh root. Nao tem permissao para executar o arquivo\n");
exit(1);
}

if(!(strcmp(argv[1],"-h")))
{
printf("-l listar usuarios com ID 0\n");
printf("-d deletar usuarios com ID 0\n");
printf("Use: ./id-check [opcao]\n");
}


else if(!strcmp(argv[1],"-l"))
{

sprintf(str,"%s","cat /etc/passwd | grep :0:0: | tac | cut -d':' -f1");

passwd = popen(str,"r");

printf("Usuario(s) encontrado(s) com id 0 (root):\n");

rewind(passwd);

while((ch=fgetc(passwd))>0)
{
if(ch!='\n' && ch!='\r'){
sprintf(str2,"%s%c",str2,ch);
}
else{
printf("%s",str2);
sprintf(str2,"%c",ch);
}
}
printf("\n");
pclose(passwd);
}

else if(!strcmp(argv[1],"-d")){

printf("O usuario root nao serah deletado. OK?\n");

sprintf(str,"%s","cat /etc/passwd | grep :0:0: | tac | cut -d':' -f1");

passwd = popen(str,"r");

rewind(passwd);

while((ch=getc(passwd))!=EOF)
{
if(ch!='\n' && ch!='\r'){
sprintf(str2,"%s%c",str2,ch);
}
else{
if(strcmp(str2,"root")){
sprintf(user,"%s%s%c","userdel ",str2,ch);
system(user);
strcpy(str2,"\0");
}
}
}
pclose(passwd);
}

else printf("Erro de sintaxe\n");

return 0;

}