AIX修改组名的时候遇到3004-694

在AIX 5.3以前的版本中用户名最多可有8 个字符; 在AIX 5.3 中用户名最多可有255个字符。 若要使系统支持的用户名长度超过8个以上字符时, 需要在系统中修改 max_logname 参数,然后重新启动系统才会生效。

例如:
一次系统实施的时候,当mkgroup的时候遇到报错:
#mkgroup -A id=’550′ dbsidsadm
3004-694 Error adding “dbsidsadm”:Name is too long.
#lsattr -El sys0 -a max_logname
max_logname 8 Maximum login name length at boot time

默认和应用人员沟通后,去掉了一位,如果不去掉,可以这样解决:
#chdev -l sys0 -a max_logname=10
sys0 changed

# lsattr -El sys0 -a max_logname
max_logname 10 Maximum login name length at boot time True

# shutdown -Fr

注意:当用户名长度增加后,应避免再次缩短用户名长度。因为定义的那些超长用户名会在新的设置中失效,系统不能识别,就无法 login  到系统中

虽然可以设置更长的密码,但是AIX 5L只检查前8位密码,一直以来这都是AIX的一个限制。

  直到 AIX 5L V5.3 TL7 和 AIX V6.1,引入了 LPA( Loadable Password Algorithm ),消除了密码只有8位字符有效的限制,密码长度的最大值根据各种LPA算法的不同而不同,最大可以达到255位。

  在5307以上系统设置系统加密算法可以实现超过8位的密码长度:

  系统管理员可使用 chsec 命令来设置系统密码算法,或使用编辑器(例如 vi)来手动修改 /etc/security/login.cfg 文件中的 pwd_algorithm 属性。建议使用 chsec 命令来设置系统密码算法,因为 chsec 命令将自动检查指定 LPA 的定义。下面使用SMD5算法为例。

  1.使用 chsec 命令可将 smd5 LPA 设置为系统范围的密码加密模块,命令如下:

  #chsec -f /etc/security/login.cfg -s usw -a pwd_algorithm=smd5

   当使用 chsec 命令来修改 pwd_algorithm 属性时,chsec 命令将检查 /etc/security/pwdalg.cfg 文件以验证指定 LPA。如果该检查失败,那么 chsec 命令也将失败。

  2.也可以使用编辑器直接修改 /etc/security/login.cfg 文件,在此文件中添加 pwd_algorithm = smd5,确保所指定的LPA值是在 /etc/security/pwdalg.cfg 文件中定义的某个节的名称,此文件包含所有可支持的加密算法。

  定义加密算法完毕后,可以按常规修改密码长度。

发表在 AIX, 操作系统 | 标签为 | 2条评论

mklvcopy时候出现0516-404的问题

一次系统部署,少镜像了一条lv,不用默认的mirrorvg命令,尝试用mklvcopy时出现:
0516-404:allocap:This system cannot fulfill the allocation request.There are not enough free partitions or not enough physical volumes
to keep stricness and satisfy allocation requests.The command should be retried with different allocation characteristics.

经过查询AIX命令手册:通过mklvcopy -s n参数解决!

-s Strict 确定严格的分配策略。逻辑分区的副本可以分配为是否共享相同的物理卷。Strict 参数由以下之一表示:
y 设置一个严格的分配策略,这样逻辑分区的副本无法共享相同的物理卷。这是分配策略的缺省值。
n 没有设置一个严格的分配策略,这样逻辑分区的副本可以共享相同的物理卷。
s 设置一个超级严格的分配策略,这样为一个镜像分配的分区就无法与另一个镜像的分区共享相同的物理卷

MSIDSDB1:/#mklvcopy -s n lvopenv 2 hdisk1
MSIDSDB1:/#lsvg -l rootvg
rootvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
hd5 boot 1 2 2 closed/syncd N/A
hd6 paging 32 64 2 open/syncd N/A
hd8 jfs2log 1 2 2 open/syncd N/A
hd4 jfs2 10 20 2 open/syncd /
hd2 jfs2 24 48 2 open/syncd /usr
hd9var jfs2 20 40 2 open/syncd /var
hd3 jfs2 20 40 2 open/syncd /tmp
hd1 jfs2 20 40 2 open/syncd /home
hd10opt jfs2 8 16 2 open/syncd /opt
hd11admin jfs2 1 2 2 open/syncd /admin
lg_dumplv sysdump 10 20 2 open/syncd N/A
livedump jfs2 1 2 2 open/syncd /var/adm/ras/livedump
lvcmbc_admin jfs2 20 40 2 open/syncd /cmbc_admin
lvopenv jfs2 40 80 2 open/stale /usr/openv
MSIDSDB1:/#lsvg rootvg
VOLUME GROUP: rootvg VG IDENTIFIER: 00f92e9f00004c000000014b74f48ccb
VG STATE: active PP SIZE: 512 megabyte(s)
VG PERMISSION: read/write TOTAL PPs: 1116 (571392 megabytes)
MAX LVs: 256 FREE PPs: 700 (358400 megabytes)
LVs: 14 USED PPs: 416 (212992 megabytes)
OPEN LVs: 13 QUORUM: 1 (Disabled)
TOTAL PVs: 2 VG DESCRIPTORS: 3
STALE PVs: 1 STALE PPs: 40
ACTIVE PVs: 2 AUTO ON: yes
MAX PPs per VG: 32512
MAX PPs per PV: 1016 MAX PVs: 32
LTG size (Dynamic): 1024 kilobyte(s) AUTO SYNC: no
HOT SPARE: no BB POLICY: relocatable
PV RESTRICTION: none INFINITE RETRY: no
MSIDSDB1:/#lsvg rootvg
VOLUME GROUP: rootvg VG IDENTIFIER: 00f92e9f00004c000000014b74f48ccb
VG STATE: active PP SIZE: 512 megabyte(s)
VG PERMISSION: read/write TOTAL PPs: 1116 (571392 megabytes)
MAX LVs: 256 FREE PPs: 700 (358400 megabytes)
LVs: 14 USED PPs: 416 (212992 megabytes)
OPEN LVs: 13 QUORUM: 1 (Disabled)
TOTAL PVs: 2 VG DESCRIPTORS: 3
STALE PVs: 1 STALE PPs: 40
ACTIVE PVs: 2 AUTO ON: yes
MAX PPs per VG: 32512
MAX PPs per PV: 1016 MAX PVs: 32
LTG size (Dynamic): 1024 kilobyte(s) AUTO SYNC: no
HOT SPARE: no BB POLICY: relocatable
PV RESTRICTION: none INFINITE RETRY: no
MSIDSDB1:/#syncvg -v rootvg
MSIDSDB1:/#lsvg rootvg
VOLUME GROUP: rootvg VG IDENTIFIER: 00f92e9f00004c000000014b74f48ccb
VG STATE: active PP SIZE: 512 megabyte(s)
VG PERMISSION: read/write TOTAL PPs: 1116 (571392 megabytes)
MAX LVs: 256 FREE PPs: 700 (358400 megabytes)
LVs: 14 USED PPs: 416 (212992 megabytes)
OPEN LVs: 13 QUORUM: 1 (Disabled)
TOTAL PVs: 2 VG DESCRIPTORS: 3
STALE PVs: 0 STALE PPs: 0
ACTIVE PVs: 2 AUTO ON: yes
MAX PPs per VG: 32512
MAX PPs per PV: 1016 MAX PVs: 32
LTG size (Dynamic): 1024 kilobyte(s) AUTO SYNC: no
HOT SPARE: no BB POLICY: relocatable
PV RESTRICTION: none INFINITE RETRY: no
MSIDSDB1:/#lsvg -l rootvg
rootvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
hd5 boot 1 2 2 closed/syncd N/A
hd6 paging 32 64 2 open/syncd N/A
hd8 jfs2log 1 2 2 open/syncd N/A
hd4 jfs2 10 20 2 open/syncd /
hd2 jfs2 24 48 2 open/syncd /usr
hd9var jfs2 20 40 2 open/syncd /var
hd3 jfs2 20 40 2 open/syncd /tmp
hd1 jfs2 20 40 2 open/syncd /home
hd10opt jfs2 8 16 2 open/syncd /opt
hd11admin jfs2 1 2 2 open/syncd /admin
lg_dumplv sysdump 10 20 2 open/syncd N/A
livedump jfs2 1 2 2 open/syncd /var/adm/ras/livedump
lvcmbc_admin jfs2 20 40 2 open/syncd /cmbc_admin
lvopenv jfs2 40 80 2 open/syncd /usr/openv

