如何以root身份执行os。*方法?
问题内容:
是否可以要求一个root pw而无需将其存储在我的脚本存储器中,并且可以以root身份运行某些os。*命令?
我的剧本
- 扫描一些文件夹和文件以检查是否可以完成此工作
- 在/ etc /中进行一些更改…
- 创建一个文件夹和文件,这些文件和文件应该由运行脚本的用户拥有
(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个文件可能是一个解决方案,但是代码已经混合在一起,因此不合适。