限制 LaTeX 中 \input 等文件夹

限制 LaTeX 中 \input 等文件夹

我在服务器上运行 LaTeX,用户正在协作和贡献文件,服务器在我生成的根文件上运行 LaTeX,该\input文件包含用户文件(每个用户都有自己的特殊文件夹)。然后用户查看输出。以这种方式,文档通常有多个作者。我希望允许用户能够\input从他们自己的文件空间访问其他文件,但仅此而已。

我需要加强安全性。特别是我不希望用户在我的系统中做类似的事情\input{../../../systemfile}\input{/etc/systemfile}四处搜索并读取他们不应该访问的文件。我可以重写,\input但不知道如何阻止用户访问原始\input原语(当然,假设他们以某种方式发现了我对其的称呼)。有什么建议吗?

我在 Linux 上工作,并运行 pdflatex。(我真的很想使用 lualatex,但这会带来更多的安全问题。)

理查德

答案1

您可以在安装中设置这些默认值,texmf.cnf默认设置是

% Do we allow TeX \input or \openin (openin_any), or \openout
% (openout_any) on filenames starting with `.' (e.g., .rhosts) or
% outside the current tree (e.g., /etc/passwd)?
% a (any)        : any file can be opened.
% r (restricted) : disallow opening dot files
% p (paranoid)   : as `r' and disallow going to parent directories, and
%                  restrict absolute paths to be under $TEXMFOUTPUT.
openin_any = a
openout_any = p

您可能希望将openin_any其设为p而不是a

相关内容