python - 区分 sudo <command> 和 <command>

标签 python linux bash sudo

我想让我的用户根据他的选择以 sudo 和普通用户身份运行。他可以使用 sudo 或普通用户,但如果不使用 sudo,我必须禁用某些功能来消除错误。那么我怎么知道该用户是否给了我 sudo 执行权限?我正在 python 上构建我的应用程序。

最佳答案

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

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

但是,另一种方法是简单地运行try中需要root权限的代码。堵塞。这可能是也可能不是更好的解决方案,具体取决于您想要做什么。如果您没有所需的权限,您还必须知道预期的异常类型。这使得编写起来有点困难,但代码最终可能会更灵活地适应不断变化的环境,例如具有足够权限但不是 root 的用户。尽管异常(exception)情况可能会因一个操作系统而异,但它也可能会产生更可移植的代码。

例如

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

关于python - 区分 sudo <command> 和 <command>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38574999/

相关文章:

python - django 1.5.4 中的 STATIC_URL 问题

python - Pandas 系列对象对 Pandas 数据框对象的高效 bool 运算

python - 在python中格式化 "yesterday' s“日期

linux - 将命令的输出分配给变量(BASH)

bash - 关于 FIFO 和文件描述符的问题

python - 打破长if语句的推荐方法是什么? (二元运算符后的 W504 换行符)

Linux/Unix 替换字符串中的模式并使用 sed 保存到新文件

linux - 主进程退出,code=exited,status=203/EXEC

linux - bash 。读取符号之间的输入 "words"字符串

linux - 如何通过nohup获取程序启动时的pid?