之前在impala集成kerberos时,遇到了时间相关的问题,当时没有做充分的测试,对某些理解有些问题(http://caiguangguang.blog.51cto.com/1652935/1381323),今天正好做了下测试,总结如下:
1.klist中expires以及renew until是由client端的/etc/krb5.conf配置文件中的参数决定(在没有超过max的情况)。
1
2
3
4
5
6
<code>server端对应的配置为:</code>
<code>ticket_lifetime = 1h</code>
<code>renew_lifetime = 1d</code>
<code>client端对应的配置为:</code>
<code>ticket_lifetime = 4h</code>
<code>renew_lifetime = 5d</code>
2.server端kdc.conf的配置起到限制client的作用。在client的设置超过max的设置时,按max取值
比如server端设置
7
8
9
<code>max_life = 25h</code>
<code>max_renewable_life = 71d</code>
<code>client端设置</code>
<code>ticket_lifetime = 40h</code>
<code>renew_lifetime = 200d</code>
<code>klist的结果为server配置的值:</code>
<code>Valid starting Expires Service principal</code>
<code>03</code><code>/25/14</code> <code>11:55:41 03</code><code>/26/14</code> <code>12:55:41 krbtgt</code><code>/KERBEROS_HADOOP</code><code>@KERBEROS_HADOOP</code>
<code> </code><code>renew </code><code>until</code> <code>06</code><code>/03/14</code> <code>11:55:41</code>
3.kdc.conf配置的更改对新建的principal会立即生效,旧的不会生效,如果需要对旧的principal生效,需要modprinc
比如:
<code>modprinc -maxlife 32days -maxrenewlife 32days +allow_renewable krbtgt</code><code>/REALM</code>
4.理解ticket_lifetime和renew_lifetime
超过renew_lifetime时间之后,不能kinit -R,kinit -R不会改变tgt cache的renew until时间,如果想要改变tgt cache的renew until时间
可以使用kinit -r xx来renew tgt,最大时间由max_renewable_life限制。
10
11
12
13
14
15
16
17
18
19
20
21
<code>ticket_lifetime = 40w</code>
<code>renew_lifetime = 200w</code>
<code>klist</code>
<code>03</code><code>/25/14</code> <code>12:04:25 03</code><code>/25/14</code> <code>12:05:05 krbtgt</code><code>/KERBEROS_HADOOP</code><code>@KERBEROS_HADOOP</code>
<code> </code><code>renew </code><code>until</code> <code>03</code><code>/25/14</code> <code>12:07:45</code>
<code> </code><code>date</code>
<code>Tue Mar 25 12:05:38 CST 2014</code>
<code> </code><code>#超过了expires的时间,但是没有超过renew until的时间</code>
<code>kinit -R</code>
<code> </code><code>#可以renew,renew until的时间不会变</code>
<code>03</code><code>/25/14</code> <code>12:05:46 03</code><code>/25/14</code> <code>12:06:26 krbtgt</code><code>/KERBEROS_HADOOP</code><code>@KERBEROS_HADOOP</code>
<code>date</code>
<code> </code><code>#超过renew until的时间</code>
<code>Tue Mar 25 12:08:04 CST 2014</code>
<code> </code><code>#不能renew</code>
<code>kinit(v5): Ticket expired </code><code>while</code> <code>renewing credentials</code>
5.w不代表week的意思,是s的意思(和不带单位一样)
6.如果renew_lifetime 的时间小于ticket_lifetime的时间,则renew until和Expires 时间相同,运行kinit -R不会生效,但是可以运行kinit -r xx
<code>ticket_lifetime = 60</code>
<code>renew_lifetime = 10</code>
<code>03</code><code>/25/14</code> <code>12:25:38 03</code><code>/25/14</code> <code>12:26:38 krbtgt</code><code>/KERBEROS_HADOOP</code><code>@KERBEROS_HADOOP</code>
<code> </code><code>renew </code><code>until</code> <code>03</code><code>/25/14</code> <code>12:26:38</code>
<code>date</code> <code>&& kinit -R ;klist</code>
<code>Tue Mar 25 12:27:29 CST 2014</code>
<code>03</code><code>/25/14</code> <code>12:27:29 03</code><code>/25/14</code> <code>12:27:46 krbtgt</code><code>/KERBEROS_HADOOP</code><code>@KERBEROS_HADOOP</code>
<code> </code><code>renew </code><code>until</code> <code>03</code><code>/25/14</code> <code>12:27:46</code>
<code>date</code><code>&&kinit -k -t hdfs.keytab hdfs</code><code>/xxxxx</code><code>@KERBEROS_HADOOP -r 10d;klist</code>
<code>Tue Mar 25 12:36:49 CST 2014</code>
<code>03</code><code>/25/14</code> <code>12:36:49 03</code><code>/25/14</code> <code>12:37:49 krbtgt</code><code>/KERBEROS_HADOOP</code><code>@KERBEROS_HADOOP</code>
<code> </code><code>renew </code><code>until</code> <code>04</code><code>/04/14</code> <code>12:36:49</code>
<code> </code><code>#renew life time变化了</code>
7.renew_lifetime的优先级高于max_renewable_life,如果renew_lifetime<=max_renewable_life,
则取renew_lifetime,renew_lifetime>=max_renewable_life时,也是取renew_lifetime的值
<code>renew_lifetime = 120</code>
<code>max_renewable_life = 10</code>
<code>03</code><code>/25/14</code> <code>12:42:20 03</code><code>/25/14</code> <code>12:43:20 krbtgt</code><code>/KERBEROS_HADOOP</code><code>@KERBEROS_HADOOP</code>
<code> </code><code>renew </code><code>until</code> <code>03</code><code>/25/14</code> <code>12:44:20</code>
<code></code>
本文转自菜菜光 51CTO博客,原文链接:http://blog.51cto.com/caiguangguang/1383723,如需转载请自行联系原作者