目前我在家庭网络上有几台机器,它们是静态台式机和笔记本电脑的混合体。对我来说,它变得难以管理,而且对所有人来说,拥有本地主目录、设置和安全性也是不切实际的,因此我正在考虑使用 LDAP 进行公共用户管理,使用 NFS 进行共享主目录。
当其中一台笔记本电脑在路上时会发生什么?家庭网络无法访问,因此身份验证会失败并回退到本地存储吗?此外,当笔记本电脑返回时,是否有办法将家庭存储重新同步到 NFS 服务器?
目前我在家庭网络上有几台机器,它们是静态台式机和笔记本电脑的混合体。对我来说,它变得难以管理,而且对所有人来说,拥有本地主目录、设置和安全性也是不切实际的,因此我正在考虑使用 LDAP 进行公共用户管理,使用 NFS 进行共享主目录。
当其中一台笔记本电脑在路上时会发生什么?家庭网络无法访问,因此身份验证会失败并回退到本地存储吗?此外,当笔记本电脑返回时,是否有办法将家庭存储重新同步到 NFS 服务器?
NFS 和 LDAP 都不支持断开连接操作:即,当笔记本电脑无法访问服务器时,它将无法访问任何 NFS 挂载的目录,也无法执行用户查找。基本上,它会被卡住。
一些解决方法可能如下。
您可以使用统一的方式将本地目录与中央服务器上的目录同步,而不是通过 NFS 安装主目录 。您可以从 cron 统一运行,由一个测试保护,如果服务器无法访问,该测试会中止操作。AskUbuntu 上的这篇文章 和另一篇文章 提供了关于同步主题的讨论和一些有用的建议。
关于用户身份验证/授权问题,解决方案围绕使用
libnss-db
作为用户信息的来源:安装
libnss-db
,然后配置/etc/nsswitch.conf
查找db
除常规之外的源files
:密码:文件数据库组:文件数据库阴影:文件数据库
db
源文件位于(等)/var/lib/misc
。/var/lib/misc/passwd.db
然后,您可以在中央服务器上保留这些文件的主副本,并使用rsync
+同步客户端cron
。缺点:没有现成的管理脚本来管理服务器上的 db 文件(据我所知),而且您会产生同步延迟,并且必须设置一种rsync
连接到主服务器的方式。nss-updatedb
andlibpam-ccreds
包提供了一种更简洁的设置方式:您nss-updatedb
可以在本地重新创建passwd.db
andgroup.db
,而shadow
信息由libpam-ccreds
. 可以在README
软件包随附的文件中找到如何设置这些的说明。文件
至于文件,我会为常见文件(比如Ubuntu One或Dropbox)进行基于网络的同步,然后为更大的文件(可能是音乐、照片、视频和 Ubuntu ISO)创建一个共享文件夹。这可能是一个 NFS 挂载,当它失败时并不重要,或者是 Samba 共享,或者可能是许多其他技术之一。
LDAP
LDAP 失败肯定会导致麻烦。无法翻译您通常不知道的各种系统帐户(名称 <-> id 号),并且系统最多只能一次重复挂起一分钟,同时等待 LDAP 服务器的响应之前退回到本地系统。或者系统可能只是锁定并完全失败。
有一些方法可以解决这个问题。您可以设置本地副本并以各种方式同步它 - 请参阅此问题和链接问题的其他答案。您还可以告诉 LDAP 不要从 LDAP 目录中获取系统用户,而是从本地文件中获取。在我们的服务器上,我们将以下内容放在我们的末尾
ldap.conf
您需要确保所有系统用户都在该列表中。即便如此,对于笔记本电脑的使用来说可能还不够。
从nss_ldap 手册页
所以基本上 LDAP 在不联系主服务器的情况下假装它不认识这些用户,因此 NSS 依靠本地用户并且系统工作正常。
最后一个想法是,如果您愿意花时间学习 LDAP,则可以改为学习一些基本的puppet,并使用它来让所有用户在所有系统中保持相同 - 例如,请参阅这个 puppet recipe。Puppet 还允许你做很多其他的事情——安装通用包,通用设置各个方面......