发表在 AIX, 操作系统 | 标签为 | 留下评论

密码保护:etherchannel自动化脚本绑定网卡

这是一篇受密码保护的文章,您需要提供访问密码:

发表在 AIX, 操作系统 | 标签为 | 要查看留言请输入您的密码。

庆祝玉树林风WEB建站成立一周年

告别2014年,喜迎2015羊年。2014年是我最不容易的一年,经历的风风雨雨、坎坎坷坷各种考验不计其数,凭借自己一颗很强的钻研技术的心,不管什么问题都被我迎刃而解了,这个期间让我学会了理解与协作,责任与使命。做事要先学会做人,凡事都要遵循规律,循规蹈矩,循序渐进,痴痴不倦,脚踏实地,锲而不舍。必须要从自身做起,严格要求自己,不光工作上,而且生活上要保证作息规律,学习上要以严谨的态度对待,不要盲目骄傲,过高估计自己,尤其不能自负,虚心使人进步,骄傲使人落后。
不要忘记自己的过去,时刻提醒自己。要时常怀着感恩的心,记住帮助过自己的每一个人。2015年羊年到了,此刻我很高兴,因为从本站规划到建站成立已经整整一周年了,这个期间为了这个网站我付出了很多,把自己的工作遇到的解决的过程思路都记录在上,包括生活方面遇到的事。在此“羊羊”得意之年,望家人身体健康,万事如意,希望自己能够找到另一半。加油!
感觉3年过的很快,这个期间我成长了很多,经历很多世故和风云,俗话说真金不怕火炼,身边的榜样很多,比如我的舅舅,他让我看到了朋友是多麽的重要,望新的一年能够认识很多有识之士,事业再上一层楼。
我的目标是超越我的偶像,成为圈子里响当当的强力人士,为单位添光加瓦,蓬荜生辉,并以实际行动证明自己!
发表在 生活 | 留下评论

云平台初建之LDAP服务统一管理HMC账号

1.1   LDAP机制与原理

LDAP(轻量级目录访问协议,Light weight Directory Access Protocol)是实现提供被称为目录服务的信息服务。目录服务是一种特殊的数据库系统,其专门针对读取、浏览和搜索操作进行了特定的优化。目录一般用来包含描述性的,基于属性的信息并支持惊喜复杂的过滤能力。目录一般不支持通用数据库针对大量更新操作操作需要的复杂的失误管理或回卷策略。而目录服务的更新则Ibanez都非常简单。这种目录可以存储包括个人信息、web链结、jpeg图像等各种信息。为了访问存储在目录中的信息,就需要使用运行在TCP/IP之上的访问协议-LDAP。
LDAP的信息是以树型结构存储的,在树根一般定位的简称有:
o-organization:组织-公司
OU(Organizational Unit):组织单元-部门
c-countryName:国家
DC(Domain Component):域名
SN(suer name):真实名称
CN(Common Name):常用名称
HMC(Hardware Management Console):是独立于Power服务器的外置系统,将Power服务器的HMC接口和HMC服务器接入同一个网络,那么可以使用HMC系统对Power服务器进行管理,在Power服务器上创建分区(LPAR)也需要用到HMC系统。

LDAP 在读取、浏览、搜索目录和专门存储有序信息的数据库等方面进行了优化。许多计算环境的目标是使得来自任何位置(如工作站、公共工作站和 Web)的用户都能够使用各种网络资源。可以使用 LDAP Server 进行用户管理,以实现这一目标。
图5-1 LDAP机制

ldap-8

图5-2 LDAP原理

ldap-9.JPG

LDAP 客户端向 LDAP 服务器发送一个查询,以便从集中式的数据库中获取这个用户和组的信息。DB2® 是用于存储用户和组信息的数据库。LDAP 数据库以具有层次结构的条目为基础,存储和检索信息,其中每个条目都具有区别于其他条目的名称、类型和属性。属性用于为条目定义可接受的取值。LDAP 数据库能够为许多用户存储和维护他们的条目。

1.2   LDAP特性

  • 低维护费用
  • 易配置
  • 易管理
  • 提供了满足不同应用程序对目录服务所需求的特性。

1.3   目录设计

设计目录结构是LDAP最重要的方面之一。下面我将通过一个简单的例子来说明如何设计合理的目录结构。该例子将通过Netscape地址薄来访问。假设有一个位于美国US(c=US)而且跨越多个州的名为Acme(o=Acme)的公司。Acme希望为所有的雇员实现一个小型的地址薄服务器。

我们从一个简单的组织DN开始:

dn:o=Acme,c=US

Acme所有的组织分类和属性将存储在该DN之下,这个DN在该存储在该服务器的目录是唯一的。Acme希望将其雇员的信息分为两类:管理者(ou=Managers)和普通雇员(ou=Employees),这种分类产生的相对区别名(RDN,relative distingguished names。便是相对于顶点DN)就是:

dn:ou=Managers,o=Acme,c=us

dn:ou=Employees,o=Acme,c=US

在下面我们将会看到分层结构的组成:顶点是US的Acme,下面是管理者组织单元和雇员组织单元。因此包括Managers和Employees的DN组成为:

dn:cn=Jason H.Smith,ou=Managers,o=Acme,c=US

dn:cn=Ray D.Jones,ou=Employees,o=Acme,c=US

dn:cn=Eric S.Woods,ou=Employees,o=Acme,c=us

为了引用Jason H.Smith的通用名(common name)条目,LDAP将采用cn=Jason H.Smith的RDN。然后将前面的父条目结合在一起就形成如下的树型结构:

cn=Jason H.Smith

+ou=Managers

+o=Acme

+c=US

->dn:cn=Jason H.Smith,ou=Managers,o=Acmes,c=US

现在已经定义好了目录结构,下一步就需要导入目录信息数据。目录信息数据将被存放在LDIF文件中,其实导入目录信息数据的默认存放文件。用户可以方便的编写Perl脚本来从例如/etc/passwd、NIS等系统文件中自动创建LDIF文件。

下面的实例保存目录信息数据为testdate.ldif文件,该文件的格式说明将可以在man ldif中得到。

在添加任何组织单元以前,必须首先定义Acme DN:

dn:o=Acme,c=US

objectClass:organization

这里o属性是必须的

o:Acme

下面是管理组单元的DN,在添加任何管理者信息以前,必须先定义该条目。

dn:ou=Managers,o=Acme,c=US

objectClass:organizationalUnit

这里ou属性是必须的。

ou:Managers

第一个管理者DN:

dn:cn=Jason H.Smith,ou=Managers,o=Acme,c=US

objectClass:inetOrgPerson

cn和sn都是必须的属性

cn:Jason H.Smith

sn:Smith

但是还可以定义一些可选的属性

TelephoneNumber:111-222-9999

mail:headhauncho@acme.com

localityName:Houston

可以定义另外一个组织单元:

Dn:ou=Employees,o=Acme,c=US

objectClass:organizationalUnit

ou:Employees

并添加雇员信息如下:

Dn:cn=Ray D.Jones,ou=Employees,o=Acmes,c=US

objectClass:inetOrgPerson

cn:Ray D.Jones

sn:Jones

telephoneNumber:444-555-6767

mail:jonesrd@ame.com

localityName:Houston

dn:cn=Eric S.Woods,ou=Employees,o=Acme,c=US

objectClasss:inetOrgPerson

cn:Eric S.Woods

sn:Woods

telephoneNumber:444-555-6768

mail:woodses@acme.com

localityName:Houston

1.4   系统所需软件

1.4.1  软件准备

  • 操作系统:红帽企业版 linux AS6  即:linux6.4
  • LDAP服务软件:openldap-servers、openldap-clients、openldap、openldap-devel一共4个包

1.4.2  硬件准备

  • 服务器:一台HMC X3550服务器,一台装有RedHat6.4系统的虚拟机或者服务器

1.4.3  网络规划

  • 每个服务器的IP地址和主机名(确保server跟client可以互相ping通访问)
用途 Ip地址 主机名
ldap server 192.168.222.140 ldapserver
ldap client 192.168.222.200 HMC

1.5   LDAP配置

1.5.1  LDAP软件安装

首先建立光盘挂载目录/disk,然后挂载本地光盘 mount /dev/cdrom /disk。

然后配置本地光盘yum源,cd进入/etc/yum.repos.d/目录中,mv rhel-debuginfo.repo rhel-debuginfo.repo.bak,建立自己的redhat.repo,如下:

