다음 상황에 직면했습니다. GNU 화면 세션이 실행 중이고 더 이상 AFS에 액세스할 수 없습니다. 토큰이 만료되었습니다. 하지만 새 셸에서 액세스할 수 있습니다. 차이점은 다음과 같습니다.이 문제문제는 Kerberos 티켓이 없어서(음, aklog가 찾고 있는 영역이 아님) aklog를 호출할 수 없다는 것입니다. 나도 그런 표는 못 사요. AFS가 어떻게 설정되었는지는 모르지만 작동합니다.
Kerberos 티켓은 이제 /tmp/krb5cc*에 "저장"되고 KRB5CCNAME이라는 변수에 의해 지정됩니다. Kerberos 및 screen/tmux에 이 문제가 있는 경우 kinit를 수행하거나 KRB5CCNAME을 설정하여 최신 티켓을 이전 쉘로 포팅할 수 있습니다.
AFS 자격 증명이 어떻게 지정되는지 궁금하고, 유사하게 이를 쉘(AFS 액세스 권한이 있는 ssh 쉘)에서 내부 쉘( screen -r
더 이상 AFS 액세스 권한이 없는 이후에 얻는 쉘)로 포팅할 수 있는지 궁금합니다. ) ). 두 셸 간에 관련 환경 변수가 변경되지 않은 것 같습니다. strace tokens
액세스 전용이라고 말하는데 /proc/fs/openafs/afs_ioctl
, 이는 프로세스와 관련되어 있고 특수 커널 기능을 사용하므로 매우 어려울 수 있음을 의미합니다. 쉘을 닫고 새 쉘을 열지 않고도 AFS에 다시 액세스할 수 있는 방법에 대한 아이디어가 있습니까?
답변1
ssh를 통해 로그인하고 pam_afs_session.so가 활성화되면 Kerberos 티켓이 생성되고 이를 사용하여 AFS 토큰을 생성합니다. 로그아웃하면 Kerberos 티켓과 AFS 토큰이 삭제됩니다.
알다시피 Kerberos 티켓은 파일에 저장되고 AFS 토큰은 커널의 PAG(Process Authentication Groups)에 저장됩니다. 두 번째 SSH 세션을 통해 연결하면 pam_afs_session.so 라이브러리는 새 파일에 새 Kerberos 티켓을 생성하고 새 PAG에 새 AFS 토큰을 생성합니다.
GNU 스크린 세션에서 AFS 토큰을 활성 상태로 유지하는 가장 간단한 방법은 다음과 같습니다.
- 새 Kerberos 티켓 파일을 만듭니다. 기존 것들은 이렇게 보일 수도 있어요/tmp/krb5cc_UID_RANDOM. 새로운 RANDOM 문자열을 사용하여 하나를 만드십시오.
- 방금 만든 새 티켓 파일에 기존 티켓 파일을 복사합니다.
- KRB5CCNAME 환경 변수를 생성한 새 이름으로 변경하고 내보냅니다.
- 부팅 화면 -r
- 이제 셸에서 로그아웃할 수 있습니다. 이렇게 하면 이전 티켓 파일에서 Kerberos 티켓이 제거되지만 복사본은 내부 셸에서 계속 유효합니다. 그러나 AFS 토큰도 삭제되므로...
- 내부 쉘에 다시 연결하면 다음을 실행하십시오.aklog. 이렇게 하면 저장된 Kerberos 티켓이 새 AFS 토큰에 복사됩니다. 만료될 때까지 유효해야 합니다. 내부 쉘을 종료하기 전에 다음을 실행해야 합니다.파괴하다더 이상 필요하지 않은 Kerberos 티켓을 삭제하세요.