001
11.02.2003, 14:39 Uhr
virtual
Sexiest Bit alive (Operator)
|
Hi,
hilft es dir vielleicht weiter, daß Programm mit S Bits auszuführen. Vorgehensweise: Das Programm wird mittels chown dem User geschenkt, unter dessen ID es ausgeführt werden soll und dann das S-Bit für User setzen; also:
Code: |
chown benutzer programm chmod u+s programm
|
Lass mal folgendes Programm unter root laufen; einmal vor der Behandung wie oben beschrieben; und einmal danach. Du wirst sehen, daß sich die effektive benutzerkennung ändert.
C++: |
#include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <pwd.h> #include <grp.h>
int main() { uid_t user_id; uid_t effective_user_id; gid_t group_id; gid_t effective_group_id; struct group* grent; struct passwd* pwent;
/* * Get all my IDs */ user_id = getuid(); effective_user_id = geteuid(); group_id = getgid(); effective_group_id = getegid();
/* * Print the stuff */ pwent = getpwuid(user_id); printf("User ID : %s (%d)\n", pwent? pwent->pw_name:"***UNKNOWN***", user_id); pwent = getpwuid(effective_user_id); printf("Effective User ID : %s (%d)\n", pwent? pwent->pw_name:"***UNKNOWN***", effective_user_id); grent = getgrgid(group_id); printf("Group ID : %s (%d)\n", grent? grent->gr_name:"***UNKNOWN***", group_id); grent = getgrgid(effective_group_id); printf("Effective Group ID: %s (%d)\n", grent? grent->gr_name:"***UNKNOWN***", effective_group_id); }
|
-- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) Dieser Post wurde am 11.02.2003 um 14:40 Uhr von virtual editiert. |