[redhat]

baseurl=file:///disk

gpgcheck=0

建立好后,通过yum install openldap* 安装LDAP服务必备包即可。

1.5.2  主机信息配置

以下是RedHat6.4 LDAP服务器的/etc/hosts文件:

127.0.0.1               localhost.localdomain localhost

::1             localhost6.localdomain6 localhost6

192.168.222.140        ldapserver

192.168.222.200        HMC

备注:此IP根据自己实际情况填写

以下是HMC7.4.0 LDAP客户端的/etc/hosts文件:

ccfw@hmc:~>su – root

口令:

hmc:~cat /etc/hosts

127.0.0.1 localhost.lcoaldomain localhost

192.168.222.200 hmc.hmcdomain hmc

1.5.3  修改主机名和主机信息

1、最好用setup配置网络,防止出现特殊字符,如有特殊字符可能会出现网卡不识别的样子,如dev num命名的网卡,此时重启再观察。也可以修改/etc/sysconfig/network-script/ifcfg-eth0文件:

#cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

HWADDR=00:0c:29:7c:9a:72

TYPE=Ethernet

UUID=6a0adcb4-ec51-43d1-9cf2-5e8dfe52eb63

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

IPADDR=192.168.222.140

NETMASK=255.255.255.0

GATEWAY=192.168.222.1

IPV6INIT=no

USERCTL=no

2、修改/etc/sysconfig/network

NETWORKING=yes

HOSTNAME=ldapserver

GATEWAY=192.168.222.1

1.5.4  LDAP服务端配置

RedHat6.3环境下:

LDAP server:192.168.222.140

LDAP clent: 192.168.222.200

准备工作:

配置前先关闭iptables和SELINUX,避免配置过程中报错。

# service iptables stop

不重启关闭selinux的解决办法:

执行命令:setenforce 0

在新版本中的Red Hat 和 Fedora 上,修改档案/etc/sysconfig/selinux:

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing – SELinux security policy is enforced.

# permissive – SELinux prints warnings instead of enforcing.

# disabled – SELinux is fully disabled.

SELINUX=enforcing

# SELINUXTYPE= type of policy in use. Possible values are:

# targeted – Only targeted network daemons are protected.

# strict – Full SELinux protection.

SELINUXTYPE=targeted

把 SELINUX设定为disable, 下次启动系统后将会停止SElinux。

Linux核心参数(Kernel Parameter)

或者可以在核心参数后加上: selinux=0 (停止) 或 selinux=1 (开启)参数

档案/boot/grub/grub.conf

title Red Hat Enterprise Linux (2.6.32-358.el6.x86_64)

root (hd0,0)

kernel /vmlinuz-2.6.32-358.el6 ro root=LABEL=/ rhgb quiet selinux=0

initrd /initrd-2.6.32-358.3l6.img

检查SELinux现时况态

要知到你现在是否使用 SELinux:

# getenforce

disabled

1.LDAP server端配置:

安装LDAP服务(使用YUM本地光盘安装)

# yum install openldap-* -y

提示安装以下4个包

openldap-devel-2.4.23-26.el6.x86_64

openldap-clients-2.4.23-26.el6.x86_64

openldap-2.4.23-26.el6.x86_64

openldap-servers-2.4.23-26.el6.x86_64

拷贝LDAP配置文件到LDAP目录(redhat6.3):

# cd /etc/openldap/

# cp /usr/share/openldap-servers/slapd.conf.obsolete slapd.conf

redhat6.0或6.1版本配置文件在主目录有备份:

# cd /etc/openldap/

# cp slapd.conf.bak slapd.conf

创建LDAP管理员密码:

# slappasswd

这里我输入的密码是redhat,输入完密码后,返回一串密文,先保存到剪贴板

{SSHA}pfAJm+JJa4ec2y8GjTc8uMEJpoR5YKLy(我的密码是123456)

也可以生成MD5的秘钥

[root@ldapserver 桌面]# slappasswd -h {MD5}

New password:

Re-enter new password:

{MD5}4QrcOUm6Wau+VuBX8g+IPg==

编译配置文件

# vi /etc/openldap/nf

找到115行,默认如图:

ldap-1

修改为:

ldap-2

高亮部分为刚才生成的密码(加密后的)。

配置文件最后几行的权限部分我们也要做相应的更改:

原内容:

ldap-3

更改为:

ldap-4

保存退出。

拷贝DB_CONFIG文件到指定目录

# cp /usr/share/openldap-servers/DB_CONFIG.example  /var/lib/ldap/DB_CONFIG

删除默认/etc/openldap/slapd.d下面的所有内容,否则后面在使用ldapadd的时候会报错:

# rm -rf /etc/openldap/slapd.d/*

启动LDAP的slapd服务,并设置自启动:

# service slapd restart

# chkconfig slapd on

赋予配置目录相应权限:

# chown -R ldap:ldap /var/lib/ldap

# chown -R ldap:ldap /etc/openldap/

测试并生成配置文件:

slaptest  -f /etc/openldap/nf -F /etc/openldap/slapd.d

返回config file testing succeeded,则配置成功。

赋予生成的配置文件予权限并重启:

# chown -R ldap:ldap /etc/openldap/slapd.d

# service slapd restart

创建一个账号,以备客户端测试登陆

# useradd ldapuser1

# passwd ldapuser1

至此,这些用户仅仅是系统上存在的用户(存储在/etc/passwd和/etc/shadow上),并没有在LDAP数据库里,所以要把这些用户导入到LDAP里面去。但LDAP只能识别特定格式的文件 即后缀为ldif的文件(也是文本文件),所以不能直接使用/etc/passwd和/etc/shadow。 需要migrationtools这个工具把这两个文件转变成LDAP能识别的文件。

安装配置migrationtools

# yum install migrationtools -y

进入migrationtool配置目录

# cd /usr/share/migrationtools/

首先编辑migrate_common.ph

# vi  migrate_common.ph

找到如下内容(大概在70行):

ldap-5

修改为:

ldap-6

下面利用pl脚本将/etc/passwd 和/etc/shadow生成LDAP能读懂的文件格式,保存在/tmp/下。

注意:默认生成的/etc/passwd和/etc/shadow和/etc/group里包含了所有用户组的账户信息,而我们只需要ldapuser1的账户信息,下面我们需要调整3个ldif文件,去掉不相关的信息:

# ./migrate_base.pl > /tmp/base.ldif

这是创建根项,并为 Hosts、Networks、Group 和 People 等创建第一级的组织单元(OU)

编辑 base.ldif,删除除下面之外的所有条目:

dn: dc=my-domain,dc=com

dc: my-domain

objectClass: top

objectClass: domain

dn: u=People,dc=my-domain,dc=com

ou: People

objectClass: top

objectClass: organizationalUnit

dn: u=Group,dc=my-domain,dc=com

ou: Group

objectClass: top

objectClass: organizationalUnit

执行:

grep ldapuser /etc/group > /tmp/group.ldapuser.in

./migrate_group.pl /tmp/group.ldapuser.in > /tmp/group.ldapuser.ldif

导出ldapuser组的信息,以同样方式到处其他组的信息

执行:

grep ldapuser /etc/passwd > /tmp/passwd.ldapuser.in

./migrate_passwd.pl /tmp/passwd.ldapuser.in > /tmp/passwd.ldapuser.ldif

可以复制passwd文件为passwd.in后将passwd.in中系统自带的用户删除后作为脚本的输入参数,这样可以一次转换所有用户。不建议将系统自带用户导入ldap,这样做的好处是万一在ldap认证出现问题的情况下不至于连root账户也不能登录。

下面就要把这三个文件导入到LDAP,这样LDAP的数据库里就有了我们想要的用户

# ldapadd -x -D “cn=admin,dc=example,dc=com” -W -f /tmp/base.ldif

Enter LDAP Password:

adding new entry “dc=example,dc=com”

adding new entry “ou=People,dc=example,dc=com”

adding new entry “ou=Group,dc=example,dc=com”

# ldapadd -x -D “cn=admin,dc=example,dc=com” -W -f /tmp/passwd.ldapuser.ldif

Enter LDAP Password:

adding new entry “uid=ldapuser1,ou=People,dc=example,dc=com”

# ldapadd -x -D “cn=admin,dc=example,dc=com” -W -f /tmp/group.ldif

Enter LDAP Password:

adding new entry “cn=ldapuser1,ou=Group,dc=example,dc=com”

