我可以在没有 shell-escape 的情况下默认启用 FFI 吗?

我可以在没有 shell-escape 的情况下默认启用 FFI 吗?

所包含的 FFI 库luatex可能很危险,因此默认情况下禁用它(至少在 TeXLive 中)。为了访问该库,必须luatex使用该--shell-escape选项进行调用。TeXLive(配置文件?)中是否有一种方法可以永久允许不使用选项的 FFI 库shell-escape

答案1

没有允许 FFI 而不允许 shell 转义的选项,因为这不是一个有用的限制。

由于 FFI 允许您访问几乎任意的 C 库,它尤其允许您直接执行系统库调用来运行任意命令。因此,一旦允许 FFI,禁止直接 shell 逃逸就不再有任何好处。

另一方面,TeX Live允许您启用 shell 转义,因此默认情况下也启用 FFI:找到您的本地texmf.cnf(例如kpsewhich texmf.cnf,路径应类似于.../texmf-local/web2c/texmf.cnf.../2021/texmf.cnf,执行不是编辑下的文件texmf-dist)并添加一行:

# DANGER: Allow shell escape in all lualatex documents by default.
shell_escape.lualatex = t

其他选项包括= p仅允许受限命令(TeX Live 的默认设置)并= f禁止所有类型的 shell 转义。如果要更改所有格式的设置,可以shell_escape不设置。.lualatex

我建议您不要这样做。这可能会导致与他人合作时出现问题(因为他们现在需要其他选项来编译您的文件,而不是您),并且它允许您编译的任何文档在您的系统上执行任意命令。如果启用此功能,您必须确保如果您不完全信任文档和所有使用的包/类/...,则永远不要编译文档。

相关内容