SSHを介してリモートでログインし、Ubuntu 10.04(clear)を実行しているシステムにX転送を使用しました。ほとんどのX11アプリケーション(xterm、gnome-terminalなど)は正常に動作します。しかし、エヴァンスは始まらなかった。ファイルが存在し、明らかに読み取ることができるにもかかわらず、読み取ることができないようです~/.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
?どうやって始めることができますか?
答え1
TL、DR:私のホームディレクトリが.にあるので、これはApparmorの誤りです/home
。
Ubuntu 10.04の基本インストールでは、アパモアパッケージは間接的な推奨レベルの依存関係としてインポートされます。Ubuntu標準パック。システムログ(/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設定(in /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ポリシーによって上書きされません。追加のセキュリティのために、非常に限られた衣類の提案を取得しないでください)。
この問題は次のように報告されました。Ubuntuのバグ#447292。このソリューションは、/etc/passwd
一部のユーザーのホームディレクトリがexternalにリストされている場合を処理します/home
が、私のような場合は/home/gilles
シンボリックリンクの場合は処理しません。
答え2
同じ質問がありましたが、あなたの答えは私に正しい方向を伝えました。衣類の設定を編集する必要がない他のソリューションを見つけました。アクセスにリダイレクトするためにシンボリックリンクを使用せず、/home
代わりにbind
オプションを使用してくださいmount
。次の行を追加しました/etc/fstab
。
/elsewhere/home /home none bind
そうすれば、apparmorは下のディレクトリが「/home
実際に」他の場所にあるという事実さえ知らないので、苦情は消えます。
このアプローチの利点は、アプリケーションごとに異なる衣類設定ファイルを編集することなく、すべてのアプリケーションで機能することです。