Ich plane, einen Online-LuaTeX-Kompilierungsdienst zu starten.
Ich habe LuaTeX mit TexLive 2015 in CentOS 7 installiert. Aus Sicherheitsgründen möchte ich das Öffnen von Dateien einschränken. Daher habe ich festgelegt openin_any=p
. Dadurch wird jedoch auch das Öffnen von in installierten Vorlagedateien eingeschränkt texmf-dist
. Andere Compiler können Vorlagedateien lesen.
Ich habe versucht, diese Datei zu kompilieren:
\documentclass{ltjsarticle}
\usepackage{graphicx}
\title{title}
\author{auth}
\date{\today}
\begin{document}
\maketitle
\section{section}
This is sample.
\end{document}
Ich habe diese Datei kompiliert lualatex sample.tex
und folgende Meldung erhalten:
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)
Wie kann ich es reparieren?
Antwort1
Über TeX als Online-Dienst: [http://cseweb.ucsd.edu/~hovav/dist/texhack.pdf
Über Lua: Formate können Lua beliebig neu definieren, also
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 ist sicher (bis _std ausgeblendet ist)
Wenn io.open egal ist:
local myopen = function(...) print("ERROR: open is not permitted") return false end
io.open = myopen
assert(io.open("foo"), 'Error on io.open' )