Thunderbirdで特定の添付ファイルを開こうとすると、権限が拒否されました。ただし、strace
プロセスを操作するときに正しい呼び出しを行うことがわかったので、Thunderbirdのバグのようには見えません。しかし、それは失敗しました。
11545 execve("/usr/local/bin/libreoffice6.4", ["libreoffice6.4", "--writer", "file:///tmp/user/1000/via%20alla%20quite%2012%20Laigueglia"], ["SHELL=/bin/bash", "WINDOWID=18874383", "QT_ACCESSIBILITY=1", "XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0", "XTERM_VERSION=XTerm(344)", ... ]) = -1 EACCES (Permission denied)
権限は大丈夫です。namei
とgetfacl
。その後、execve
命令をstrace -v -s 1024
Cファイルにコピーしてコンパイルしました。この場合には効果がありました。 Thunderbirdでマウスクリックで実行するたびに失敗し、次のテストプログラムを実行するたびに成功します。
#include <unistd.h>
#include <stdio.h>
int main()
{
char *path="/usr/local/bin/libreoffice6.4";
char *argv[] =
{
"libreoffice6.4",
"--writer",
"file:///tmp/user/1000/via%20alla%20quite%2012%20Laigueglia",
NULL
};
char *envp[] =
{
"SHELL=/bin/bash",
"WINDOWID=18874383",
"QT_ACCESSIBILITY=1",
"XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0",
"XTERM_VERSION=XTerm(344)",
// ...
NULL
};
int rtc = execve(path, argv, envp);
perror("execve failed");
return rtc;
}
Thunderbirdは複数の添付ファイルを正しく開くことができます。これまで、LibreOfficeとカスタムシェルだけが失敗しました。どちらも株式配分の一部ではありませんでしたが、それは失敗を説明しませんか?
以前の68バージョンで、エラーが修正されたか、次のインストール時に自動的に消える可能性があるため、Thunderbirdにエラーを報告する必要はありません。もちろん、何が問題なのかを正確に知らなければ、報告できません。アクセスが拒否され、許可される理由を理解できません。
- 同じユーザーID /セッションでThunderbirdとScarecrowを実行しています。
- Thunderbirdが
trace=setuid,setfsuid,setreuid
。 - この
x
ビットは、そのパスのすべての部分でオンになります。 - 私はACLを使ったことがありません。
編集:マニュアルページにはexecve
4つの考えられる理由がリストされています。EACCESS
:
- ファイル名パスプレフィックスまたはスクリプトソルバー名のコンポーネントに対する検索権限が拒否されました。
- このファイルまたはスクリプトソルバーは通常のファイルではありません。
- ファイル、スクリプト、またはELFインタプリタに対する実行権限が拒否されました。
- ファイルシステムは noexec モードでマウントされます。
これらのどれも真実ではないようです。私はThunderbirdの動作を模倣するためにダミー変数thread_creation
と変数を追加してStrawmanプログラムを複雑にしました。fork
具体的には、次の実行可能ファイルを実行します。
-rwxr-xr-x 1 root root 14328 Nov 6 2019 /usr/lib/x86_64-linux-gnu/glib-2.0/gio-launch-desktop
これはThunderbirdlibglib2.0-0:amd64
ではなくThunderbirdの一部です。
それでもサンダーバードが経験した失敗を再現することはできなかった。
Edit2:libc6のケースを両当事者に提出するドイツ語エラー497そしてDebian のバグ 966343
答え1
これは理論ではなく結論的な答えです...
許可を拒否する他の理由があります。思い浮かぶものの一つは鎧を適用。これがディストリビューションのThunderbirdに影響を与えるかどうかを確認しませんでした。プログラムへのアクセスがブロックされたらシステムログに記録する必要があるため、これを確認してください/var/log/syslog
。
AppArmorは、プログラムごとに構成され、基本的に不明なプログラムが目的のタスクを実行できるようにするため、問題を明確に説明します。雷鳥可能他のプログラム(OpenOffice)の実行を防ぐAppArmorプロファイルがあります。あなたのテストプログラムにはそのような設定ファイルはありません。