我在其中一台服务器上看到以下每天一到两次的syslog条目。 此服务器使用Kerberos服务主体将文件备份到AFS空间:
Dec 6 04:01:06 myserver kernel: [3681180.757245] afs: Tokens for user of AFS id -1 for cell realm.example.com have expired (server 192.168.22.24)
该服务器正在运行Debian wheezy 64位。 我能做些什么来追查可能导致这个消息的原因?
-1 id的一个可能原因就是令牌在消息出现的同一时间被破坏。 要么是有人'忘记了令牌,要么是(更有可能的)内核模块中定期清理房间的过程注意到这些令牌已经过期并使其无效。 -1的id是令牌被标记为无效的一种方式(这是在openafs内核模块的'unixuser'结构中的ViceId)。 如果在这个消息中总是看到一个id -1,那么真的不可能真正知道什么是特别触发这些消息的,除非那时只有less数几个东西正在被AFSvalidation。
如果你还没有使用它,你应该使用-t选项来使用k5start或krenew(在Debian的'kstart'包中),以确保你的文件备份过程没有用于访问AFS的令牌。
但是,如果使用k5start,由于-K选项工作方式的某些边缘情况,仍然可能会由于令牌失效而导致访问失败: http : //permalink.gmane.org/gmane.comp.encryption.kerberos。一般/ 18343 。 由于k5start和-K只保证其krb5票证在将来有效2分钟,所以有可能获得将来有效约2分钟或更less的AFS令牌。 如果使用2分钟有效令牌联系AFS文件服务器,并且通信时间超过2分钟,则访问可能会失败,并显示“令牌过期”。 或者,如果AFS服务主体的票证最长生命周期小于TGT的最长票证生命周期,那么AFS令牌可能会在您的票证到期之前到期,因此k5start会让其到期。
您可以通过使用-H选项和-K选项一起增加保证票证生命周期来确保不会发生这种情况。 只需将-H设置为高于默认2分钟的值即可; 也许30分钟或一个小时。 或者,您可以使用-a选项在每次k5start / krenew醒来时始终更新票证(这是我推荐的)。 但是,在最新发布的k5start版本中,段落中的所有内容都是不可能的,所以为了做到这一点,您需要等待k5start的新版本,或者从git构build它。
解决这个问题的另一种方法是不要使用k5start,并且每个小时kinit -kt /path/to/keytab && aklog一个像kinit -kt /path/to/keytab && aklog这样的自己的脚本,在将文件备份到AFS的过程中使用相同的PAG。