Domanda

Va bene quindi la mia domanda è semplice, ma io sono un po nuovo C e speravo che qualcuno mi potrebbe aiutare. Voglio cambiare ad un altro utente in C. Per esempio, so che la password dell'utente, e se l'utente digita: ./change user1 Cambierà a user1. So che questo può essere un problema di sicurezza in questo momento, ma io non sono preoccupato per la sicurezza in questo momento.

È stato utile?

Soluzione

Si vuole utilizzare setuid che può essere trovato in unistd.h quindi è disponibile sui sistemi POSIX (in modo che qualsiasi Linux / Unix falvour dovrebbe essere ok)

Dalla pagina man

  

Se il processo ha i privilegi appropriati, setuid () stabilisce il reale ID dell'utente,     efficace l'ID utente e i salvati set-user-ID del processo chiamante per UID.

     

Se il processo non dispone di privilegi appropriati, ma uid è uguale a quella reale     ID utente o il set-user-ID salvato, setuid () definiscono l'ID utente effettivo UID;     l'ID utente reale e salvati set-user-ID restano invariati.

     

La funzione setuid () non pregiudica la lista dei gruppi supplementari in alcun modo.

esempio

Altri suggerimenti

È possibile chiamare il binario su (ad esempio attraverso system() o una combinazione di fork() e una delle funzioni exec), che conosce tutte le complessità di credenziali di cambiamento, sia Unix-genericamente e sul particolare sistema operativo. Il terminale è condiviso e continua ad appartenere all'utente originale.

Alcune di queste complicazioni non gestiti da una semplice chiamata setuid() sono gruppi, rappresentano invalidante e limiti delle risorse.

Se questo è solo per divertimento, setuid() preceduto da setgid() e initgroups() sarà probabilmente sufficiente per voi.

Devi trovare l'UID utilizzando getpwuid () . Afterwords è necessario impostare l'UID nel programma con setuid () seguita dall'applicazione / funzione che si intenzione di correre con questi nuovi diritti, ad esempio il guscio. Per avviare un'applicazione con il corrente uso UID sistema () .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top