.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);
ファイルが削除/作成されるのではなく上書きされるように、ソースコードを変更するにはどうすればよいですか?
X Cookieファイルの場所は、XAUTHORITY
環境変数を使用して構成できます。デフォルトは~/.Xauthority
です。
もちろん、アプリケーションに渡す場所は、Cookieが保存されている場所と一致している必要があります。 SLiMは、Cookieを別のファイルに追加する方法を提供していません。~/.Xauthority
がハードコードされています。別のファイルを使用する場合は、SLiMにパッチを適用するか、この構成オプションがあるディスプレイマネージャーを使用してください。たとえば、GdmはXCookieを/var/run/gdm
の下に保存します。
変更可能なファイルをホームディレクトリに配置したくない場合は、.Xauthority
をシンボリックリンクにすることができると思います。
ホームディレクトリを不変にすることは 無駄の練習 です。他の多くの同様の問題が発生する可能性があります。構成ファイルと状態ファイルの標準的な場所はホームディレクトリです。ドットファイルは.
で始まり、ls
がデフォルトでリストしないため、ここで名前が付けられます。