2009-11-08 18 views

Répondre

1

Vous pouvez utiliser getpwnam() pour rechercher un utilisateur uid/gid par nom:

#include <sys/types.h> 
#include <unistd.h> 
#include <pwd.h> 

int changepriv(const char *user) { 
    struct passwd *pw; 
    int rv; 

    pw = getpwnam(user); 
    if (!pw) 
    return -1; 

    rv = setgid(pw->pw_gid); 
    if (rv == -1) 
    return -2; 

    rv = setuid(pw->pw_uid); 
    if (rv == -1) 
    return -3; 

    return 0; 
} 
+0

Mais les noms d'utilisateur varient également selon le système. Chaque système a un UID 0 w/username = root. mais chaque système aura-t-il un nom d'utilisateur = www? Si quelqu'un sur un système différent exécute ceci, je voudrais pour eux ne pas avoir à changer le code source – Derrick

+2

essayer un compte comme "personne", mais normalement ce serait une option de configuration. –

+0

Hmm merci les gars. J'ai utilisé à peu près cette idée avec une torsion. Utilisez getlogin() pour trouver le nom d'utilisateur. – Derrick