LibreOffice 无法访问 18.04 中的 /tmp 文件

jfn*_*eis 6 libreoffice apparmor 18.04

刚刚在 Ubuntu 18.04 中安装了 LibreOffice 6.0.4.2。

LibreOffice 无法从 /tmp 目录打开(也无法列出)文件。

我读过 AppArmor 配置文件,开发人员谈论“预期的” /home 用例等,我只是认为 LibreOffice 团队的另一个完全无稽之谈。

我尝试禁用 AppArmor,但在那之后 LibreOffice 甚至无法打开,所以我重新启用了它。

有没有办法让 LibreOffice 可以访问我系统中任何文件夹中的文件?

Raz*_*Taz 1

我在 18.04 和之前的 LibreOffice 中没有遇到这个问题。但我现在使用的是 Ubuntu 20.04 和 LibreOffice 6.4。

经过一番研究,我发现这是一个权限问题。在 Ubuntu 20.04 中,包括 LibreOffice 在内的应用程序没有对应用程序(例如 Firefox)放置临时文件的文件夹/tmp的读取权限。顺便说一句,如果您尝试直接在 Firefox 中使用指定的应用程序从网络上直接打开任何文件,而不先下载它(例如尝试使用软件安装程序在 Firefox 中打开网络存储的 .deb 文件),您也会遇到同样的问题。

解决此问题的一种方法是先下载文件,然后再打开它们。但这很烦人。

另一种方法是重新分配/home/user/目录中的临时目录。这样做的优点是减少了/目录的空间需求,同时仍然不影响安全性。

临时目录由 TMPDIR 环境设置控制。我使用了TrueDuality此处提出的解决方案。

  1. 检查当前的临时目录在哪里:
echo $TMPDIR
Run Code Online (Sandbox Code Playgroud)

或者

mktemp -u
Run Code Online (Sandbox Code Playgroud)

它应该看起来像:/tmp/tmp.zrBHbp0Yt0

  1. 编辑文件/etc/profile
sudo gedit /etc/profile
Run Code Online (Sandbox Code Playgroud)
  1. 附加以下代码:
if [[ -O /home/$USER/tmp && -d /home/$USER/tmp ]]; then
        TMPDIR=/home/$USER/tmp
else
        # You may wish to remove this line, it is there in case
        # a user has put a file 'tmp' in there directory or a
        rm -rf /home/$USER/tmp 2> /dev/null
        mkdir -p /home/$USER/tmp
        TMPDIR=$(mktemp -d /home/$USER/tmp/XXXX)
fi

TMP=$TMPDIR
TEMP=$TMPDIR

export TMPDIR TMP TEMP
Run Code Online (Sandbox Code Playgroud)
  1. 重启

  2. 检查您的临时目录是否已重新分配给您的/home/user/目录

echo $TMPDIR
Run Code Online (Sandbox Code Playgroud)

这次,返回应该类似于:/home/user/tmp/nrXo,显示临时目录已被重新分配。

评论:

  • 此时问题应该已经解决,您应该能够执行一些操作,例如直接从 Firefox 打开文件(而不是先下载它)。该文件将以只读模式打开。
  • 仅当最后一步 (5) 确认临时目录现在已正确重新分配时,您才可以担心新的 /tmp 文件会无休止地增长。为了纠正这个问题,我们需要确保在会话结束时删除该文件。但是,如果上一步未正确完成,您使用 root 凭据登录并继续下一步,这可能会产生问题。

小心!

sudo gedit ~/.bash_logout
Run Code Online (Sandbox Code Playgroud)

添加以下行:

if [ -O $TMPDIR && -d $TMPDIR ]; then
        rm -rf $TMPDIR/*
fi
Run Code Online (Sandbox Code Playgroud)

节省。关闭并重新启动。