I with to create a new thread which will impersonate to another uid, execute a task and finish, while my main thread will keep is original uid all the time.
impersonation can easily be achieved by using
os.setuid(self.impersonation_uid)
but how can I make sure that it won't change my original uid from the main thread?
Thank you
CodePudding user response:
Threads cannot have separate user ids; only processes can. The data structure the kernel uses for process has a user id field, but the thread one doesn't.
Processes are defined by task_struct
, which has a cred
field, pointing to a cred
structure.
Threads are defined by thread_info
, which doesn't have anything point to user credentials.