Planeo lanzar el servicio de compilación LuaTeX en línea.
Instalé LuaTeX usando TexLive 2015 en CentOS 7. Por motivos de seguridad, quiero restringir la apertura de archivos. Por lo tanto, puse openin_any=p
. Pero también restringe la apertura de archivos de plantilla instalados en formato texmf-dist
. Otros compiladores pueden leer archivos de plantilla.
Intenté compilar este archivo:
\documentclass{ltjsarticle}
\usepackage{graphicx}
\title{title}
\author{auth}
\date{\today}
\begin{document}
\maketitle
\section{section}
This is sample.
\end{document}
Compilé este archivo lualatex sample.tex
y recibí el siguiente mensaje:
This is LuaTeX, Version beta-0.80.0 (TeX Live 2015) (rev 5238)
restricted \write18 enabled.
(./sample.tex
LaTeX2e <2016/02/01>
Babel <3.9o> and hyphenation patterns for 1 language(s) loaded.
lualatex: Not reading from /usr/local/texlive/2015/texmf-dist/tex/luatex/luatexja/ltjsarticle.cls (openin_any = p).
! LaTeX Error: File `ltjsarticle.cls' not found.
Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: cls)
¿Cómo puedo arreglarlo?
Respuesta1
Acerca de TeX como servicio en línea: [http://cseweb.ucsd.edu/~hovav/dist/texhack.pdf
Acerca de Lua: los formatos pueden redefinir lua como quieran, así que
local myopen = function(...) print("ERROR: open is not permitted") return false end
local _std = {}
_std.oldopen = io.open
io.open = myopen
for k,v in pairs(_std) do print(k,v) end
assert(io.open("foo"), 'Error on io.open' )
io.open es seguro (hasta que _std esté oculto)
Si a uno no le importa io.open:
local myopen = function(...) print("ERROR: open is not permitted") return false end
io.open = myopen
assert(io.open("foo"), 'Error on io.open' )