.Xauthorityを読み取れないため、Evinceは起動に失敗します


10

Ubuntu 10.04(lucid)を実行しているマシンにX転送を使用して、SSH経由でリモートでログインしています。ほとんどのX11アプリケーション(xterm、gnome-terminalなど)は正常に動作します。しかし、Evinceは起動しません。~/.Xauthorityファイルが存在しても読み取りはできないようで、明らかに読み取り可能です(適切なアクセス許可があり、他のアプリケーションが問題なく読み取れます)。

$ evince
X11 connection rejected because of wrong authentication.
Cannot parse arguments: Cannot open display:
$ echo DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY
DISPLAY=localhost:10.0 XAUTHORITY=
$ strace evince
…
access("/home/gilles/.Xauthority", R_OK) = 0
open("/home/gilles/.Xauthority", O_RDONLY) = -1 EACCES (Permission denied)
…
$ ls -l ~/.Xauthority
-rw------- 1 gilles gilles 496 Jul  5 13:34 /home/gilles/.Xauthority

Evinceの何が読めないほど特別なの~/.Xauthorityですか?どうすれば開始できますか?

回答:


12

TL、DR:これはApparmorのせい/homeです。ホームディレクトリが外側にあるためです。

Ubuntu 10.04のデフォルトインストールでは、apparmorパッケージはubuntu-standardパッケージの間接的なRecommendsレベルの依存関係として取り込まれます。システムログ(/var/log/syslog)は、ApparmorがEvinceの読み取り試行を拒否していることを示しています~/.Xauthority

Jul 5 17:58:31 darkstar kernel: [15994724.481599] type=1503 audit(13415 03911.542:168): operation="open" pid=9806 parent=9805 profile="/usr/bin/evince" requested_mask="r::" denied_mask="r::" fsuid=1001 ouid=1001 name="/elsewhere/home/gilles/.Xauthority"

ApparmorのデフォルトのEvince構成(内/etc/apparmor.d/usr.bin.evince)は非常に寛容です。すべてのホームディレクトリで任意の読み取りと書き込みが可能です。ただし、このマシンのホームディレクトリは、デフォルトのAppArmor構成にリストされていない非標準の場所へのシンボリックリンクです。アクセスはで許可されて/homeいますが、ホームディレクトリの実際の場所は/elsewhere/home/gillesなので、アクセスが拒否されます。

この問題の影響を受ける可能性のある他のアプリケーションは次のとおりです。

  • Firefoxですが、そのプロファイルはデフォルト無効になっています(シンボリックリンクがあるため/etc/apparmor.d/disable/usr.bin.firefox -> /etc/apparmor.d/usr.bin.firefox)。
  • CUPS PDF印刷; 私はテストしていませんが、への書き込みに失敗することを期待してい~/PDFます。

私の修正は/etc/apparmor.d/tunables/home.d/local、行を編集して追加することでした

@{HOMEDIRS}+=/elsewhere/home/

ホームディレクトリの非標準の場所を認識させるには(最後/が重要であることに注意してください。のコメントを参照してください/etc/apparmor.d/tunables/home.d/ubuntu)、実行/etc/init.d/apparmor reloadしてApparmor設定を更新します。

管理者権限がなく、システム管理者が応答しない場合は、evinceバイナリをなどの別の場所にコピーできます。~/binこれは、Apparmorポリシーの対象にはなりません(そのため、起動できますが、 Apparmorが提供する非常に限られた追加のセキュリティは提供されません)。

この問題はUbuntuバグ#447292として報告されています。解決策は、一部のユーザーが/etc/passwdoutside /homeにリストされているホームディレクトリを持っている場合のケースを処理しますが、私のような/home/gillesはシンボリックリンクです。


ありがとうございました。Ubuntu 16.04では、関連ファイルは「/etc/apparmor.d/tunables/home.d/ubuntu」であり、手動で編集する代わりに、「sudo dpkg-reconfigure apparmor」を実行することをお勧めします(これにより、自宅の場所を追加する機会)
arr_sea 2018年

2

同じ問題があり、あなたの答えは私を正しい方向に向けました。apparmor設定の編集を必要としない別のソリューションを見つけました。へのアクセスをリダイレクトするためにシンボリックリンクを使用する代わりに/home、のbindオプションを使用しますmount。に次の行を追加しました/etc/fstab

/elsewhere/home /home none bind

これを実行すると、apparmorはその下のディレクトリ/homeがどこかに「実際に」配置されていることさえ知らないので、苦情はなくなります。

このアプローチの利点は、アプリケーションごとに異なるapparmor構成ファイルを編集する必要なく、すべてのアプリケーションで機能することです。


1
それは私の場合には当てはまり/homeませんでした/home。この場合の変形は、バインド・マウントすることである/elsewhere/home/gilles/home/gilles、または/elsewhere/home/home/elsewhere
Gilles「SO-邪悪なことをやめなさい」
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.