更改 $HOME/.Xauthority 的位置
是否可以將 , 的位置更改為
.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
預設情況下不會列出它們。