如何在无头模式LibreOffice中阻止外部文件访问?
Office文档可能会尝试访问本地敏感外部文件(比如/etc/passwd、/home/known-user/very-top-secret-file),甚至发起网络请求,带来安全隐患。
已知一种方法是修改LibreOffice的用户配置文件~/.config/libreoffice/4/user/registrymodifications.xcu,添加以下XML内容:
<?xml version="1.0" encoding="UTF-8"?> <oor:items xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <item oor:path="/org.openoffice.Office.Common/Security/Scripting"><prop oor:name="BlockUntrustedRefererLinks" oor:op="fuse"><value>true</value></prop></item> </oor:items>
但该方法在部分环境中无法生效,以下是其他可行的解决方法:
启用LibreOffice安全模式
启动LibreOffice时添加--safe-mode参数,会自动禁用所有宏、扩展和自定义配置,从根源上阻断文档触发外部访问的途径。命令示例:libreoffice --safe-mode彻底禁用宏
打开LibreOffice后,依次进入「工具」→「选项」→「LibreOffice」→「安全性」→「宏安全性」,选择「非常高」级别(仅允许签署且信任的宏运行),或者直接勾选「禁用所有宏并发出通知」,完全阻止宏发起的外部访问。用沙箱工具隔离运行
使用Firejail、Docker这类沙箱工具限制LibreOffice的权限,比如用Firejail命令让LibreOffice在私有临时目录运行并禁用网络:firejail --noprofile --private=/tmp/libreoffice-temp --net=none libreoffice这样文档既无法访问本地敏感文件,也不能发起网络请求。
修改系统级配置文件
如果用户级配置不生效,可尝试修改系统全局配置文件(路径通常为/etc/libreoffice/registrymodifications.xcu),添加上述相同的XML配置,确保所有用户的LibreOffice都应用该限制。转换为安全文件格式
将可疑文档转换为PDF或纯文本结构的ODT格式,转换过程会自动过滤宏和外部链接。用LibreOffice命令行转换的示例:libreoffice --headless --convert-to pdf suspicious-document.docx
内容的提问来源于stack exchange,提问作者andre487

