Home

更改 $HOME/.Xauthority 的位置

  • December 22, 2014

是否可以將 , 的位置更改為.Xauthority, 以外的其他內容$HOME/.Xauthority?AFAIU,每次我登錄LXDE時都會由我的登錄管理器創建這個文件slim

我遇到的問題如下:

我想使用擴展屬性將我的家設置為“不可變”:

chattr +i /home/martin/

這樣,沒有應用程序可以將文件直接保存在 . /home/martin/,但他們仍然可以將文件保存在位於我家較低級別的目錄中,即/home/martin/.config/.

目前,當我將 home 設置為不可變時,我無法登錄,LXDE因為登錄管理器 ( slim) 無法創建/home/martin/.Xauthority. 即使舊.Xauthority版本存在,也會發生這種情況。登錄管理器可以用新數據覆蓋舊文件,但顯然這不是它的作用。它創建一個新文件並刪除舊文件。當 /home/martin 是不可變的(允許覆蓋現有文件)時,這是不允許的。

因此,我想儲存在.Xauthority其他地方,例如.config/.Xauthority. 這可能嗎?

我知道這xauth需要-f可以指定文件路徑的參數。

更新:

看slim的原始碼,我想我可能找到了.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 將 X 個 cookie 儲存在/var/run/gdm.

.Xauthority如果您不希望可修改文件位於您的主目錄中,我認為您可以創建一個符號連結。

使您的主目錄不可變是徒勞的。您可能會遇到許多其他類似的問題。配置文件和狀態文件的標準位置是您的主目錄——這是點文件的名稱,因為它們以 a 開頭,.因此ls預設情況下不會列出它們。

引用自:https://unix.stackexchange.com/questions/175243