在 Python 中写入具有 sudo 权限的文件

新手上路,请多包涵

如果非 root 用户针对 root 拥有的文件运行以下代码,即使该非 root 用户具有 sudo 权限,它也会引发错误:

 try:
  f = open(filename, "w+")
except IOError:
  sys.stderr.write('Error: Failed to open file %s' % (filename))
f.write(response + "\n" + new_line)
f.close()

有没有办法运行 open(filename, "w+") 具有 sudo 权限,或者执行此操作的替代功能?

原文由 user2824889 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 783
1 个回答

你有几个选择:

  • 以 root 身份或使用 sudo 运行脚本
  • 设置 setuid 位并让 root 拥有脚本(尽管在许多系统上这不适用于脚本,然后脚本将被任何人调用)
  • 检测到您没有以 root 身份运行( os.geteuid() != 0 ),然后使用 sudo infront 调用自己(这将要求用户输入密码)并退出:

‌‌

 import os
import sys
import subprocess

if os.geteuid() == 0:
    print("We're root!")
else:
    print("We're not root.")
    subprocess.call(['sudo', 'python3', *sys.argv])
    sys.exit()

调用它看起来像这样:

 $ python3 be_root.py
We're not root.
Password:
We're root!

原文由 L3viathan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题