我的用例看起来非常简单。我想在登录此多用户 18.04 Ubuntu 计算机时自动挂载 CIFS 文件夹 CIFS1 和 CIFS2,这些文件夹存在于每个用户主目录中我的文件服务器上的所有用户中。
所以如果 user1 登录,我安装:
- /home/user1/CIFS1
- /home/user1/CIFS2。
如果 user2 登录,我安装:
- /home/user2/CIFS1
- /home/user2/CIFS2。
我已经有一个有效的安装命令来执行此操作,使用 Kerberos 票证/SSSD 进行身份验证:
sudo mount -v -t cifs -o user=${USER},cruid=${USER},sec=krb5,uid=${UID} //isilon.mydataserver/CIFS1/${USER} /home/${USER}/CIFS1
sudo mount -v -t cifs -o user=${USER},cruid=${USER},sec=krb5,uid=${UID} //isilon.mydataserver/CIFS2/${USER} /home/${USER}/CIFS2
效果很好,但现在我想要自动挂载登录后直接这些文件夹,并注入正确的 ${USER} 信息自动文件系统配置。
而且......这似乎是不可能的,我尝试了很多东西,直接或间接映射,可执行自动映射,但没有成功。
autoconf 文件的模式[mountpoint] [option] [location]
接受环境变量(USERS、UID 等)的注入仅在选项/位置部分。
在sudo nano /etc/auto.master
我有:
/- /etc/auto.cifs --ghost
遵循直接安装的 sun autofs 模式:[mountpoint] [option] [location]
,我的/etc/auto.cifs
配置包含:
/home/${USER}/CIFS1 -fstype=cifs,user=${USER},cruid=${UID},sec=krb5,uid=${UID} ://isilon.mydataserver/CIFS1/${USER}
/home/${USER}/CIFS2 -fstype=cifs,user=${USER},cruid=${UID},sec=krb5,uid=${UID} ://isilon.mydataserver/CIFS2/${USER}
重新加载配置:
sudo systemctl reload autofs
在用户登录期间,此配置会创建一个/home/${USER}/CIFS1
文件夹,而不是一个/home/user1/CIFS1
或/home/user2/CIFS1
文件夹...
有没有办法使用 autofs 或与 Kerberos / SSSD / CIFS 身份验证兼容的其他方法来获得此行为(将 CIFS 文件夹安装到多用户环境中: /home/$USER ,其中 $USER = user1, user2, ...)?
编辑1:我向读者明确指出,我无法修改 Active Directory 架构来使用 SSSD/AutoFS 的自动挂载功能:(
编辑2:auto.master
我也尝试从with运行 bash 程序program:/etc/auto.cifs
,但似乎并不能解决这个问题,因为程序只能返回[option][location]
[mountpoint] 部分,而不能返回 [mountpoint] 部分。
答案1
@reyman64 - 你找到问题的解决方案了吗?我目前遇到的情况与您上面描述的情况相同,并且一直在互联网上搜索但尚未找到解决方案。如果我能弄清楚如何将用户变量设置为安装点的一部分,那就太棒了。
根据详细回复这里,关键位置的 user 变量设置为运行 autofs 守护进程的用户,该用户始终为 root。看起来唯一可能的解决方案是让 auto.master 执行脚本。