过程若无报错,则LDAP服务端配置完毕

tcpdump跟踪客户端登录IP访问信息:

[root@ldapserver tmp]# tcpdump host 192.168.222.200

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

08:39:32.705444 IP 192.168.222.200.50590 > 192.168.222.140.ldap: Flags [S], seq 2110679166, win 5840, options [mss 1460,sackOK,TS val 3126465 ecr 0,nop,wscale 2], length 0

08:39:32.706228 ARP, Request who-has 192.168.222.200 tell 192.168.222.140, length 28

08:39:32.706504 ARP, Reply 192.168.222.200 is-at 00:0c:29:6a:a5:d2 (oui Unknown), length 46

08:39:32.706535 IP 192.168.222.140.ldap > 192.168.222.200.50590: Flags [S.], seq 3995253765, ack 2110679167, win 14480, options [mss 1460,sackOK,TS val 18760238 ecr 3126465,nop,wscale 6], length 0

08:39:32.706857 IP 192.168.222.200.50590 > 192.168.222.140.ldap: Flags [.], ack 1, win 1460, options [nop,nop,TS val 3126466 ecr 18760238], length 0

08:39:32.707030 IP 192.168.222.200.50590 > 192.168.222.140.ldap: Flags [P.], seq 1:15, ack 1, win 1460, options [nop,nop,TS val 3126466 ecr 18760238], length 14

08:39:32.707037 IP 192.168.222.140.ldap > 192.168.222.200.50590: Flags [.], ack 15, win 227, options [nop,nop,TS val 18760240 ecr 3126466], length 0

08:39:32.707671 IP 192.168.222.140.ldap > 192.168.222.200.50590: Flags [P.], seq 1:15, ack 15, win 227, options [nop,nop,TS val 18760240 ecr 3126466], length 14

08:39:32.708052 IP 192.168.222.200.50590 > 192.168.222.140.ldap: Flags [.], ack 15, win 1460, options [nop,nop,TS val 3126466 ecr 18760240], length 0

08:39:32.708489 IP 192.168.222.200.50590 > 192.168.222.140.ldap: Flags [P.], seq 15:99, ack 15, win 1460, options [nop,nop,TS val 3126466 ecr 18760240], length 84

08:39:32.709995 IP 192.168.222.140.ldap > 192.168.222.200.50590: Flags [P.], seq 15:491, ack 99, win 227, options [nop,nop,TS val 18760243 ecr 3126466], length 476

08:39:32.710170 IP 192.168.222.140.ldap > 192.168.222.200.50590: Flags [P.], seq 491:505, ack 99, win 227, options [nop,nop,TS val 18760243 ecr 3126466], length 14

08:39:32.711249 IP 192.168.222.200.50590 > 192.168.222.140.ldap: Flags [P.], seq 99:194, ack 505, win 1728, options [nop,nop,TS val 3126467 ecr 18760243], length 95

08:39:32.716206 IP 192.168.222.140.ldap > 192.168.222.200.50590: Flags [P.], seq 505:519, ack 194, win 227, options [nop,nop,TS val 18760249 ecr 3126467], length 14

08:39:32.716589 IP 192.168.222.200.50590 > 192.168.222.140.ldap: Flags [P.], seq 194:208, ack 519, win 1728, options [nop,nop,TS val 3126468 ecr 18760249], length 14

08:39:32.716769 IP 192.168.222.140.ldap > 192.168.222.200.50590: Flags [P.], seq 519:533, ack 208, win 227, options [nop,nop,TS val 18760249 ecr 3126468], length 14

08:39:32.717481 IP 192.168.222.200.50590 > 192.168.222.140.ldap: Flags [P.], seq 208:215, ack 533, win 1728, options [nop,nop,TS val 3126468 ecr 18760249], length 7

08:39:32.717533 IP 192.168.222.200.50590 > 192.168.222.140.ldap: Flags [F.], seq 215, ack 533, win 1728, options [nop,nop,TS val 3126468 ecr 18760249], length 0

08:39:32.717697 IP 192.168.222.140.ldap > 192.168.222.200.50590: Flags [F.], seq 533, ack 216, win 227, options [nop,nop,TS val 18760250 ecr 3126468], length 0

08:39:32.717907 IP 192.168.222.200.50590 > 192.168.222.140.ldap: Flags [.], ack 534, win 1728, options [nop,nop,TS val 3126468 ecr 18760250], length 0

现在检查以LDIF格式填充的OpenLDAP数据库,已经添加到数据库中的信息,此时运行:

[root@ldapserver 桌面]# ldapsearch -x -b “dc=example,dc=com”

# extended LDIF

#

# LDAPv3

# base <dc=example,dc=com> with scope subtree

# filter: (objectclass=*)

# requesting: ALL

#

# example.com

dn: dc=example,dc=com

dc: example

objectClass: top

objectClass: domain

# People, example.com

dn: ou=People,dc=example,dc=com

ou: People

objectClass: top

objectClass: organizationalUnit

# Group, example.com

dn: ou=Group,dc=example,dc=com

ou: Group

objectClass: top

objectClass: organizationalUnit

# ldapuser1, Group, example.com

dn: cn=ldapuser1,ou=Group,dc=example,dc=com

objectClass: posixGroup

objectClass: top

cn: ldapuser1

userPassword:: e2NyeXB0fXg=

gidNumber: 501

# ldapuser1, People, example.com

dn: uid=ldapuser1,ou=People,dc=example,dc=com

uid: ldapuser1

cn: ldapuser1

objectClass: account

objectClass: posixAccount

objectClass: top

objectClass: shadowAccount

userPassword:: e2NyeXB0fSQ2JHd4YXRpdlU1JG40OUlLMjlkTHlXWTBrZkhTZ0NWL1BIOVRDbEt

NQVlZSUhsTXRzZWV3cWNXVWdzQlBiQmN5SXpzQkJCRmtlbi9JaDZmUS5aaHFlcFJPRGJKR1FrRkou

shadowLastChange: 16460

shadowMin: 0

shadowMax: 99999

shadowWarning: 7

loginShell: /bin/bash

uidNumber: 501

gidNumber: 501

homeDirectory: /home/ldapuser1

# search result

search: 2

result: 0 Success

# numResponses: 6

# numEntries: 5

这里应该显示如上信息,证明dn创建完毕,可以被客户端搜索到。

重启slapd完成配置

# service slapd restart

2.LDAP 客户端配置

打开客户端图形化界面命令行

输入system-config-authentication,按照如图配置:

ldap-7

 

1.5.5  为LDAP server加入ldap log记录

[root@chasfer/etc]# man slapd.conf          //查看slapd.conf帮助,了解loglevel参数

  loglevel <integer> […]

              Specify  the  level  at which debugging statements and operation

              statistics  should  be  syslogged  (currently  logged   to   the

              syslogd(8)   LOG_LOCAL4  facility).   They  must  be  considered

              subsystems rather than increasingly verbose  log  levels.   Some

              messages  with  higher  priority  are  logged  regardless of the

              configured loglevel as soon as any logging is  configured.   Log

              levels are additive, and available levels are:

                      1      (0x1 trace) trace function calls

                      2      (0x2 packets) debug packet handling

                      4      (0x4 args) heavy trace debugging (function args)

                      8      (0x8 conns) connection management

                      16     (0x10 BER) print out packets sent and received

                      32     (0x20 filter) search filter processing

                      64     (0x40 config) configuration file processing

                      128    (0x80 ACL) access control list processing

                      256    (0x100   stats)   connections,  LDAP  operations,

                             results (recommended)

                      512    (0x200 stats2) stats log entries sent

                      1024   (0x400  shell)  print  communication  with  shell

                             backends

                      2048   (0x800 parse) entry parsing

                      16384  (0x4000 sync) LDAPSync replication

                      32768  (0x8000  none)  only  messages  that  get  logged

                             whatever log level is set

              The desired log level can be input  as  a  single  integer  that

              combines  the  (ORed)  desired  levels,  both  in  decimal or in

              hexadecimal notation, as a  list  of  integers  (that  are  ORed

              internally),  or  as  a list of the names that are shown between

              brackets, such that

loglevel 129

                  loglevel 0x81

                  loglevel 128 1

                  loglevel 0x80 0x1

                  loglevel acl trace

              are equivalent.  The keyword any can be used as  a  shortcut  to

              enable  logging  at  all levels (equivalent to -1).  The keyword

              none, or the equivalent  integer  representation,  causes  those

              messages  that  are logged regardless of the configured loglevel

              to be logged.  In fact, if loglevel is  set  to  0,  no  logging

              occurs,  so  at  least  the  none level is required to have high

              priority messages logged.

              The loglevel defaults to stats.  This level should usually  also

              be  included  when  using  other  loglevels, to help analyze the

              logs.

