Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 区分sudo<;指挥部>;及<;指挥部>;_Python_Linux_Bash_Sudo - Fatal编程技术网

Python 区分sudo<;指挥部>;及<;指挥部>;

Python 区分sudo<;指挥部>;及<;指挥部>;,python,linux,bash,sudo,Python,Linux,Bash,Sudo,我想让我的用户以sudo和普通用户的身份运行,具体取决于他的选择。他可以使用sudo或normal,但如果不使用sudo,我必须禁用一些功能以消除错误。那么,我如何知道该用户是否具有sudo执行权限?我正在python上构建我的应用程序。读了几遍你的问题后,我想我知道你在问什么。我认为您想知道如何判断您的python脚本在运行时是否具有根权限,这是正确的吗 如果确实要提前检查,可以使用os.geteuid()查询系统中的用户id,如果返回0,则脚本以root用户身份运行 但是,另一种方法是在tr

我想让我的用户以sudo和普通用户的身份运行,具体取决于他的选择。他可以使用sudo或normal,但如果不使用sudo,我必须禁用一些功能以消除错误。那么,我如何知道该用户是否具有sudo执行权限?我正在python上构建我的应用程序。

读了几遍你的问题后,我想我知道你在问什么。我认为您想知道如何判断您的python脚本在运行时是否具有根权限,这是正确的吗

如果确实要提前检查,可以使用
os.geteuid()
查询系统中的用户id,如果返回
0
,则脚本以root用户身份运行

但是,另一种方法是在
try
块中运行需要root权限的代码。这可能是一个更好的解决方案,也可能不是,具体取决于您正试图做什么。如果您没有所需的特权,您还必须知道预期的异常类型。这使得编写代码有点困难,但代码最终可能会更加灵活,以适应不断变化的环境,例如具有足够权限但不是root用户的用户。它还可能使代码更易于移植,尽管例外情况可能会从一个操作系统更改到另一个操作系统

例如


如果我理解正确,您正在寻找这个?最好、最安全和最健壮的方法就是尝试该操作,并让用户知道它是否失败以及可能的原因(并可能代表他们提供调用sudo/gksudo)。最糟糕的方法是检查UID是否为0。@thatotherguy:可能是这样,但我认为脚本采用
--无根
选项(或类似选项)是合理的,它可以避免执行任何根操作。
try:
    function_that_needs_root()
except MyNotRootException:
    print "Skipping function_that_needs_root: you are not root"