web-dev-qa-db-ja.com

$ HOME /.Xauthorityの場所を変更します

.Xauthorityの場所を$HOME/.Xauthority以外に変更することはできますか? AFAIU、このファイルは、ログインマネージャLXDEによってslimにログインするたびに作成されます。

私が抱えている問題は次のとおりです。

拡張属性を使用して、自宅を「不変」に設定したい:

chattr +i /home/martin/

このように、アプリケーションはファイルを/home/martin/に直接保存できませんが、自宅の下位レベルにあるディレクトリ、つまり/home/martin/.config/にファイルを保存することはできます。

現時点では、自宅を不変に設定すると、ログインマネージャー(LXDE)が/home/martin/.Xauthorityを作成できないため、slimにログインできません。これは、古い.Xauthorityが存在する場合でも発生します。ログインマネージャは古いファイルを新しいデータで上書きすることができますが、明らかにこれはそれが行うことではありません。新しいファイルを作成し、古いファイルを削除します。/home/martinが不変の場合、これは許可されません(既存のファイルの上書きは許可されます)。

したがって、.Xauthority.config/.Xauthorityなどの別の場所に保存したいと思います。これは可能ですか?

xauthがパラメータ-fを取り、ファイルパスを指定できることを知っています。

更新:

スリムのソースコードを見ると、.Xauthorityが削除されて再作成されている場所を見つけたかもしれません。

string xauthority = pw->pw_dir;
xauthority.append("/.Xauthority");

...

/* reinitialize auth file */
authfile = cfg->getOption("authfile");
remove(authfile.c_str());
putenv(StrConcat("XAUTHORITY=", authfile.c_str()));
Util::add_mcookie(mcookie, ":0", cfg->getOption("xauth_path"),
  authfile);

ファイルが削除/作成されるのではなく上書きされるように、ソースコードを変更するにはどうすればよいですか?

3
Martin Vegter

X Cookieファイルの場所は、XAUTHORITY環境変数を使用して構成できます。デフォルトは~/.Xauthorityです。

もちろん、アプリケーションに渡す場所は、Cookieが保存されている場所と一致している必要があります。 SLiMは、Cookieを別のファイルに追加する方法を提供していません。~/.Xauthorityがハードコードされています。別のファイルを使用する場合は、SLiMにパッチを適用するか、この構成オプションがあるディスプレイマネージャーを使用してください。たとえば、GdmはXCookieを/var/run/gdmの下に保存します。

変更可能なファイルをホームディレクトリに配置したくない場合は、.Xauthorityをシンボリックリンクにすることができると思います。

ホームディレクトリを不変にすることは 無駄の練習 です。他の多くの同様の問題が発生する可能性があります。構成ファイルと状態ファイルの標準的な場所はホームディレクトリです。ドットファイルは.で始まり、lsがデフォルトでリストしないため、ここで名前が付けられます。