Answers:
NFS和LDAP都不支持断开连接的操作:即,当便携式计算机无法访问服务器时,它将无法访问任何NFS挂载的目录,也将无法执行用户查找。基本上,它将被卡住。
以下是一些解决方法。
您可以通过统一使用本地目录来与本地服务器上的本地目录保持同步,而不是通过NFS替换主目录 。您可以从cron运行一致的测试,如果服务器无法访问,该测试将中止操作。这篇关于AskUbuntu的文章 以及另一篇文章 提供了关于同步主题的讨论和一些有用的建议。
关于用户身份验证/授权问题,解决方案围绕着使用libnss-db
用作用户信息源:
安装libnss-db
,然后配置/etc/nsswitch.conf
以查找db
常规代码以外的源代码files
:
passwd:文件db组:文件db阴影:文件db
所述db
源文件位于/var/lib/misc
(/var/lib/misc/passwd.db
等)。然后,您可以在中央服务器上保留这些文件的主副本,并将客户端与rsync
+ 同步cron
。缺点:尚无现成的管理脚本来管理服务器上的db文件(据我所知),而且您会遇到同步延迟,并且必须设置一种rsync
连接主服务器的方法。
在 nss-updatedb
和libpam-ccreds
封装提供了一种更清洁的方式来进行设置:与nss-updatedb
您可以在本地的重建
passwd.db
和group.db
,而shadow
信息由管理libpam-ccreds
。README
软件包随附的文件中提供了有关如何设置这些文件的说明。
至于文件,我会针对普通文件(例如Ubuntu One或Dropbox)进行基于网络的同步,然后为更大的文件(例如音乐,照片,视频和Ubuntu ISO)提供一个共享文件夹。这可能是一个NFS挂载,它发生故障时没有太大关系,也可以是Samba共享,也可能是许多其他技术之一。
LDAP失败肯定会引起麻烦。您通常不知道的各种系统帐户都无法翻译(名称<-> id号),并且系统最多在等待LDAP服务器响应之前一次反复挂起一分钟。退回到本地系统。否则系统可能只是锁定而完全失败。
有一些解决方法。您可以通过各种方式设置本地副本并将其同步-查看此问题和链接问题的其他答案。您还可以告诉LDAP不要从LDAP目录中获取系统用户,而是从本地文件中获取。在我们的服务器上,我们将以下内容放在了最后ldap.conf
# We need to ensure that various things can work without LDAP being available
# for example: booting, ssh in as root, apache ...
nss_initgroups_ignoreusers avahi,avahi-autoipd,backup,bin,daemon,dhcp,dhcpd,games,gdm,gnats,haldaemon,hplip,irc,klog,libuuid,list,lp,mail,man,messagebus,munin,mysql,nbd,news,ntp,nut,polkituser,proxy,pulse,root,sshd,statd,sync,sys,syslog,uucp,www-data
您需要确保所有系统用户都在该列表中。即使那样,对于笔记本电脑的使用来说可能还不够。
nss_initgroups_ignoreusers <user1,user2,...,userN>
This option directs the nss_ldap implementation of initgroups(3)
to return NSS_STATUS_NOTFOUND if called with a listed users as
its argument.
因此,基本上LDAP假装它甚至不联系主服务器就不认识那些用户,因此NSS依靠本地用户,系统运行正常。
最后一个想法是,如果您愿意花时间学习LDAP,则可以学习一些基本的人偶,并使用它来使所有用户在所有系统上保持相同- 例如,请参阅此人偶配方。Puppet还将允许您做很多其他事情-安装常用软件包,各个方面的常用设置...