我在服务器上运行 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
。