首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

LDAP 用户管理与 RSCT配置第三步

LDAP 用户管理与 RSCT配置第三步

准备 LDAP 客户端配置
设置服务器配置,支持下列对默认 aix2307rfc 模式的两个小幅更改:
  • 密码过期不再以从 1970 年开始的天数为单位,而是以秒为单位。
  • 对于组来说,使用 fulldn memberuid,而不是 userid  membernames
    当将 LDAP 用于其他应用程序(如 IBM WebSphere®)时,这种设置对于定义 IBM WebSphere Console 用户管理授权是非常有用的。在 LDAP 中组的配置是默认配置。
1
2
3
4
5
6
7
cn=group1,ou=Groups,ou=SYS1,o=ORG,c=US
cn=group1
objectClass=aixauxgroup
objectClass=posixgroup
objectClass=top
gidnumber=1142
memberuid=user1





使用 memberfulldn=yes 选项,如下列代码所示。
1
2
3
4
5
6
7
cn=group1,ou=Groups,ou=SYS1,o=ORG,c=US
cn=group1
objectClass=aixauxgroup
objectClass=posixgroup
objectClass=top
gidnumber=1142
memberuid=uid=user1,ou=People,ou=SYS1,o=UBS,c=COM




要准备客户端,使用下列程序配置所有参与的 LDAP 客户端。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/perl
$cfg = "/etc/security/ldap/2307aixuser.map";
open(ETC,"< $cfg");
@etc = <ETC>;
close(ETC);
chomp(@etc);

$updatecfg = 0;
$refreshldap = 0;

foreach $line (@etc) {
if ( $line =~ /^lastupdate/ ) {

    @row = split(" ",$line) ;

    if ( $row[-1] !~ /seconds/ ) {
        $updatecfg = 1;
    }
}
}

if ( $updatecfg ) {
open(ETC,"> $cfg");
foreach $line (@etc) {
    if ( $line =~ /^lastupdate/ ) {
        print("Setting LDAP user mapping to accept seconds ...\n");
        print(ETC "lastupdate    SEC_INT shadowlastchange s seconds\n");
    } else {
        print(ETC "$line\n");
    }
}
close(ETC);
}

$cfg = "/etc/security/ldap/ldap.cfg";
open(ETC,"< $cfg");
@etc = <ETC>;
close(ETC);
chomp(@etc);

$updatecfg = 0;
foreach $line (@etc) {
if ( $line =~ /^memberfulldn:/ ) {

    @row = split(":",$line) ;

    if ( $row[1] !~ /yes/ ) {
        $updatecfg = 1;
    }
}
}

if ( $updatecfg ) {
open(ETC,"> $cfg");
foreach $line (@etc) {
    if ( $line =~ /^memberfulldn:/ ) {
        print("Setting LDAP configuration to accept fulldn ...\n");
        print(ETC "memberfulldn: yes\n");
    } else {
        print(ETC "$line\n");
    }
}
close(ETC);
}

$masters = "host1,host2";
$cmd = "/usr/sbin/mksecldap -c -a cn=rootdn -p rootdnpwd -d $SUFFIX -h $masters -n 20389";
print("INFO: configuring all nodes to listen to $masters peer-2-peer ...\n");
print("Executing $cmd ...\n");
system("$cmd");




清单 13. 将 root 用户添加到 LDAP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/perl
$rootuser = `/usr/sbin/lsuser –R files root`;
chomp($rootuser);

print("ROOTUSER = $rootuser\n");

$rootuser =~ s/^root //;
$rootuser =~ s/SYSTEM=LDAP or compat //;
$rootuser =~ s/SYSTEM=LDAP //;
$rootuser =~ s/SYSTEM=compat //;
$rootuser =~ s/SYSTEM=LDAP or compat//;
$rootuser =~ s/SYSTEM=LDAP//;
$rootuser =~ s/SYSTEM=compat//;
$rootuser =~ s/auth1=(\w+)/auth1=NONE/;
$rootuser =~ s/auth2=(\w+)/auth2=NONE/;
$rootuser =~ s/registry=(\w+)//;
$rootuser =~ s/(\w+)=(\s|$)//g;             # remove all empty attributes
$rootuser =~ s/(\w+)_login=([\w-]+)\s//g;   # remove all session status attributes

print("ROOTUSER = $rootuser\n");

$cmd = "/usr/bin/mkuser –R LDAP $rootuser root";
logger("Creating root: $cmd");
system("$cmd");




从 LDAP 中定期提取用户
为了保存一组最新的、基于文件的本地注册表,要预先安排从 LDAP 中提取以确保保存了一天中对 LDAP 进行的所有更改。使以下脚本成为 crontab 或另一个调度程序的一部分。选择最适合您的组织需求的频率。

强制启动文件注册表
为了确保启动进程永远运行,不管 LDAP 是否运行,都要告诉 AIX 总是在 registry=files 模式下启动。
为此,/etc/inittab 文件必须使用下列内容更新:
1
2
/usr/sbin/mkitab –I rctcpip
"usrmgt:23456789:wait:/opt/usrmgt/bin/setregfiles >/dev/console 2>&1"




其中,/opt/usrmgt/bin/setregfiles 如下所示:
1
2
3
4
#!/usr/bin/ksh
         
/usr/bin/chsec -f /etc/security/user -s default -a registry=files
/usr/bin/chsec -f /etc/security/group -s default -a registry=files




激活 RSCT 监控
设置中的最后一步是 RSCT 配置。该配置监控 LDAP 的可用性。如果 LDAP 无法访问,registry 参数将设置为 files。
第 3.1 章中指定了在 IBM.Sensor 中定义的基础监控程序 $MON/checkldap。该示例中的监控间隔时间设定为 10 秒。谓词 String==\"NOK\" 基本上是一个虚拟谓词。将该谓词包含在内,以便 IBM.Sensor 资源监控程序子系统能用实际的 LDAP 状态信息来填充字符串,这样可供响应脚本参考。该谓词不用于实际监控,这里使用的是 Int32 参数。
第 3.2 章列出了响应脚本 $MON/restartldapclient。
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl
$RSCT = "/usr/sbin/rsct/bin";
$MON = "/opt/usrmgt/mon";
$IV = "Name==\"CheckLDAP\"";
$PRED = "String==\"NOK\" || Int32>0";
system("$RSCT/mksensor -i 10 -e 0 CheckLDAP $MON/checkldap");
system("$RSCT/mkresponse -n 'SetLDAPEnvironment' -s '$MON/restartldapclient' -e b
RestartLDAPClient");
system("$RSCT/mkcondition -r IBM.Sensor -m l -S c -s '$IV' -e '$PRED' LDAP_PREP");
system("$RSCT/mkcondresp LDAP_PREP RestartLDAPClient");
system("$RSCT/startcondresp LDAP_PREP RestartLDAPClient");

返回列表