Loglevel行设置的是日志选项。可以将其设置为这样的级别:调试语句和操作统计信息都会被记录到/var/log/slapd.log中。日志级别是可以累加的:296=256日志链接/操作/结果+32搜索过滤器处理+8连接管理:

下面列举所有loglevel的说明:

-1 记录所有的信息

0  不记录debug

1跟踪功能调用的信息

2 包处理的debug信息

4丰富的debug信息

8连接管理信息

16包的收发信息

32搜索过滤的处理过程

64配置文件的处理过程

128访问控制列表的处理过程

256连接、操作及其结果的统计数据

512向客户端返回的结果的统计信息

1024与shell后端的通信信息

2048显示记录条目的分析信息

4096数据库缓存处理信息

8192数据库索引

16384从服务器数据同步资源消耗处理信息

若要记录所有的debug日志,可以使用LOG_LEVEL4 syslogd系统日志来记录,这需要在slapd.conf中添加如下语句实现:

local4.debug /var/log/slapd.log

以下是我的配置:

 [root@chasfer /etc]# cat /etc/openldap/slapd.conf  //加入loglevel,并赋值

loglevel 2096

[root@chasfer /etc]# cat /etc/rsyslog.conf          //rsyslog中加入ldap日志文件

# save OpenLDAP log

local4.*                                            /var/log/ldap.log

[root@chasfer /etc]# service rsyslog restart                 //重启rsyslog服务

此时,日志文件/var/log/ldap.log即会保存Openldap的日志信息.

1.5.6  LDAP Client HMC配置

首先我们需要清除ldapuser1用户的filter功能,有如下重要的三步需要操作和验证:

3) Open a SSH session and login with hscroot, clear the search filter, type

chhmcldap -o r -r searchfilter

清除ldapuser1的filter功能。

下面是对这个命令参数的说明:

To remove an LDAP resource or the LDAP configuration from the HMC:

chhmcldap -o r -r {backup | ldap | binddn | bindpw | searchfilter}

OPTIONS

-o The operation to perform. Valid values are s to set an HMC LDAP configuration attribute, and r to

remove an LDAP resource or the LDAP configuration from the HMC.

-r The LDAP resource to remove. Valid values are backup to remove the backup LDAP server, ldap

to unconfigure LDAP on the HMC, binddn to remove the bind Distinguished Name (DN),

bindpw to remove the bind password, and searchfilter to remove the LDAP search filter.

This option is required for a remove operation. This option is not valid for a set operation.

4) Set the search scope level (depends on if you want to search subtree or not)

chhmcldap -o s –scope sub|one

选择是搜寻子树还是只搜寻根树。

5) Type following to validate the configuration, e.g.

ldapsearch -x -D “<bind DN>” -W -H <LDAP server>

注意:这里的ldapsearch结果应该与server端查出来的一致。

HMC管理控制台下,输入LDAP client用户账户ldapuser1/ldapuser1,登录后状态如图5-2

ldap-10

图5-2

以server端ldapuser1用户登录HMC控制台后,验证登录情况,ldapuser1账户比默认的hscroot在管理里少了一些功能,对比5-2,如图5-3:

ldap-11

图5-3

登录成功后,查看openldap中的slapd服务记录的客户端登录成功的信息,这里我们用户属性采用的cn或者uid都可以成功登录:

Jan 31 20:35:47 ldapserver slapd[15055]: conn=1006 fd=16 ACCEPT from IP=192.168.222.200:38275 (IP=0.0.0.0:389)

Jan 31 20:35:47 ldapserver slapd[15055]: conn=1006 op=0 BIND dn=”” method=128

Jan 31 20:35:47 ldapserver slapd[15055]: conn=1006 op=0 RESULT tag=97 err=0 text=

Jan 31 20:35:47 ldapserver slapd[15055]: conn=1006 op=1 SRCH base=”uid=ldapuser1,ou=People,dc=example,dc=com” scope=2 deref=0 filter=”(cn=ldapuser1)”

Jan 31 20:35:47 ldapserver slapd[15055]: conn=1006 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=

Jan 31 20:35:47 ldapserver slapd[15055]: conn=1006 op=2 BIND dn=”uid=ldapuser1,ou=People,dc=example,dc=com” method=128

Jan 31 20:35:47 ldapserver slapd[15055]: slap_global_control: unrecognized control: 1.3.6.1.4.1.42.2.27.8.5.1

Jan 31 20:35:47 ldapserver slapd[15055]: conn=1006 op=2 BIND dn=”uid=ldapuser1,ou=People,dc=example,dc=com” mech=SIMPLE ssf=0

Jan 31 20:35:47 ldapserver slapd[15055]: conn=1006 op=2 RESULT tag=97 err=0 text=

Jan 31 20:35:47 ldapserver slapd[15055]: conn=1006 op=3 BIND anonymous mech=implicit ssf=0

Jan 31 20:35:47 ldapserver slapd[15055]: conn=1006 op=3 BIND dn=”” method=128

Jan 31 20:35:47 ldapserver slapd[15055]: conn=1006 op=3 RESULT tag=97 err=0 text=

Jan 31 20:35:47 ldapserver slapd[15055]: conn=1006 op=4 UNBIND

Jan 31 20:35:47 ldapserver slapd[15055]: conn=1006 fd=16 closed

注意,用户失败的登录,这里我们采用了ou用户属性进行filter查找过滤:

Jan 31 20:30:20 ldapserver slapd[15055]: conn=1005 fd=16 ACCEPT from IP=192.168.222.200:58368 (IP=0.0.0.0:389)

Jan 31 20:30:20 ldapserver slapd[15055]: conn=1005 op=0 BIND dn=”” method=128

Jan 31 20:30:20 ldapserver slapd[15055]: conn=1005 op=0 RESULT tag=97 err=0 text=

Jan 31 20:30:20 ldapserver slapd[15055]: conn=1005 op=1 SRCH base=”uid=ldapuser1,ou=People,dc=example,dc=com” scope=2 deref=0 filter=”(ou=ldapuser1)”

Jan 31 20:30:20 ldapserver slapd[15055]: conn=1005 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text=

Jan 31 20:30:20 ldapserver slapd[15055]: conn=1005 op=2 UNBIND

Jan 31 20:30:20 ldapserver slapd[15055]: conn=1005 fd=16 closed

1.6   附录

1.6.1  LDAP服务端配置日志记录

 

ldap

1.6.1  执行ldapadd 命令时报错ldap_bind: Invalid credentials (49)

引用

ldap_bind: Invalid credentials (49)

这是由于/etc/openldap/slapd.d 目录中使用的数据与执行导入命令时设置的DN 路径不符。

解决办法是,修改ldapadd 中-D 参数后面指定的DN值,或使用slapd.conf 配置模板生成新的配置数据。方法可见上面5.5.4

1.6.2  删除叶节点

# ldapdelete -x -D “cn=admin,dc=example,dc=com” -Wr “dc=example,dc=com”

Enter LDAP Password:

注意:这里recursive递归删除参数位置。

1.6.3  删除非叶节点

# ldapdelete -x -D “cn=admin,dc=example,dc=com” -W “dc=example,dc=com”

Enter LDAP Password:

ldap_delete: Operation not allowed on non-leaf (66)

additional info: subordinate objects must be deleted first

这里我们需要这样操作:

# ldapdelete -x -D “cn=admin,dc=example,dc=com” -w 123456 “cn=ldapuser1,ou=Group,dc=example,dc=com”

再用ldapsearch查找:

# ldapsearch -x -b “dc=example,dc=com”

# extended LDIF

#

# LDAPv3

# base <dc=example,dc=com> with scope subtree

# filter: (objectclass=*)

# requesting: ALL

#

# example.com

dn: dc=example,dc=com

dc: example

objectClass: top

objectClass: domain

# People, example.com

dn: ou=People,dc=example,dc=com

ou: People

objectClass: top

objectClass: organizationalUnit

# Group, example.com

dn: ou=Group,dc=example,dc=com

ou: Group

objectClass: top

objectClass: organizationalUnit

# ldapuser1, People, example.com

dn: uid=ldapuser1,ou=People,dc=example,dc=com

