区分sudo <command />和<command />

时间:2016-07-25 18:28:27

标签: python linux bash sudo

我想让我的用户以sudo和普通用户的身份运行,具体取决于他的选择。他可以使用sudo或者正常但不使用sudo我必须禁用一些功能来摆脱错误。所以我怎么能知道那个用户给我sudo权限执行与否?我正在python上构建我的应用程序。

1 个答案:

答案 0 :(得分:1)

几次读完你的问题之后,我想我知道你在问什么。我是否认为您想知道如何在运行时判断您的python脚本是否为root权限?

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

但是,另一种方法是简单地在try块中运行需要root权限的代码。根据您的具体操作,这可能是也可能不是更好的解决方案。如果您没有所需的权限,您还必须知道所期望的异常类型。这使得编写起来有点困难,但代码可能会更灵活地适应不断变化的环境,例如具有足够权限但不具有root权限的用户。它也可以产生更多的可移植代码,尽管异常可能会从一个操作系统变为另一个操作系统。

E.g。

try:
    function_that_needs_root()
except MyNotRootException:
    print "Skipping function_that_needs_root: you are not root"