更新:

更新:

是否可以将 , 的位置更改为.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下不会列出它们。

相关内容