Bạn có thể đính kèm phiên màn hình, tạo cửa sổ mới/'màn hình' bên trong (với cấu hình mặc định, bạn có thể thực hiện việc này bằng cách bấm C-a C-c
) và chỉ chạy kinit && aklog
. Bạn không cần phải chạy "bên trong" các ứng dụng đang chạy hoặc bất cứ thứ gì như thế; bạn chỉ cần chạy nó ở đâu đó trong cùng một phiên màn hình. Sau đó, bạn có thể tách màn hình và đăng xuất và phiên màn hình vẫn có thông tin đăng nhập của bạn (cho đến khi hết hạn; bạn có thể sử dụng krenew
để giữ cho chúng dài hơn, nhưng không phải mãi mãi).
Giải thích chi tiết hơn về những gì đang diễn ra, nếu bạn muốn biết. Tôi giả định rằng bạn đang đăng nhập qua ssh và PAM đang được sử dụng, nhưng cùng một quy trình chung cũng hoạt động cho các thiết lập khác:
Khi bạn đăng nhập lần đầu, PAM gán cho bạn một PAG (một loại container cho bạn Mã AFS) và chạy một số thứ tương đương với kinit
và aklog
để cung cấp cho bạn mã thông báo AFS bên trong PAG đó. Shell của bạn sau đó được chạy bên trong PAG đó, vì vậy mọi thứ mà bạn chạy trong shell đó được liên kết với PAG đó và các thông tin đăng nhập của nó. Bao gồm phiên screen
bạn đã tạo.
Khi bạn đăng xuất, cấu hình PAM cho biết tiêu hủy thông tin đăng nhập của bạn, điều đó có nghĩa là nó phá hủy mã thông báo AFS được liên kết với PAG đó. Đó là lý do tại sao phiên màn hình mất thông tin đăng nhập và mất quyền truy cập vào thư mục chính của bạn: các mã thông báo cho PAG đó đã bị hủy.
Sau đó, nếu bạn đăng nhập lại, bạn được chỉ định một PAG riêng biệt mới và một lần nữa bạn sẽ nhận được mã thông báo AFS. Phiên màn hình cũ vẫn được liên kết với PAG khác, phiên làm việc của thẻ bị hủy. Vì vậy, nếu bạn đính kèm vào phiên màn hình đó và chạy kinit
và aklog
ở đâu đó bên trong, điều này sẽ tạo mã thông báo mới được liên kết với PAG cũ từ lần đầu tiên bạn đăng nhập. Sau đó, bạn có thể tách khỏi phiên màn hình và đăng xuất, và các mã thông báo trong PAG hiện tại của bạn sẽ bị hủy. Nhưng PAG cho phiên màn hình là không bị ảnh hưởng, vì PAM cũng không phải bất cứ điều gì khác biết về PAG đó nữa. Vì vậy, các thẻ cho nó sẽ tiếp tục có hiệu lực cho đến khi hết hạn.
Cảm ơn câu trả lời của bạn! Thật không may, tôi không thể làm cho tiến trình chạy aklog, vì nó là một nhị phân được biên dịch, và nó sẽ quá phức tạp để chạm vào nguồn, biên dịch lại, v.v ..., đặc biệt là vì tôi không sở hữu các máy chủ này, vì vậy việc triển khai sẽ cũng phức tạp. Trong thực tế, nếu tôi có thể làm điều đó, tôi có lẽ có thể chạy kinit quá, mà sẽ giải quyết vấn đề, nhưng tôi không thể. Vì vậy, bạn đang nói không có cách nào để vượt qua mã thông báo AFS hiện tại cho một tiến trình đang chạy? Cảm ơn một lần nữa, Daniel – PDani
Luôn luôn có một cách, nó chỉ là vấn đề bao nhiêu mã bạn sẵn sàng để viết và cho dù bạn có quyền truy cập root. Tôi biết không có cách nào để làm điều đó bằng cách sử dụng các công cụ tiêu chuẩn và thậm chí với các công cụ không đạt tiêu chuẩn tôi biết tôi không chắc chắn nếu api AFS hỗ trợ nó. –