uid: ldapuser1

cn: ldapuser1

objectClass: account

objectClass: posixAccount

objectClass: top

objectClass: shadowAccount

userPassword:: e2NyeXB0fSQ2JHd4YXRpdlU1JG40OUlLMjlkTHlXWTBrZkhTZ0NWL1BIOVRDbEt

NQVlZSUhsTXRzZWV3cWNXVWdzQlBiQmN5SXpzQkJCRmtlbi9JaDZmUS5aaHFlcFJPRGJKR1FrRkou

shadowLastChange: 16460

shadowMin: 0

shadowMax: 99999

shadowWarning: 7

loginShell: /bin/bash

uidNumber: 501

gidNumber: 501

homeDirectory: /home/ldapuser1

# search result

search: 2

result: 0 Success

# numResponses: 5

# numEntries: 4

对照之前的ldapsearch结果,我们发现删除了非叶子节点:

# ldapuser1, Group, example.com

dn: cn=ldapuser1,ou=Group,dc=example,dc=com

objectClass: posixGroup

objectClass: top

cn: ldapuser1

userPassword:: e2NyeXB0fXg=

gidNumber: 501

1.6.4  LDAP常用命令说明

1、删除命令ldapdelete

# ldapdelete -x -D ‘cn=root,dc=it,dc=com’ -W ‘uid=qq1,dc=it,dc=com’

2、重新索引ldap数据库命令slapindex

# slapindex -f slapd.conf

3、设置使用者密码

-x 进行简单认证

-D 用来绑定服务器的DN

-w 绑定DN的密码

-S 提示的输入密码

-s pass 把密码设置为pass

-a pass 设置old passwd为pass

-A 提示的设置old passwd

-H 是指要绑定的服务器

-I 使用sasl会话方式

# ldappasswd -x -D “cn=root,dc=it,dc=com” -W “uid=qq1,dc=it,dc=com” -S

New password:

Re-enter new password:

Enter bind password:

Result: Success (0)

## “Enter bind password” 是 “cn=root,dc=it,dc=com”管理员的密码

4、管理员密码更改

# slappasswd

New password

Re-enter new password

{SSHA}83DJ4KVwqlk1uh9k2uDb8+NT1U4RgkEs

接下再拷贝到 path/to/sldap.conf 的 rootpw 即可,重启使用配置文件生效

5、修改目录内容

-a 添加新的条目.缺省的是修改存在的条目.

-C 自动追踪引用.

-c 出错后继续执行程序并不中止.缺省情况下出错的立即停止.比如如果你的ldif 文

件内的某个条目在数据库内并不存在,缺省情况下程序立即退出,但如果使用了该参数,程

序忽略该错误继续执行.

-n 用于调试到服务器的通讯.但并不实际执行搜索.服务器关闭时,返回错误;服务器

打开时,常和-v 参数一起测试到服务器是否是一条通路.

-v 运行在详细模块.在标准输出中打出一些比较详细的信息.比如:连接到服务器的

ip 地址和端口号等.

-M[M] 打开manage DSA IT 控制. -MM 把该控制设置为重要的.

-f file 从文件内读取条目的修改信息而不是从标准输入读取.

-x 使用简单认证.

-D binddn 指定搜索的用户名(一般为一dn 值).

-W 指定了该参数,系统将弹出一提示入用户的密码.它和-w 参数相对使用.

-w bindpasswd 直接指定用户的密码. 它和-W 参数相对使用.

