Open In App

Python | os.getresuid() and os.setresuid() method

Improve
Improve
Like Article
Like
Save
Share
Report

OS module in Python provides functions for interacting with the operating system. OS comes under Python’s standard utility modules. This module provides a portable way of using operating system dependent functionality.

All functions in os module raise OSError in the case of invalid or inaccessible file names and paths, or other arguments that have the correct type, but are not accepted by the operating system.

os.getresuid() method in Python is used to get the current process’s real, effective, and saved user ids and os.setresuid() method is used to set the current process’s real, effective, and saved user ids.

Every user in Unix like operating system is identified by different integer number, this unique number is called as UserID. There are three types of UserID defined for a process, which can be dynamically changed as per the privilege of task.

Real UserID : It is account of owner of this process. It defines which files that this process has access to.

Effective UserID : It is normally same as Real UserID, but sometimes it is changed to enable a non-privileged user to access files that can only be accessed by root.

Saved UserID: It is used when a process is running with elevated privileges (generally root) needs to do some under-privileged work, this can be achieved by temporarily switching to non-privileged account.
While performing under-privileged work, the effective UID is changed to some lower privilege value, and the euid is saved to saved userID(suid), so that it can be used for switching back to privileged account when task is completed.

Note: os.setresuid() and os.getresuid() methods are available only on UNIX platforms and functionality of os.setresuid() method is typically available only to the superuser as only superuser can change IDs of a process.
Superuser means a root user or an administrative user who has all the permissions to run or execute any program in the operating system.

os.getresuid() method –

Syntax: os.getresuid()

Parameter: No parameter is required

Return Type: This method returns a tuple whose attributes represents current process’s real, effective, and saved user ids.

Code #1: Use of os.getresuid() method




# Python program to explain os.getresuid() method 
  
# importing os module 
import os
  
# Get the current process’s 
# real, effective, and saved user ids.
# using os.getresuid() method
ruid, euid, suid = os.getresuid()
  
# Print the current process’s
# real, effective, and saved user ids.
print("Real user id of the current process:", ruid)
print("Effective user id of the current process:", euid)
print("Saved user id of the current process:", suid)


Output:
os.getresuid() method output

os.setresuid() method –

Syntax: os.setresuid(ruid, euid, suid)

Parameters:
ruid: An integer value representing new user id for the current process.
euid: An integer value representing new effective user id for the current process.
suid: An integer value representing new saved user id for the current process.

Return Type: This method does not return any value.

Code #2: Use of os.setresuid() method




# Python program to explain os.setresuid() method 
  
# importing os module 
import os
  
  
# Get the current process’s 
# real, effective, and saved user ids.
# using os.getresuid() method
ruid, euid, suid = os.getresuid()
  
# Print the current process’s
# real, effective, and saved user ids.
print("Real user id of the current process:", ruid)
print("Effective user id of the current process:", euid)
print("Saved user id of the current process:", suid)
  
# Change the current process’s
# real, effective, and saved user ids
# using os.setresuid() method
ruid = 100
euid = 200
suid = 300
os.setresuid(ruid, euid, suid)
print("\nReal, effective, and saved user ids changed\n")
  
  
# Get the current process’s 
# real, effective, and saved user ids.
# using os.getresuid() method
ruid, euid, suid = os.getresuid()
  
# Print the current process’s
# real, effective, and saved user ids.
print("Real user id of the current process:", ruid)
print("Effective user id of the current process:", euid)
print("Saved user id of the current process:", suid)


Output:
os.setresuid() method output



Last Updated : 27 Jun, 2019
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads