使用python更改权限

使用python更改权限,python,python-3.x,linux,python-2.7,Python,Python 3.x,Linux,Python 2.7,我面临以下问题,我使用“提升”来提升provilegios,但在运行os.mkdir()之后,我希望他失去特权,重新成为普通用户 import os import sys import subprocess from elevate import elevate from os import popen def is_root(): return os.getuid() == 0 print("before ", is_root()) user = os.getlogin() elev

我面临以下问题,我使用“提升”来提升provilegios,但在运行os.mkdir()之后,我希望他失去特权,重新成为普通用户

import os
import sys
import subprocess
from elevate import elevate
from os import popen

def is_root():
  return os.getuid() == 0

print("before ", is_root())
user = os.getlogin()

elevate(graphical=False)
username = input("Enter the name of the user to be created in /home: ")
os.mkdir('/home/' + username)
print(os.listdir('/home'))
print("after ", is_root())
我做了一个检查,如果用户是有特权的,甚至在运行之后,它显示为真的,这意味着他拥有超级权力

[garden@server ~]$ python3 mkdir.py
before  False
[sudo] password for garden:
before  True
Enter your name : user10
['garden', 'user10']
after  True
我想知道是否有一种方法可以提升权限,然后退出,这样在出现异常的情况下,代码就不会与提升的用户一起运行


谢谢

我认为提升是为了脚本本身,而不是为了python代码的用户。您试图允许哪些需要“sudo”的特权?一种选择是在Privilege被“使用”后退出该程序,并作为标准用户重新启动。也有一个看看这个窗口。如果您需要这些代码在UNIX/Windows上工作,那么您可能需要进一步阅读
elevate
在引擎盖下使用
sudo
(或等效工具),因此我首先要明确地使用
子流程来运行
sudo mkdir…
。它不会花费太多,因为
elevate
无论如何都会重新启动您的进程。我相信elevate是为脚本本身而不是为python代码的用户而设计的。您试图允许哪些需要“sudo”的特权?一种选择是在Privilege被“使用”后退出该程序,并作为标准用户重新启动。也有一个看看这个窗口。如果您需要这些代码在UNIX/Windows上工作,那么您可能需要进一步阅读
elevate
在引擎盖下使用
sudo
(或等效工具),因此我首先要明确地使用
子流程来运行
sudo mkdir…
。因为
elevate
无论如何都会重新启动您的流程,所以它的成本不会显著提高。