-H ldapuri 指定连接到服务器uri(ip 地址和端口号,常见格式为

ldap://hostname:port).如果使用了-H 就不能使用-h 和-p 参数.

-h ldaphost 指定要连接的主机的名称/ip 地址.它和-p 一起使用.

-p ldapport 指定要连接目录服务器的端口号.它和-h 一起使用.

如果使用了-h 和-p 参数就不能使用-H 参数.

-Z[Z] 使用StartTLS 扩展操作.如果使用-ZZ,命令强制使用StartTLS 握手成功.

-V 启用证书认证功能,目录服务器使用客户端证书进行身份验证,必须与-ZZ 强制启用

TLS 方式配合使用,并且匿名绑定到目录服务器.

-e 设置客户端证书文件,例: -e cert/client.crt

-E 设置客户端证书私钥文件,例: -E cert/client.key

# ldapmodify -x -D “cn=root,dc=it,dc=com” -W -f modify.ldif

通过ldif文件修改ldap数据,ldif文件格式如下:

dn: cn=qq,dc=it,dc=com

changetype: modify

replace: mail

mail:modme@example.com

add: title

title: Grand Poobah

add: jpegPhoto

jpegPhoto:<file:///tmp/modme.jpeg

delete: description

6、增加条目ldapadd

我们也可用slapadd命令来导入数据。该命令可以导入包含一些系统信息的ldif文件,如:

slapd

4 使用IPv4标准

6 使用IPv6标准

-d debug模式 一般用 -1,1,256

-f 指定配置文件的路径

-h 可以指定启动服务的端口 ldap://:2004 用2004端口启动服务

slurpd

-d debug模式 一般用4

-f 指定配置文件

-r 指定复制

ldapadd

-x 进行简单认证

-D 用来绑定服务器的DN

-h 目录服务的地址

-w 绑定DN的密码

-f 使用ldif文件进行条目添加的文件

例子 ldapadd -x -D “cn=root,dc=starxing,dc=com” -w secret -f /root/test.ldif

ldapadd -x -D “cn=root,dc=starxing,dc=com” -w secret (这样写就是在命令行添加条目)

7、查找条目ldapsearch

ldapsearch

-x 进行简单认证

-D 用来绑定服务器的DN

-w 绑定DN的密码

-b 指定要查询的根节点

-H 制定要查询的服务器

ldapsearch -x -D “cn=root,dc=starxing,dc=com” -w secret -b “dc=starxing,dc=com”

使用简单认证,用 “cn=root,dc=starxing,dc=com” 进行绑定,

要查询的根是 “dc=starxing,dc=com”。这样会把绑定的用户能访问”dc=starxing,dc=com”下的

所有数据显示出来。

8、启用sasl验证

前提是你在系统中安装了sasl认证库,并在编译openldap时支持它,默认就支持的。到http://asg.web.cmu.edu/cyrus下载。

# saslpasswd2 -c test

接着配置slapd.conf文件,加入以下内容。

sasl-regexp

uid=(.*),cn=.*,cn=auth

uid=$1,dc=it,dc=com

重启服务器使配置文件生效。这个配置是最大权限的配置,如果要细化请查阅相关文档。用以下命令测试

# ldapsearch -U qq-b ‘uid=qq,dc=it,dc=com’ -D ‘dc=it,dc=com’ -Y DIGEST-MD5

采用digest-md5验证,提示密码,输入saslpasswd2的密码。

9、配置服务器复制

在一些关键的应用场合,我们需设置多个ldap服务器实例,且数据要保持同步。当一台服务器出现故障或被黑客攻击时,我们就能继续保持应用的正常运行。通过DNS的轮流查询功能,还能实现服务器的负载均衡,提高响应速度。在openldap中有一个slurpd进程,利用slurpd进程可帮助我们实现多台ldap服务器数据的同步功能。下面简单介绍一下主、从ldap服务器的配置。

slurpd运行在主服务器上,它能把主服务器上的变化通过LDAP协议传送到从服务器上。从服务器上的变化不能传送到主服务器上,也就是说是单向同步的。主从服务器的版本最好一样,以减少兼容性问题。主从服务器的安装方法是一样的,关键是配置文件有所不同。我的操作系统是debian sarge,在确保主从服务器能正常运行的前提下进行以下配置:

首先,把主从服务器关闭。通过以下三步操作静态同步主从服务器上的数据:

把主服务器上/var/lib/ldap目录下的所有数据库文件全部拷贝到从服务器的同目录中,覆盖原有文件。

把主服务器上的/etc/ldap/schema目录下的所有schema文件拷贝到从服务器的同目录中,覆盖原有文件。

把主服务器上/etc/ldap/slapd.conf文件拷贝到从服务器的同目录中,覆盖原有文件。

配置主服务器上的slapd.conf文件,取消replogfile指令前的注释符号,取消后的结果如下:

# Where to store the replica logs for database #1

replogfile/var/lib/ldap/replog

增加replica指令,如:

#replace config

replica uri=ldap://192.168.6.195:389#指定从服务器主机名和端口号

binddn=”cn=admin,dc=com”#指定需同步的DN的管理员

bindmethod=simple credentials=1#指定验证方式和需同步的DN的管理员密码

配置从服务器上的slapd.conf文件,增加updatedn指令,如:

updatedn “cn=admin,dc=com”#与主服务器的binddn对应

在从服务器的配置文件中,不要包含replica和replogfile指令。

先启动主服务器的slapd和slurpd,再启动从服务器的slapd。

10、重建索引

重新索引ldap数据库命令slapindex

# slapindex -f slapd.conf

11、数据导出

导出数据更常用的是slapcat命令,该命令的格式如下:

slapcat 选项

最常用的选项就是-l,表示导出为LDIF文件格式。

如将本章前面例子中创建的目录数据库导出为export.ldif文件,可使用以下命令:

# slapcat -l export.ldif

执行以上命令将在当前工作目录得到文件export.ldif,打开文件可看到以下所示内容:

dn: dc=wyh,dc=com

objectClass: top

objectClass: dcObject

objectClass: organization

dc: wyh

o: wyh,Inc.

structuralObjectClass: organization

entryUUID: 5213bf36-4851-102e-8dc0-856b03ac5474

creatorsName: cn=Manager,dc=wyh,dc=com

createTimestamp: 20091008122451Z

entryCSN: 20091008122451Z#000000#00#000000

modifiersName: cn=Manager,dc=wyh,dc=com

modifyTimestamp: 20091008122451Z

dn: ou=managers,dc=wyh,dc=com

ou: managers

objectClass: organizationalUnit

structuralObjectClass: organizationalUnit

entryUUID: 52148fc4-4851-102e-8dc1-856b03ac5474

creatorsName: cn=Manager,dc=wyh,dc=com

createTimestamp: 20091008122451Z

entryCSN: 20091008122451Z#000001#00#000000

modifiersName: cn=Manager,dc=wyh,dc=com

modifyTimestamp: 20091008122451Z

dn: cn=wyh,ou=managers,dc=wyh,dc=com

cn: wyh

sn: wuyunhui

objectClass: person

structuralObjectClass: person

structuralObjectClass: person

entryUUID: 5215a92c-4851-102e-8dc2-856b03ac5474

creatorsName: cn=Manager,dc=wyh,dc=com

createTimestamp: 20091008122451Z

entryCSN: 20091008122451Z#000002#00#000000

modifiersName: cn=Manager,dc=wyh,dc=com

modifyTimestamp: 20091008122451Z

提示:从导出结果可看出,除了使用ldapadd命令添加到目录数据库中的条目数据外,还导出了很多其他信息,包括条目录UUID、时间戳等信息。

发表在 AIX, LINUX, 操作系统 | 标签为 | 2条评论

密码保护:三年工作经历记录-让心灵去旅行大胆飞翔扬帆起航-新的里程碑

这是一篇受密码保护的文章,您需要提供访问密码:

发表在 关于我 | 要查看留言请输入您的密码。

密码保护:RHCS互备双实例实施

这是一篇受密码保护的文章,您需要提供访问密码:

发表在 LINUX, 操作系统 | 标签为 | 要查看留言请输入您的密码。

linux 客户端NTP配置时间同步

1 NTP同步前检查
是否已经安装了NTP包可以用这条命令来确定:
[root@gzqd1 ~]# rpm -qa | grep ntp
ntp-4.2.2p1-9.el5_4.1
出现以上代码则表示已安装NTP包,否则用下面方法安装:
# rpm -ivh ntp-4.2.2p1-5.el5.rpm

在打开NTP服务器之前先和这些服务器做一个同步,使得我们机器的时间尽量接近标准时间。用ntpdate命令手动更新时间:
# ntpdate 10.10.110.240
22 Dec16:21:49 ntpdate[4528]: step time server 213.222.193.35 offset -38908.575181 sec
# ntpdate 10.10.110.249
22 Dec 16:21:56 ntpdate[4530]: adjust time server 213.222.193.35 offset -0.000065 sec

2 NTP客户端配置与服务端的同步
1、 使用vi编辑器配置客户端
1) 使用 vi /etc/ntp.conf 打开名为ntp.conf的文件,或者vi /etc/xntp.conf,视查看到的文件名而定;
2) 使用上下左右光标移动键,到配置文件的后面几行,会看到如下类似显示: server 127.0.0.1 local clock fudge 127.0.0.1 stratum 10
3) 敲击a键进入vi编辑方式:键入NTP服务器的IP地址,注销掉原来的配置,新添加如下两行成如下显示:
#server 127.0.0.1 local clock fudge 127.0.0.1 stratum 10
server 10.10.110.240 fudge 10.10.110.240 stratum 0
server 10.10.110.249 fudge 10.10.110.249 stratum 0
fudge用户为这个时钟设置级别,对待内部系统时钟比较理想的情况是将时间源作为级别10来对待。外部时间源为0优先于本地,stratum是指定本地时间源的层号,数字越大,优先级越低。所以当有外部时间源时会优先使用外部时间源。
4) 敲击Esc键回到vi命令方式,敲击 :wq ,保存修改并结束vi 编辑;
2、 启动服务:使用servive ntpd restart 命令启动NTP客户端服务;
3、 查看服务启动情况:service ntpd status ;
4、设置NTP服务开机自启动
  #chkconfig ntpd on
5、 查看时间:使用ntpq -p命令查看当前时间,当前时间应该与NTP服务器时间同步;
# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*10.10.110.240 202.118.1.46 2 u 3 64 377 97.701 10.500 27.195
*10.10.110.249 202.118.1.46 2 u 3 64 377 97.701 10.500 27.195

这里delay和reach值如果为0,表明未正常同步
当出现*时候,响应的NTP服务器和最精确的服务器,说明同步已经成功。

发表在 LINUX, 操作系统 | 标签为 | 2条评论

软raid配置与管理维护

1. 格式化待做软RAID的分区:

准备两个待做RAID1的分区/dev/sdc1, /dev/sdd1:

要求: 大小近乎相等,格式为Linux raid autodetect (即:fd);

注意实施的时候,我并没有注意改为fd,但是软raid依然生效,linux只当分区类型为一个标示,并非必须。但是官方建议。

# fdisk /dev/hdc

The number of cylinders for this disk is set to 9964.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
p
First cylinder (1012-9964, default 1012):
Using default value 1012
Last cylinder or +size or +sizeM or +sizeK (1012-1039, default 1012): 1025
Command (m for help): p
Disk /dev/hdc: 20.0 GB, 20060135424 bytes
16 heads, 63 sectors/track, 38869 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System
/dev/hdc1 1 38869 19589944+ fd Linux raid

Command (m for help): t (更改分区类型) //转为 fd 时,不用编辑 mdadm.conf 也能自动加载 md0磁盘阵列。
Selected partition: 1
Hex code (type L to list codes): fd (分区类型为 Linux raid autodetect)
Command (m for help): w (保存退出)

#fdisk -l /dev/sdc

Disk /dev/hdc: 20.0 GB, 20060135424 bytes
16 heads, 63 sectors/track, 38869 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System
/dev/sdc1 1 38869 19589944+ fd Linux raid autodetect

同样创建另一分区 /dev/sdd

创建RAID 1:

#mdadm -C –verbose /dev/md0 –level=1 –raid-devices=2 /dev/hdc1 /dev/hdd1
–level:创建磁盘阵列的raid 的等级
–raid-devices:磁盘的个数

#mdadm -D /dev/md0 (查看raid信息)

