是否可以将 , 的位置更改为.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
更新:
.Xauthority
查看slim的源代码,我想我可能找到了被删除并重新创建的地方:
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);
我如何更改源代码,以便该文件被覆盖,而不是删除/创建?
答案1
X cookie 文件的位置可以使用XAUTHORITY
环境变量进行配置。默认为~/.Xauthority
.
当然,您传递给应用程序的位置必须与存储 cookie 的位置相匹配。 SLiM 不提供将 cookie 添加到不同文件的方法:它是~/.Xauthority
硬编码的。如果您想使用不同的文件,请修补 SLiM 或使用恰好具有此配置选项的显示管理器。例如,Gdm 在 下存储 X 个 cookies /var/run/gdm
。
.Xauthority
如果您不希望可修改的文件位于您的主目录中,我认为您可以创建符号链接。
使你的主目录不可变是徒劳的练习。您可能会遇到许多其他类似的问题。配置文件和状态文件的标准位置是您的主目录 - 这就是点文件的名称所在,因为它们以 a 开头,默认.
情况ls
下不会列出它们。