有一天,我想到创建显示管理器独立的访客会话。
我的基本想法是将登录 shell 更改为自定义程序,该程序动态创建临时主目录 (fe /tmp/guest-XXXXXX
) 并将此会话分配给该主目录。用户注销后,它将再次删除该目录。我遇到的问题如下,我需要设置一个 home /etc/passwd
,并且可以毫无问题地覆盖 HOME 环境变量,但应用程序似乎仍然使用 home 设置passwd
而不是环境变量,至少在图形环境中是这样。我无法设置房屋,passwd
因为直到会议开始我才知道。
我想出的基本逻辑如下:
- 登录 shell 已启动
- 创建临时家园
- HOME 设置为这个临时家
- 真正的 shell 是分叉的
- 真正的 shell 终止后,临时家将被删除
su
当我进入用户时,这似乎有效,但是运行图形会话意味着大多数/所有程序都开始使用passwd
.
是否可以在图形会话处于活动状态时动态更改用户主页?我是否忽略了图形会话如何工作的架构中的某些内容?