/dev/md0:
Version : 00.90.01
Creation Time : Mon Dec 17 08:43:57 2007
Raid Level : raid1
Array Size : 19589824 (18.68 GiB 20.06 GB)
Used Dev Size : 19589824 (18.68 GiB 20.06 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Mon Dec 17 09:26:08 2007
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

UUID : dade41ff:9df3d1b7:ba30ec8a:696dd689
Events : 0.3170

Number Major Minor RaidDevice State
0 22 1 0 active sync /dev/hdc1
1 22 65 1 active sync /dev/hdd1

#cat /proc/mdstat

Personalities : [raid1]
md0 : active raid1 hdd1[1] hdc1[0]
19589824 blocks [2/2] [UU]
2. 添加/etc/mdadm.conf 配置文件:
echo DEVICE /dev/sd[bcd]1 > /etc/mdadm.conf
mdadm -Ds >> /etc/mdadm.conf

#cat /etc/mdadm.conf
DEVICE /dev/hdc1 /dev/hdd1
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=dade41ff:9df3d1b7:ba30ec8a:696dd689 devices=/dev/hdc1,/dev/hdd1

通过mdadm -D命令,我们可以查看RAID的版本、创建的时间、RAID级别、阵列容量、可用空间、设备数量、超级块、更新时间、各个设备的状态、RAID算法以及块大小等信息。

mdmonitor 能监控有坏盘时自动发 有邮件给 用户:
service mdmonitor start
chkconfig mdmonitor on

#mkfs.ext3 /dev/md0

3.常用阵列维护命令
3.1启动阵列
# mdadm -As /dev/md0

该命令指启动/dev/md0阵列,其中“-A”指装载一个已存在的阵列;“-s”指查找mdadm.conf文件中的配置信息,并以此为依据启动阵列。
#mdadm -As

该命令指启动mdadm.conf文件中的所有阵列。

#mdadm -A /dev/md0 /dev/sd[b,c,d,e]1
如果没有创建mdadm.conf文件则可以采用上面这种启动方式。

3.2停止阵列
# mdadm -S /dev/md0

3.3显示指定阵列的详细信息
# mdadm -D /dev/md0

3.4 如果你没有配置/etc/mdadm.conf文件,而且又忘了某磁盘属于那个阵列,则你可以使用检测:(-examine)
mdadm -E /dev/sdb1
获得UUID后,也可以这样激活阵列:
mdadm -Av /dev/md0 -uuid=8ba81579:e20fb0e8:e040da0e:f0b3fec8 /dev/sd*
可以看到,只要磁盘没有损坏,这样装配是非常方便的:

3.5删除阵列
mdadm -S /dev/md0 //停止 md0 阵列

rm /dev/md0
修改/etc/mdadm.conf、/etc/fstab等配置文件,把相关的地方去掉;
最后,用fdisk对磁盘进行重新分区即可。

4、 监控RAID
mdadm的监控模式提供一些实用的功能,可以使用下列命令来监控/dev/md0,delay参数意味着检测的时间间隔,这样紧急事件和严重的错误会

及时发送给系统管理员:
# mdadm –monitor –mail=eric4ever@localhost –delay=300 /dev/md0

当使用监控模式时,mdadm不会退出,可以使用下列命令:
# nohup mdadm –monitor –mail=eric4ever@localhost –delay=300 /dev/md0 &

5、降级raid的重建:
对于正在运行的raid,可以用add命令给其新增一块盘,如下:
mdadm –manage –add /dev/md0 /dev/sdd1
再cat /proc/mdstat,就可以看到raid重建的进度了

对于已经停止的raid,可以用
mdadm -A –force /dev/md0 /dev/sdb1 /dev/sdc1
先将降级的raid强制激活,
然后再运行
mdadm –manage –add /dev/md0 /dev/sdd1

6、现场结果图
softraid-1

softraid-2

发表在 LINUX, 操作系统 | 留下评论

udev配置fesco单路径统一命名

RedHat5.7操作系统需查询/block目录下的磁盘才可以查询到磁盘的UUID,并且只能查询到物理磁盘的UUID,不能查询到磁盘分区的UUID信息:

[root@gzqd2 ~]# scsi_id -g -s /block/sda
360060e801005c0b0052fb8bb00000001
[root@gzqd2 ~]# scsi_id -g -s /block/sda1
[root@gzqd2 ~]# scsi_id -g -s /block/sda2
[root@gzqd2 ~]# scsi_id -g -s /block/sdb
360060e801005c0b0052fb8bb00000002
[root@gzqd2 ~]# scsi_id -g -s /block/sdb1
[root@gzqd2 ~]# scsi_id -g -s /block/sdb2
[root@gzqd2 ~]# scsi_id -g -s /block/sdc
360060e801005c0b0052fb8bb00000003
[root@gzqd2 ~]# scsi_id -g -s /block/sdc1
[root@gzqd2 ~]# scsi_id -g -s /block/sdc2
[root@gzqd2 ~]# scsi_id -g -s /block/sdd
360060e801005c0b0052fb8bb00000004
[root@gzqd2 ~]# scsi_id -g -s /block/sdd1
[root@gzqd2 ~]# scsi_id -g -s /block/sdd2
虽然只能查询到磁盘的UUID而不能查询到磁盘分区的UUID,但是UDEV也可以正确绑定磁盘,本案例有4块10TB的磁盘,每个磁盘分了5个2TB的分区:

[root@gzqd2 ~]# ll /dev/sd*
brw-r—– 1 root disk 8, 0 Jun 26 07:33 /dev/sda
brw-rw—- 1 root root 8, 1 Jun 26 07:33 /dev/sda1
brw-rw—- 1 root root 8, 2 Jun 26 07:33 /dev/sda2
brw-rw—- 1 root root 8, 3 Jun 26 07:33 /dev/sda3
brw-rw—- 1 root root 8, 4 Jun 26 07:33 /dev/sda4
brw-rw—- 1 root root 8, 5 Jun 26 07:33 /dev/sda5
brw-r—– 1 root disk 8, 16 Jun 26 07:33 /dev/sdb
brw-rw—- 1 root root 8, 17 Jun 26 07:33 /dev/sdb1
brw-rw—- 1 root root 8, 18 Jun 26 07:33 /dev/sdb2
brw-rw—- 1 root root 8, 19 Jun 26 07:33 /dev/sdb3
brw-rw—- 1 root root 8, 20 Jun 26 07:33 /dev/sdb4
brw-rw—- 1 root root 8, 21 Jun 26 07:33 /dev/sdb5
brw-r—– 1 root disk 8, 32 Jun 26 07:33 /dev/sdc
brw-rw—- 1 root root 8, 33 Jun 26 07:33 /dev/sdc1
brw-rw—- 1 root root 8, 34 Jun 26 07:33 /dev/sdc2
brw-rw—- 1 root root 8, 35 Jun 26 07:33 /dev/sdc3
brw-rw—- 1 root root 8, 36 Jun 26 07:33 /dev/sdc4
brw-rw—- 1 root root 8, 37 Jun 26 07:33 /dev/sdc5
如果想使用UDEV在RedHat5.7操作系统上绑定磁盘,配置文件的写法也和RedHat5.5有所不同,以下是RedHat5.7操作系统UDEV绑定磁盘的配置文件的写法,现场实际:

[root@gzqd2 ~]# cat /etc/udev/rules.d/90-map.rules
KERNEL==”sd?1″, BUS==”scsi”, PROGRAM==”/sbin/scsi_id -g -u -s /block/$parent”, RESULT==”360060e801005c0b0052fb8bb00000001″, NAME=”fescoqdii1″, OWNER=”oracle”, GROUP=”oinstall”, MODE=”0660″

KERNEL==”sd?2″, BUS==”scsi”, PROGRAM==”/sbin/scsi_id -g -u -s /block/$parent”, RESULT==”360060e801005c0b0052fb8bb00000001″, NAME=”fescoguzhi1″, OWNER=”oracle”, GROUP=”oinstall”, MODE=”0660″

KERNEL==”sd? “, BUS==”scsi”, PROGRAM==”/sbin/scsi_id -g -u -s /block/$parent”, RESULT==”360060e801005c0b0052fb8bb00000001″, NAME=” fescoqdii”, OWNER=”oracle”, GROUP=”oinstall”, MODE=”0660″

KERNEL==”sd? “, BUS==”scsi”, PROGRAM==”/sbin/scsi_id -g -u -s /block/$parent”, RESULT==”360060e801005c0b0052fb8bb00000001″, NAME=” fescoguzhi “, OWNER=”oracle”, GROUP=”oinstall”, MODE=”0660″
重启UDEV使之生效。

[root@gzqd2 ~]# start_udev
Starting udev: [ OK ]
重新启动UDEV后,即可看到UDEV绑定的磁盘信息。

[root@gzqd1 ~]# ll /dev/asm*
brw-rw—- 1 grid dba 8, 1 Jun 29 16:14 /dev/fescoqdii1
brw-rw—- 1 grid dba 8, 1 Jun 29 16:14 /dev/fescoguzhi1
brw-rw—- 1 grid dba 8, 21 Jun 29 16:14 /dev/fescoguzhi
brw-rw—- 1 grid dba 8, 1 Jun 29 16:14 /dev/fescoqdii

注:这次配置环境中,由于飞康设备是单控制器的,不存在多路径问题,而且linux重启对应的飞康盘号固定,所以不用udev统一命名。

udev

发表在 LINUX, 操作系统 | 标签为 | 留下评论