我的服务器上的 $HOME 位于 Andrew 文件系统中,并且该服务器运行 kerberos。
我创建了一个 tmux 会话,在其中运行了一个 shell 进程。然后我将其分离并注销,一段时间后再次登录并重新附加 tmux 会话。在 tmux 的 shell 进程中,我发现我没有权限访问 $HOME 中的(非目录)文件。我检查了我的票,它没有过期,我通过运行更新了它krenew
,但仍然没有权限。
$ ls -l
ls: cannot access README: Permission denied
ls: cannot access setup.sh: Permission denied
ls: cannot access setup.sh~: Permission denied
total 14
drwxrwxr-x. 2 t 2048 Apr 6 21:48 bin
drwxrwxr-x. 11 t 2048 Apr 24 18:16 data
??????????? ? ? ? ? ? README.md
??????????? ? ? ? ? ? setup.sh
??????????? ? ? ? ? ? setup.sh~
drwxrwxr-x. 2 t 2048 Apr 22 18:50 src
谢谢!
答案1
肮脏的解决方案是更新 tmux 的值$KRB5CCNAME
。首先,运行这个外部 tmux:
$ echo $KRB5CCNAME
FILE:/tmp/krb5cc_201108_XXXXXX
然后,在 tmux 内部,您需要导出该新值:
$ export KRB5CCNAME='FILE:/tmp/krb5cc_201108_XXXXXX'
现在,tmux 拥有您的新凭据。
答案2
您可能拥有有效的票证,但很可能没有有效的 AFS 令牌。尝试运行aklog
以从现有的缓存凭据中获取令牌。检查输出tokens
以查看您是否有有效的令牌。确保使用 krenew 运行 aklog (这只是一个附加参数更新)。
答案3
这是一个对我有用的干净解决方案。登录任何 tmux 会话并 -
$ kinit
$ aklog