Question

Bon alors ma question est simple mais je suis un peu nouveau pour C et j'espérais que quelqu'un pourrait me aider. Je veux passer à un autre utilisateur en C. Par exemple, je sais que le mot de passe de l'utilisateur, et si les types d'utilisateurs: ./change user1 Il va changer à user1. Je sais que cela peut être un problème de sécurité en ce moment, mais je ne suis pas inquiet au sujet de la sécurité au moment.

Était-ce utile?

La solution

Vous voulez utiliser setuid qui se trouve dans unistd.h il est disponible sur les systèmes POSIX (de sorte que toute falvour linux / unix devrait être ok)

A partir de la page man

  

Si le processus a des privilèges appropriés, setuid () indique l'ID utilisateur réel,     efficace ID utilisateur et l'ensemble enregistré par l'utilisateur-ID du processus appelant à uid.

     

Si le processus ne dispose pas de privilèges appropriés, mais uid est égal au réel     ID utilisateur ou l'ensemble-ID utilisateur enregistré, setuid () doit définir l'ID de l'utilisateur effectif à uid;     l'ID utilisateur réel et set-user-ID enregistrée restent inchangées.

     

La fonction setuid () ne doit pas affecter la liste des groupes de quelque façon.

ici est exemple

Autres conseils

Appel le binaire su (par exemple par system() ou une combinaison de fork() et l'une des fonctions de exec), qui connaît toutes les subtilités de l'évolution des informations d'identification, à la fois Unix génériquement et sur votre système d'exploitation particulier. Le terminal est partagé et continue d'appartenir à l'utilisateur d'origine.

Certaines de ces subtilités ne sont pas traités par un simple appel setuid() sont des groupes, de désactivation du compte et les limites de ressources.

Si cela est juste pour le plaisir, setuid() précédé par setgid() et initgroups() sera probablement suffisant pour vous.

Vous devez savoir l'UID en utilisant getpwuid () . Postfaces vous devez définir l'UID dans votre programme avec setuid () suivi par l'application / fonction vous avez l'intention d'exécuter ces nouveaux droits, par exemple La coquille. Pour démarrer une application avec le courant () .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top