如何以root身份执行os。*方法?


问题内容

是否可以要求一个root pw而无需将其存储在我的脚本存储器中,并且可以以root身份运行某些os。*命令?

我的剧本

  1. 扫描一些文件夹和文件以检查是否可以完成此工作
  2. 在/ etc /中进行一些更改…
  3. 创建一个文件夹和文件,这些文件和文件应该由运行脚本的用户拥有

(1)可以作为普通用户来完成。我可以通过脚本脚本来执行(2),但是(3)中的文件夹和文件将是root的。

问题是我使用了很多os.makedirs,os.symlink等,这使我无法使其由普通用户运行。

坦克2全部征求意见

到目前为止的解决方案是:

# do all in sudo
os.chown(folder, int(os.getenv('SUDO_UID')), int(os.getenv('SUDO_GID')))

感谢 gnibbler 的提示。


问题答案:

狼人暗示了os.chown。然后的问题是知道sudo之后的用户ID。该信息存储在环境变量中SUDO_*

os.chown, (some_path, int(os.getenv('SUDO_UID')), int(os.getenv('SUDO_GID')))

将代码分成3个文件可能是一个解决方案,但是代码已经混合在一起,因此不合适。