自动安装的AFP主目录归根(OS X Yosemite客户端,Linux服务器)

我正在尝试做什么,但不能去工作

我正试图在优胜美地客户端build立networking用户,他们的主目录上有一个kerberised法新社。 我使用的是automountd,当它们被访问时(即,只要有人login),home目录就挂载在/ home / username下。 在大多数情况下,这是有效的:我可以作为networking用户login,我得到一张Kerberos票据,并且该票据用于安装主目录。 安装工作得很好。 但是,主目录将由root(group:wheel)拥有,这意味着用户不能访问它。 然后OS X会要求用户inputpipe理员的密码来“修复用户的库”。

请注意,我们没有运行OS X Server,因为networking不是Mac。 相反,我们在Linux机器上运行OpenLDAP和MIT Kerberos。 还要注意的是,我主要pipe理Linux服务器和Windows客户端,我正在努力把事情做对Mac的方式。

我可以做些什么来解决这个问题(但我们的用户不能)

当我第一次以本地pipe理员身份login,然后(在terminal上)“su someNetworkUser ”时,它可以很好地工作:主目录使用Kerberos票据进行挂载,并由一些networking用户拥有。 我甚至可以做到这一点,然后回到login窗口(不注销本地pipe理员,所以主目录不能卸载),然后以一些networking用户login:这将完美的工作,因为主目录已经挂载正确的凭据和一些networking用户拥有。 OS X不会抱怨破碎的库。

我认为正在发生

所以,显然login时通过login窗口访问/ home / someNetworkUser的第一个过程是由root拥有的。 automountd会注意到并挂载主目录,并拥有根目录。 我知道login窗口首先获得一些networking用户的Kerberos票证,否则挂载将失败。 显然,使用su时,情况是不同的。 使用su访问/ home / someNetworkUser的第一个过程似乎由一些networking用户拥有,而不是根。

我不太清楚login过程中涉及哪些进程,以及login窗口和su之间的区别。 我已经尝试使/etc/pam.d/login(据我所知,它被loginwindow使用)几乎与/etc/pam.d/su相同 – 无济于事。

我还注意到,当连接到AFP服务器一段时间(我可以故意通过重新启动AFP守护进程)丢失,当连接返回时,主目录被重新安装。 但是这一次,目录由正确的用户拥有,而不是由root用户拥有。 这似乎是相当合理的,因为当时用户的进程将尝试访问主目录,而不是根进程。

思考认真解决问题

但现在我卡住了。 我不知道如何以合理的方式让相应用户拥有的家用电器。 我有两个想法,我会分享,但不满意:

  1. 创build卸载主目录的login脚本。 脚本需要以root身份运行。 然后我希望automountd重新安装用户的目录。 这将是非常hacky,无论如何,它可能无法正常工作,因为当时的家庭目录将是繁忙的。
  2. 创build一个PAM插件,在pam_krb5获得Kerberos票证之后,只会访问用户的主目录。 实际上,它必须等到pam_opendirectoryfind用户的主目录应该驻留的位置; 否则我不得不硬编码一些path,这不会很酷。

你有什么想法?