有时可能需要在网络应用程序服务器上,临时禁用对服务(如 rlogin 或 ftp)的验证机制。例如,可能希望在执行维护过程时禁止用户登录到系统。使用 ktutil 命令,可以通过从服务器的密钥表文件中删除服务主体来完成此任务,而不需要 kadmin 权限。要再次启用验证,只需要将保存的原始密钥表文件复制回其原始位置。
缺省情况下,大多数服务都被设置为要求验证。如果某服务未设置为要求验证,则即使对该服务禁用验证,该服务仍然会运行。
成为包含密钥表文件的主机的超级用户。
尽管可以创建由其他用户拥有的密钥表文件,但使用密钥表文件的缺省位置需要 root 拥有权。
将当前密钥表文件保存到临时文件。
启动 ktutil 命令。
# /usr/bin/ktutil |
ktutil: read_kt keytab |
ktutil: list |
此时会显示当前的密钥列表缓冲区。请注意要禁用的服务的槽号。
要临时禁用主机的服务,请使用 delete_entry 命令从密钥列表缓冲区中删除特定的服务主体。
ktutil: delete_entry slot-number |
其中,slot-number 指定要删除的服务主体的槽号,可使用 list 命令来显示它。
使用 write_kt 命令,将密钥列表缓冲区写入新的密钥表文件。
ktutil: write_kt new-keytab |
退出 ktutil 命令。
ktutil: quit |
移动新的密钥表文件。
# mv new-keytab keytab |
如果要再次启用该服务,请将临时(原始)密钥表文件复制回其原始位置。
在以下示例中,临时禁用了 denver 主机上的 host 服务。要重新启用 denver 上的主机服务,应将 krb5.keytab.temp 文件复制到 /etc/krb5/krb5.keytab 文件中。
denver # cp /etc/krb5/krb5.keytab /etc/krb5/krb5.keytab.temp denver # /usr/bin/ktutil ktutil:read_kt /etc/krb5/krb5.keytab ktutil:list slot KVNO Principal ---- ---- --------------------------------------- 1 8 root/denver@EXAMPLE.COM 2 5 host/denver@EXAMPLE.COM ktutil:delete_entry 2 ktutil:list slot KVNO Principal ---- ---- -------------------------------------- 1 8 root/denver@EXAMPLE.COM ktutil:write_kt /etc/krb5/new.krb5.keytab ktutil: quit denver # cp /etc/krb5/new.krb5.keytab /etc/krb5/krb5.keytab |