Ich entwickle eine Mac Cocoa App, die eine zweite Anwendung ausführen muss. Das Folgende ist die relevante Form der zweiten Anwendung, die iIst es möglich, als root ausgeführt, die Benutzer-ID mit getuid() eingeloggt haben?
int main(int argc, const char * argv[]) {
uid_t gRealUserID = getuid();
printf("User id:%d\n",gRealUserID);
return 0;
}
Das Problem ausgeführt werden müssen, ist, dass der zweite Anschluss app root ausgeführt werden soll und ‚getuid()‘ auch in user.My ersten app angemeldet Strom erhalten läuft mit root-Rechten.
so kurz, wenn ich den obigen Code bauen in Terminal
$ ./test
User id:501
ausführbaren Namen "Test" und laufen, wenn wir
$ sudo ./test
User id:0
laufen möchte ich wissen, ist es eine Möglichkeit, von denen, wenn ich befehle wie
$ sudo ./test
druckt
User id:501
Interessante Beobachtung: Wenn ich root-Privilegien von einem nicht root Anwendung autorisieren SFAuthorization
Verwendung als expected..But funktioniert leider kann ich das jetzt nicht tun, tun, um einige Client-Anforderung ändert
danke @CRD Ich werde versuchen .. aber warum bei Verwendung von SFAuthorization Authorization funktioniert? –
Die Autorisierung funktioniert in beiden Fällen, wie die echten und effektiven IDs eingerichtet werden. Wenn Sie davon lesen, werden Sie feststellen, wie ein gesetztes UID-Programm das Setup 'sudo' erzeugen kann - in der Tat ein' ls -l/usr/bin/sudo' und Sie werden sehen, dass es sich um ein gesetztes UID-Programm handelt. – CRD
Dank @CRD 'setuid()' Form erste Anwendung hat den Trick –