Python os.getresuid()和os.setresuid() - 获取或设置当前进程的真实、有效和保存的用户id

Python os.getresuid()和os.setresuid()

Python os模块中的所有函数在文件名和路径无效或不可访问,或其他具有正确类型但操作系统不接受的参数时都会引发OSError。

Python中的os.getresuid()方法用于获取当前进程的真实、有效和保存的用户id,而os.setresuid()方法用于设置当前进程的真实、有效和保存的用户id。

Unix和操作系统中的每个用户都由不同的整数标识,这个唯一的数字称为UserID。为进程定义的UserID有三种类型,可以根据任务的权限动态更改。

真实用户id:该进程所有者的帐户。它定义了进程可以访问哪些文件。

有效用户id:它通常与真实用户id相同,但有时它被修改为允许非特权用户访问只能由root访问的文件。

保存的UserID:当一个进程以更高的特权运行时(通常是root)需要做一些特权不足的工作,可以通过临时切换到非特权帐户来实现。

在执行无特权工作时,有效的UID被更改为较低的特权值,并将euid保存为保存的userID(suid),以便在任务完成时使用它切换回有特权的帐户。

注意:os.setresuid()和os.getresuid()方法只在UNIX平台上可用,os.setresuid()方法的功能通常只对超级用户可用,因为只有超级用户可以更改进程的id。

超级用户是指具有运行或执行操作系统中任何程序的所有权限的根用户或管理用户。

os.getresuid()方法

语法:os.getresuid()

参数:不需要参数

返回类型:该方法返回一个元组,其属性表示当前进程的真实、有效和保存的用户id。

示例1

使用os.getresuid()方法

# 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)

输出:

os.getresuid()方法

os.setresuid()方法

语法:os.setresuid(ruid, euid, suid)

参数:

ruid:整型值,表示当前进程的新用户id。

euid:整型值,表示当前进程新的有效用户id。

suid:整数值,表示为当前进程保存的新用户id。

返回类型:此方法不返回任何值。

示例2

使用os.setresuid()方法

# 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)

输出:

os.setresuid()方法

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程