gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 18:00:03 40 4
gpt4 key购买 nike

如果非 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()

有没有一种方法可以使用 sudo 权限运行 open(filename, "w+"),或者执行此操作的替代函数?

最佳答案

您有几个选择:

  • 以 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!

关于python - 在 Python 中写入具有 sudo 权限的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39499233/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com