使用Linux,而程序本身和其他一些配置文件位于用户的主目录之一(并从那里运行),由于硬件限制,我被迫运行以 sudo为前缀的主Python代码。现在我想调用一个已经存在于该用户目录中的另一个Python文件中的函数。
简单地使用import functionfile
似乎不起作用,因为(我假设)程序在根目录中查找该文件。
对于“正常”任务,例如处理该用户目录中存在的配置文件,我可以通过获取在启动 sudo 命令之前登录的用户来重新创建完整路径,类似于:
import os
sudo_username = os.getenv("SUDO_USER")
home_dir = "/home/" + sudo_username
但是,我无法想象从其他用户目录到import functionfile
的方法,特别是如果我想避免绝对引用用户名。
技术上可行吗?
答案 0 :(得分:0)
如果您导入sys并将目录添加到sys.path(或者如果您修改PYTHONPATH),则可能是root用户可以读取该文件。
但这可能不是一个好主意。它可能会在该目录中留下用户无法覆盖的root拥有的.pyc文件,这对于随机用户能够更改root将运行的代码来说是一个巨大的安全漏洞。