LDAP 中使用 Shadow Account 条目可以有效的设置用户登录的过期时间,过期以后还有多少可以登陆,每隔多少天强制更换密码,提前多少天开始提示密码即将过期。
下面记录一下属性列表,方便以后查阅
- shadowLastChange: 密码从1970年1月1日开始, 到最近一次修改, 一共间隔了多少天. 比如这里指定成16967就表示2016年6月15日. 也可以直接获取当天的日期,方法为:在系统里 useradd 一个用户,查看
/etc/shadow
中该用户的第三个值, 即是该值. 该值如果设置成0, 则表示下次登陆将强制修改密码, 用户修改密码成功以后, 该值将发生对应的变化
- shadowMin: 密码从
shadowLastChange
指定的日期开始, 到多少天以后才能再次修改密码, 防止某些人天天没事就修改密码, 此值设置成0表示不限制
- shadowMax: 密码从
shadowLastChange
指定的日期开始, 到多少天以后过期(即多少天后必须更改密码)
- shadowInactive: 密码过期以后还可以登陆多少天(每次登陆都会要求更改密码), 如果超过此值指定的天数, 下次登陆时会提示
Your account has expired; please contact your system administrator
- shadowWarning: 提前多少天开始警告用户密码将会过期
- shadowExpire: 密码从1970年1月1日开始, 多少天以后将会过期, 这里一般用不到
- shadowFlag: 暂时无用
一般属性的参考值
- shadowLastChange: 0
- shadowMin: 0
- shadowMax: 90 #每隔90天强制更换密码
- shadowInactive: 7 #过期以后还有7天可以登陆,每次登陆都会提示修改密码
- shadowWarning: 8 #提前8天开始提示密码即将过期
Laravel 使用 LDAP,设置 objectclass shadowAccount 条目,下面举例向 LDAP Server 中添加一个新成员
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
$user = Adldap::make()->user(
[
'mail' => $data['email'],
'uid' => $data['uid'],
'cn' => $data['uid'],
'sn' => $data['uid'],
'userpassword' => $data['password'],
]
);
$user->setAttribute('objectclass',
[
'shadowAccount',
'inetOrgPerson'
]
);
$user->setDn('uid=' . $data['uid'] . ',' . $user->getDnBuilder()->get());
|
给某个成员设置账号失效时间
1
2
3
|
$user = Adldap::search()->where('mail', 'xxx@xx.com')->first();
$user->shadowExpire = 100;
$user->save();
|