我有一个用例,默认情况下所有用户都在远程安装的主目录中工作。但是,有时他们更喜欢一台或多台机器上的本地主目录,例如因为网络太慢、数据太大等。
因此,我喜欢设置以下内容:
- 通过 LDAP 分发用户
- 默认情况下,用户获取其远程主文件夹,例如
/mnt/smb/$SERVER/$USER
- 如果存在主文件夹
/home/$USER
(符号链接或文件夹),则应选择该文件夹并将其设置为$HOME
-env 等。 - 如果需要创建主目录(因为它指向
/home/$USER
),则应使用 ecryptfs 创建
简而言之:不要全局定义用户的主目录,而是在机器级别定义一个默认位置。
当前状态:
- OpenLDAP 身份验证等功能已启动并正在运行。在 LDAP 中
homeDirectory
设置为/home/$USER
- 使用 pam_mount 挂载远程文件夹,并使用硬编码的服务器和位置
/smb/$USER
- 如果用户想要在计算机上使用远程文件夹,他可以符号链接
/home/$USER
到/smb/$USER
。另一方面,/etc/skel
如果用户想要本地主文件夹,则手动创建一个空目录(或 的副本)。
去做:
- 删除符号链接(如果可能的话)
- 可以指定主文件夹所在的动态远程服务器
- 如果不存在本地文件夹或无法挂载远程文件夹,则创建一个加密主文件夹 (ecryptfs)
当我尝试借助 pam_script 来实现它时,我遇到了几个障碍:
- 脚本以 root 身份运行,因此简单地导出新
$HOME
变量不会产生任何效果 - ecryptfs-utils 的文档很糟糕,有很多缺点。无法手动指定用户的主目录。据我所知,它是从 getent 中获取的,getent 是远程文件夹的挂载点,而不是
/home/$USER