我可以在以超级用户身份运行主代码时从其他用户目录导入一个函数吗?

时间:2015-08-12 23:41:19

标签: python

使用Linux,而程序本身和其他一些配置文件位于用户的主目录之一(并从那里运行),由于硬件限制,我被迫运行以 sudo为前缀的主Python代码。现在我想调用一个已经存在于该用户目录中的另一个Python文件中的函数。

简单地使用import functionfile似乎不起作用,因为(我假设)程序在根目录中查找该文件。

对于“正常”任务,例如处理该用户目录中存在的配置文件,我可以通过获取在启动 sudo 命令之前登录的用户来重新创建完整路径,类似于:

import os
sudo_username = os.getenv("SUDO_USER")
home_dir = "/home/" + sudo_username

但是,我无法想象从其他用户目录到import functionfile的方法,特别是如果我想避免绝对引用用户名。

技术上可行吗?

1 个答案:

答案 0 :(得分:0)

如果您导入sys并将目录添加到sys.path(或者如果您修改PYTHONPATH),则可能是root用户可以读取该文件。

但这可能不是一个好主意。它可能会在该目录中留下用户无法覆盖的root拥有的.pyc文件,这对于随机用户能够更改root将运行的代码来说是一个巨大的安全漏洞。