我的实验室里有30多个系统(独立的个人电脑),将近200名学生将使用它。 每个系统都有一个名为USER的帐号,其密码为123456,这是200人所知道的。 因此,他们访问任何系统是免费的,工作一段时间。 他们的使用logging只是注册簿条目。 我想给每个用户单独的login名和密码,很容易通过LDAP服务器实现。 但我不想在每台PC上创build200个用户帐户。 我想映射所有的200人login到USER帐户本身。 他们将有相同的configuration文件和相同的主目录。 我只想将个人实验室使用的时间和datelogging在一个文件中。 这可以使用LDAP或其他软件来完成吗?
同意SLESKE,但扩大他/她的意见,你需要先做一些事情!
在Linux中,控制日志logging的库需要redirect到使用LDAP后端,以反对在/ etc / passwd中查找。
如果您使用OpenLDAP,那么您将需要看两件事情:
cachingLDAP查询的NSCD(名称服务器caching守护进程)。 您将在用户login的每台主机上运行此操作。
NSSLDAP(LDAP的名称服务器切换)这是导致login查询NSCD的粘合剂,而NSCD将查询LDAP后端,或者如果NSCD过时或不可用,NSSLDAP将直接查询LDAP后端。
因此,在每个工作站上,如果不是您的发行版的一部分,您需要安装OpenLDAP,NSCD和NSSLDAP。 OpenLDAP需要获得知道如何说LDAP协议的客户端库。
那么你需要对一些文件进行编辑:
/etc/nscd.conf这个文件控制被caching的内容。 这是来自我的一个系统作为Samba服务器的转储:
enable-cache passwd yes positive-time-to-live passwd 10 negative-time-to-live passwd 3 suggested-size passwd 211 check-files passwd yes persistent passwd yes shared passwd yes max-db-size passwd 33554432 auto-propagate passwd yes enable-cache group yes positive-time-to-live group 3600 negative-time-to-live group 3 suggested-size group 211 check-files group yes persistent group yes shared group yes max-db-size group 33554432 auto-propagate group yes enable-cache hosts yes positive-time-to-live hosts 3600 negative-time-to-live hosts 3 suggested-size hosts 211 check-files hosts yes persistent hosts yes shared hosts yes max-db-size hosts 33554432
然后你需要修改你的nsswitch.ldap文件(读取它上面的DOC,太多了,不能进入这里)。
一个非常重要的事情!
如果您的LDAP服务器已closures,您需要确保本地root帐户仍可以login。或者,如果您的某个工作站出现networking问题,则需要确保仍然可以login。
所以当我的Linux机器启动时,我有一个脚本总是将nsswitch.conf文件复制到如下所示的位置:
密码:compat组:compat
主机:文件DNSnetworking:文件
服务:文件协议:文件rpc:文件ethers:文件netmasks:文件netgroup:文件bootparams:文件
automount:文件别名:文件
一旦准备好使用LDAP进行login,我将nsswitch.conf文件replace为以下内容:
passwd:文件ldap组:文件ldap shadow:文件ldap
主机:文件DNSnetworking:文件
服务:文件协议:文件rpc:文件ethers:文件netmasks:文件netgroup:文件bootparams:文件
automount:文件别名:文件
前者允许我在本地login,后者允许但是由于NSCD的caching,NSCD需要时间才能过期,从而导致login延迟或问题。
还有很多事情要说,但是这希望能让你开始。
顺便说一下:我是Pozix Linux和Pozix Linux Small Business Server的开发者,我们有超过400个Samba系统以这种方式运行!
同意,TRS80的评论是有效的,但这里是我们用来从/ etc / passwd文件创buildLDIF文件的脚本。 生成的LDIF文件可以用来填充您的LDAP数据库。 您需要确保,如果您在多个工作站上运行此脚本,则会清除重复的帐户名称,以便使用唯一的UID清除唯一的帐户名称。
cat /etc/passwd | while read i; do uid=`echo $i | cut -d : -f 1` uidNumber=`echo $i | cut -d : -f 3` gidNumber=`echo $i | cut -d : -f 4` gecos=`echo $i | cut -d : -f 5` homeDirectory=`echo $i | cut -d : -f 6` loginShell=`echo $i | cut -d : -f 6` userPassword=`cat /etc/shadow | grep $uid | cut -d : -f 2` echo "dn: cn=$gecos,ou=people,dc=mycompany,dc=com" echo "objectClass: account" echo "objectClass: posixAccount" echo "cn: $gecos" echo "uid: $uid" echo "uidNumber: $uidNumber" echo "gidNumber: $gidNumber" echo "homeDirectory: $homeDirectory" echo "loginShell: $loginShell" echo "userPassword: $userPassword" done
如果您为每个帐户设置相同的uidNumber和homeDirectory属性,则应该按照您的要求进行操作。
您不需要在每台PC上创build200个用户帐户。 Linux可以从LDAP获取所有的用户信息,所以账户不在本地存在(即在/ etc / passwd中)。 主目录通常位于networking驱动器(NFS或类似的)上。
这是标准的方法。 你有没有这样做的原因?