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_;
Run Code Online (Sandbox Code Playgroud)
我确保其中的/var/myapp/inline
所有内容都是可由每个人编写的,显然包括root和用户setuid
在运行时编写的应用程序.
同样的脚本在我的计算机上运行没有问题,无论我是否以root身份启动它,运行Inline
0.50 Inline::Python
0.43,但是当我尝试在使用相同版本Inline::Python
且版本为0.49或0.55的服务器上运行它时,会给我这个错误Inline
.
由于这在不同的环境中是不同的,所以我敢打赌,在执行配置参数请求的步骤之前,有一个环境变量或者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 ...
Run Code Online (Sandbox Code Playgroud)