在Inline::Python
模式下运行-T
时,有什么可以解释此编译时错误消息?
在/usr/local/lib/perl/5.14.2/Inline/Python.pm第193行使用-T开关运行时打开时的不安全依赖。
第193行是Inline::Python
打开$o->{API}{location}
的地方,我将其视为“内联目录”。
我当然使用了所需的选项:
use constant _INLINE_DIR_ => '/var/myapp/inline';
use Inline Config => UNTAINT => 1,
NO_UNTAINT_WARN => 1,
DIRECTORY => _INLINE_DIR_;
我确保/var/myapp/inline
及其中的所有内容都是可写的,显然包括root用户和应用程序在运行时{i}}编辑的用户。
同样的脚本在我的计算机上运行没有问题,无论我是否以root身份启动它,运行setuid
0.50 Inline
0.43,但是当我尝试在服务器上运行它时会给我这个错误使用相同版本的Inline::Python
以及版本0.49或0.55 Inline::Python
。
答案 0 :(得分:1)
由于在不同的环境中这是不同的,我的赌注是,在Inline
配置参数执行请求之前,有Inline::Python
或UNTAINT
正在读取的环境变量
(与评论相反,我认为文件权限不会导致此消息,只会对命令行参数或环境变量产生不安全依赖性)
鉴于此,我将通过强制清除环境然后仅添加您认为需要的环境变量来启动脚本:
%ENV = ();
$ENV{'PATH'} = '/bin:/usr/bin:/usr/local/bin'; # Or whatever's appropriate
$ENV{'PYTHONPATH'} = '/usr/local/lib/python'; # Optional, if appropriate
# ... etc ...