我的实验室中有大约 30 台系统(独立 PC),将近 200 名学生将使用它。每个系统都有一个名为 USER 的帐户,其密码为 123456,这 200 人都知道。因此,他们可以访问任何免费的系统并工作一段时间。只需注册簿条目即可记录它们的使用情况。我想给每个用户单独的登录名和密码,这很容易通过 LDAP 服务器实现。但我不想在每台 PC 上创建 200 个用户帐户。我想将所有 200 个人登录映射到用户帐户本身。它们将具有相同的配置文件和相同的主目录。我只想在文件中记录个人实验室使用的时间和日期。这可以使用 LDAP 或其他软件来完成吗?
同意 SLESKE 但要扩展他/她的评论,您需要先做几件事!
在 Linux 中,控制登录的库需要重定向以使用 LDAP 后端,而不是在 /etc/passwd 中查找内容。
如果您使用的是 OpenLDAP,那么您将需要查看两件事:
NSCD(名称服务器缓存守护程序)缓存 LDAP 查询。您将在用户登录的每个主机上运行它。
NSSLDAP(LDAP 的名称服务器切换)这是导致登录查询 NSCD 的粘合剂,NSCD 反过来会查询 LDAP 后端,或者如果 NSCD 过时或不可用,NSSLDAP 将直接查询 LDAP 后端。
因此,如果不是您的发行版的一部分,您将需要在每个工作站上安装 OpenLDAP、NSCD 和 NSSLDAP。需要 OpenLDAP 来获取知道如何使用 LDAP 协议的客户端库。
然后你需要对一些文件进行编辑:
/etc/nscd.conf 这个文件控制缓存的内容。这是我的一个系统中的一个转储,它充当 Samba 服务器:
然后你需要修改你的 nsswitch.ldap 文件(阅读上面的文档,这里太多了)。
一件非常重要的事情!!!!
如果您的 LDAP 服务器已关闭,您需要确保本地 root 帐户仍然可以登录。或者如果您的一个工作站出现网络问题,您需要确保您仍然可以登录。
所以当我的 Linux 机器启动时,我有一个脚本,它总是将 nsswitch.conf 文件复制到如下所示的位置:
密码:compat 组:compat
主机:文件 dns 网络:文件
服务:文件 协议:文件 rpc:文件 ethers:文件 网络掩码:文件 网络组:文件 bootparams:文件
自动挂载:文件别名:文件
一旦我准备好使用 LDAP 登录,我将 nsswitch.conf 文件替换为以下内容:
passwd:文件 ldap 组:文件 ldap 影子:文件 ldap
主机:文件 dns 网络:文件
服务:文件 协议:文件 rpc:文件 ethers:文件 网络掩码:文件 网络组:文件 bootparams:文件
自动挂载:文件别名:文件
前者允许我在本地登录,后者允许两者,但由于 NSCD 的缓存,NSCD 需要时间才能过时,从而导致登录延迟或问题。
关于这一点还有很多话要说,但希望这能让你开始。
顺便说一句:我是 Pozix Linux 和 Pozix Linux Small Business Server 的开发人员,我们有超过 400 个 Samba 系统以这种方式运行!
同意,TRS80 的评论是有效的,但这是我们用来从 /etc/passwd 文件创建 LDIF 文件的脚本。生成的 LDIF 文件可用于填充 LDAP 数据库。如果您在多个工作站上运行此脚本,您需要确保清除重复的帐户名,以便最终获得具有唯一 UID 的唯一帐户名。
如果您将每个帐户的 uidNumber 和 homeDirectory 属性设置为相同,那么事情可能会按照您想要的方式工作。
您无需在每台 PC 上创建 200 个用户帐户。Linux 可以从 LDAP 获取所有用户信息,因此这些帐户在本地不存在(即在 /etc/passwd 中)。主目录通常位于网络驱动器(NFS 或类似驱动器)上。
这是标准方法。你不这样做有什么原因吗?