管理多台Linux服务器时,如果每台服务器都有自己独立的用户名和密码,那么记忆和维护这些信息就非常具有挑战性。笔者从事Linux的培训工作,经常遇到这样的问题:每次学生上机的座位可能都不同,用户名和密码等相关的信息经常被修改。
如果互相配合不好,就很容易造成有些人无法登录,并且学生的文件资料也难以保存。于是,笔者通过将老师使用的电脑配置成为LDAP和NFS服务器,为所有的学生提供密码验证服务来解决这个问题。
本文中LDAP服务器使用的是Fedora Core 2自带的OpenLDAP-Server软件,读者配置时需要确保已经安装了该软件包。主流的LDAP服务器还有IBM Directory Server和Sun Java System Directory Server等,使用它们同样可行,配置也是大同小异。其中Sun Java System Directory Server还可以在Windows或Solaris平台运行。
配置OpenLDAP服务器
首先,为每个学生指定组、用户名和密码,分别写入/etc下的group、passwd和shadow文件。然后修改配置文件 /etc/sldap.conf为如下内容:
#载入模版
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
allow bind_v2
pidfile /var/run/slapd.pid
#配置访问控制列表,使得用户可以修改自己的密码及查询其它资料
access to attr=userPassword
by self write
by anonymous auth
access to dn="dc=tiantian.com"
by self write
by * read
database ldbm
suffix "dc=tiantian.com"
rootdn "cn=Manager,dc=tiantian.com"
#指定LDAP管理员的密码
rootpw secret
# rootpw {crypt}ijFYNcSNctBYg
directory /var/lib/ldap
修改完成后,执行如下命令启动LDAP服务器:
# service ldap start |
将信息导入LDAP服务器在/usr/share/openldap/migration/目录中有一些Perl脚本,这些脚本可以将/etc/group中的组,以及/etc/passwd
和/etc/shadow中的用户名和密码导出成.ldif格式的文件,供OpenLDAP服务器使用。这些脚本也可以到下载。
首先,编辑migrate_common.ph文件,分别给“$DEFAULT_MAIL_DOMAIN”和“$DEFAULT_BASE”赋值:
$DEFAULT_MAIL_DOMAIN
"tiantian.com";
$DEFAULT_BASE = "dc=tiantian.com"; |
注意,所赋的值要和/etc/sldap.conf中的设置相对应(dc=tiantian.com)。
然后,执行以下脚本,将OpenLDAP服务器初始化所需要的资料写入/root/base.ldif文件:
# ./migrate_base.pl > /root/base.ldif
# ./migrate_group.pl /etc/group >> /root/base.ldif
# ./migrate_passwd.pl /etc/passwd >> /root/base.ldif |
随后执行如下命令:
# ldapadd -x -D 'cn=Manager,dc=tiantian.com' -W -f /root/base.ldif |
这样,就将所有组、用户名及其密码等信息导入了LDAP服务器。
配置LDAP客户端
在客户端执行authconfig或authconfig-gtk命令,进入认证配置界面,选中图1所示的三个选项后单击“Next”,进入图2所示的界面中配置LDAP服务器的信息。
客户端每次启动之后需要自动运行nscd服务。通过执行ntsysv命令或“chkconfig -level 35 nscd on”命令,可以使该服务自动执行。
图1 认证配置界面
图2 配置服务器地址
配置NFS服务器
配置NFS服务器很简单,只需要在/etc/exports文件中写入如下一行即可:
然后,执行如下命令,使得PortMap、NFS和NFSLock服务能够自动运行:
# chkconfig --level 35 portmap on
# chkconfig --level 35 nfslock on
# chkconfig --level 35 nfs on |
如果使用NFS v4版本,则还需要开启几个RPC服务。
配置NFS客户端
在每台机器的/etc/fstab文件中增加如下一行:
server:/home /home nfs defaults 1 1 |
然后,执行如下命令,使得PortMap和NetFS服务能够自动运行:
# chkconfig --level 35 portmap on
# chkconfig --level 35 netfs on |
如果NetFS服务没有自动打开,客户机就无法在启动时成功挂载NFS卷。
小结
配置完成后,不论用户在哪台机器上登录,都会去服务器验证密码,并且,服务器本身也可以使用OpenLDAP服务器来进行用户验证。
用户登录后,所在的初始位置表面上是客户机的/home/目录,实际是服务器上的/home/目录。这样,用户的文档资料就都会存储在服务器中,不论用户在何处登录,文档资料总是位于同样的位置。
全部用户的密码资料也都存储在OpenLDAP Server中,既可以由LDAP管理员统一维护,也可以由用户使用passwd命令来修改。只不过,改变的不是客户机的/etc/shadow文件和/etc/passwd文件,而是OpenLDAP Server中的资料。
前面已经说明本文是在Fedora Core 2上完成的,在其它版本的Linux上,配置可能会略有不同,但文中所用的方法在Red Hat 7.2~9.0及ThizLinux 6.0/7.0上同样有效。