1 kadmin
kadmin是 Kerberos V5数据库管理程序
用法:
kadmin [-O|-N] [-r realm] [-p principal] [-q query] [[-c cache_name]|[-k [-t keytab]]|-n] [-w password] [-s admin_server[:port]] [command args...]
kadmin.local [-r realm] [-p principal] [-q query] [-d dbname] [-e enc:salt ...] [-m] [-x db_args] [command args...]
描述:
kadmin和kadmin.local都是Kerberos V5管理系统的命令行接口。两者基本上提供完全相同的功能,唯一的区别是kadmin.local直接访问KDB数据库,而kadmin使用kadmind(8)来执行操作。这个文档中将使用kadmin来指代两者。kadmin维护Kerberos的账号(principals),密码策略以及service key tables(keytabs)。
远程kamin客户端通过用服务账号kadmin/ADMINHOST或者kadmin/admin使用Kerberos认证kadmind。(其中的ADMINHOST是admin服务的完整主机名)。如果认证缓存(credentials cache)包含任意一个这些账号的ticket,并且指定了-c credentials_cache选项,则这个ticket用于认证kadmind。否则,用-p以及-k选项指定客户端用于认证的Kerberos的账号名。一旦kadmin检查到账号名,它从KDC请求服务ticket,并用这个服务ticket去向kadmind认证。
因为kadmin.local直接访问KDC数据库,因此它必须直接运行在主KDC上,并有足够的权限来读取KDC的数据库。如果KDC数据库使用LDAP数据库模块,kadmin.local可以运行在任何可以访问LDAP服务器的机器上。
选项:
-r realm 使用realm作为默认的数据库realm
-p principal 使用principal来认证。否则,kadmin将追加/admin到默认cache的主账号名后面,或者追加到USER环境变量的值后面,或者通过getpwuid获取的用户名。
-k 使用一个keytab解密KDC响应信息,而不是提示需要密码。这种情况下,默认的账号是host/hostname。如果没有用-t选项指定keytab,那么使用默认的keytab
-t keytab 使用keytab来解密KDC的响应,这个只能跟-k选项一块使用
-d dbname 指定KDC数据库的名字,这个选项不会用到LDAP数据库模块中
-q query 执行指定的查询然后退出
-s amin_server[:port] 指定kadmin访问的admin服务器
-m 如果使用kadmin.local,提示需要数据库密码,而不是直接从一个存储文件中读取
2 kadmind
KADM5管理服务器
符号:
kadmind [-x db_args] [-r realm] [-m] [-nofork] [-proponly] [-port port-number] [-P pid_file] [-p kdb5_util_path] [-K kprop_path] [-k kprop_port] [-F dump_file]
描述:
kadmind启动Kerberos管理服务器。kadmind通常运行在存着KDC数据库的主Kerberos服务器上。如果KDC数据库使用LDAP模块,管理服务以及KDC服务就没必要运行在同一台机器上。kadmind接受从例如kadmin和kpasswd发出的远程请求,来管理这些数据库中的信息。
kadmin需要一些配置文件来支持其运行:
kdc.conf
KDC配置文件包含KDC和admin服务的配置信息。kadmind使用这个文件中的设置来定位Kerberos数据库以及其他信息。
kadm5.acl
kadmind的访问控制列表文件告诉kadmind哪个账户允许执行管理动作。到ACL文件的路径可以在acl_file变量(在kdc.conf文件中)中指定。默认情况下是 /var/kerberos/krb5kdc/kadm5.acl
在server开始运行之后,将其放到后台运行,并断开其控制终端。
选项
-r realm 指定kadmind将服务的realm。如果没有指定,使用主机默认的realm。
-port port-number 指定管理服务监听连接的端口。默认是由(kdc.conf文件中的)kadmind_port指定的。
3 kinit
获取并缓存Kerberos TGT(ticket-granting ticket)
用法:
kinit [-V] [-l lifetime] [-s start_time] [-r renewable_life] [-p | -P] [-f | -F] [-a] [-A] [-C] [-E] [-v] [-R] [-k [-t keytab_file]] [-c cache_name] [-n] [-S service_name] [-I input_ccache] [-T armor_ccache] [-X attribute[=value]] [principal]
描述:
kinit给principal 获取并缓存一个初始化的TGT。如果principal没有填,kinit会选择一个合适的基于已经存在的认证缓存内容或者调用kinit的用户的本地用户名来作为principal名字。部分选项修改选择的principal名字。
选项:
-l lifetime 持续时间字符串 用lifetime作为生命周期来请求tickets
例如,kinit -l 5:30 或者 kinit -l 5h30m。如果没有指定-l选项,使用的是默认的ticket生命周期(由每个站点配置的)。指定一个超过每个站点配置的最大的ticket生命周期将不会覆盖已经配置的最大的ticket生命周期。
-s start_time 持续时间字符串 请求一个延后生效的ticket。 延后生效的ticket带有无效标志,需要在使用之前重复提交到KDC来验证有效性。start_time指定了ticket变有效的延后的时间。
-r renewable_life 持续时间字符串 请求一个可延长有效期的tickets,其中的renewable_life指定了总的生命周期。
-a 请求限制到主机的本地地址的tickets
-A 请求不限制地址的tickets
-v 请求将缓存中的TGT传递到KDC以验证其有效性。如果ticket是在请求的时间范围内,将缓存替换为已经验证过的ticket
-R 请求TGT的续约。注意一个已经过期的ticket不能续约,即使这个已经过期的ticket仍然在其可续约的生命周期内。
注意已经被klist认为是过期的可续约tickets,有时候可用这个选项进行续约,因为KDC应用宽限期来解决客户端KDC时钟误差。参考krb5.conf(5) clockskew设置。
-k [-i|-t keytab_file] 请求一个从在本地主机的keytab中获取的ticket。keytab的位置可以用-t keytab_file选项指定或者用-i 选项指定使用默认的client keytab;否则使用默认的keytab。默认情况下,请求的是本地主机的ticket,但是可以指定任意的principal。在一个KDC中,特殊的keytab位置KDB用于指示kinit应该打开KDC数据库并直接查找密钥。 这允许管理员以支持基于密钥的身份验证的任何principal的身份来获取ticket。
-n 请求匿名式的处理。支持两类匿名的账号:
-T armor_ccache 指定一个已经包含一个ticket的认证cache的名字。如果KDC支持,则此缓存将用于处理请求,防止脱机字典攻击并允许使用其他预身份验证机制。 装甲还确保在传输过程中来自KDC的响应不会被修改。
-I input_ccache 指定一个已经包含一个ticket的认证cache的名字。在获取该票证时,如果还将有关如何获取该票证的信息也存储到cache中,则该信息将用于影响如何获取新凭证,包括预选择对KDC进行身份验证的相同方法。
-c cache_name 使用cache_name作为Kerberos 5 认证材料(ticket)的缓存位置。如果没有用这个选项,那么使用默认的位置。
默认的cache位置跟系统而变化。如果设置了KRB5CCNAME环境变量,则用这个值来定位默认cache的位置。如果指定了principal名称,并且默认缓存的类型支持一个集合(例如DIR类型),则将选择一个包含该principal的凭据的现有cache,或者创建一个新的缓存并变成新的主缓存。 否则,kinit会破坏默认高速缓存的任何现有内容。
-S service_name 指定一个当获取初始化的tickets时使用的可选的服务名
-X attribute[=value]
-s start_time
-r renewable_file
-f 请求可转发的tickets
-F 请求不可转发的tickets
-p 请求可代理的tickets
4 klist
列出缓存的Kerberos tickets
用法:
klist [-e] [[-c] [-l] [-A] [-f] [-s] [-a [-n]]] [-C] [-k [-t] [-K]] [-V] [cache_name|keytab_name]
描述:
-e 展示在认证cache中的每个认证(或keytab文件中的每个key)的session key和ticket的加密类型
-l 如果cache集合可用,则展示一个描述存在集合中的cache的表
-A 如果cache集合可用,则展示集合中的所有的cache的内容
-c 列出存在认证cache中的tickets。如果没有指定-c或者-k选项,这个是默认行为。
-f 展示认证中的标志,使用如下的缩写:
F Forwardable
f forwarded
P Proxiable
p proxy
D postDateable
d postdated
R Renewable
I Initial
i invalid
H Hardware authenticated
A preAuthenticated
T Transit policy checked
O Okay as delegate
a anonymous
-s 让klist静默运行,如果认证cache不可读或者已经过期则1退出;否则0退出
-a 展示认证中的所有的地址列表
-n 展示数字地址而不是反向解析地址
-C 当klist遇到配置数据的时候,列出已经被存在认证cache中的配置数据。默认情况下,配置数据不列出来。
-k 列出keytab文件中的keys
-i 和-k一起使用,如果没有指定名字,默认是使用默认的client keytab,而不是默认的acceptor keytab。
-t 展示keytab文件中的每个keytab入口中的时间戳
-K 展示keytab文件中的每个keytab入口中的加密key的值
-V 展示Kerberos版本并退出
如果cache_name 或者keytab_name没有指定,klist将展示在默认认证cache或者keytab文件中的认证信息。如果设置了KRB5CCNAME环境变量,其值用来定位默认的ticket cache。
默认使用的文件位置
FILE:/tmp/krb5cc_%{uid}
Default location of Kerberos 5 credentials cache 默认的Kerberos5认证cache位置。
FILE:/etc/krb5.keytab
Default location for the local host's keytab file. 默认的本地主机的keytab文件位置。
5 kdestroy
销毁Kerberos tickets
用法:
kdestroy [-A] [-q] [-c cache_name]
描述:
kdestroy工具通过覆写和删除包含用户的活跃的Kerberos认证ticket的认证cache来销毁。如果没有指定认证cache,则销毁默认的认证cache。