Gắn kết một thư mục chia sẻ sau khi VPN khởi động liên quan đến hai danh tính dễ bị nhầm lẫn: thành phần được phép cấu hình mạng và tài khoản được phép đăng nhập vào máy chủ tệp. Chúng hiếm khi là một. Một hook VPN thuộc root là nơi tồi để bắt đầu gắn kết SSHFS của người dùng máy tính để bàn, vì nó không có tác nhân của người dùng cũng như quyền sở hữu gắn kết dự định. Đặt đúng quyền sở hữu trước sẽ làm trình kích hoạt trở nên đơn giản.

Hai danh tính, hai quyền riêng biệt

Máy khách VPN cần đặc quyền để thay đổi tuyến và giao diện. Gắn kết SSHFS cần danh tính SSH mà máy chủ tệp chấp nhận và một gắn kết FUSE thuộc tài khoản sẽ đọc các tệp. Một tập lệnh chạy dưới quyền root đáp ứng yêu cầu đầu tiên và âm thầm phá vỡ yêu cầu thứ hai.

Gắn kết dưới quyền root để các tệp nằm ngoài phiên máy tính để bàn và có thể không truy cập được tác nhân giữ khóa của người dùng. Gắn kết tồn tại, người dùng không thể ghi qua nó, và lỗi trông giống như vấn đề quyền phía máy chủ. Chẩn đoán sai đó tốn một buổi chiều và một phiếu yêu cầu cho nhóm lưu trữ.

Quyết định tài khoản nào sở hữu gắn kết trước khi viết bất kỳ tự động hóa nào, vì lựa chọn đó quyết định nơi trình kích hoạt sống và thông tin xác thực nào nó có thể tiếp cận.

Trước tiên hãy thiết lập thủ công một gắn kết thuộc người dùng

Bắt đầu với một người dùng đã đăng nhập có điểm gắn kết trống, tài khoản SSH được ủy quyền và đường dẫn hoạt động đến máy chủ qua đường hầm. Gắn kết thủ công thiết lập đường cơ sở mà mọi tự động hóa phải tái tạo.

mkdir -p "$HOME/mnt/team"
sshfs [email protected]:/exports/team "$HOME/mnt/team"
mount | grep sshfs

Tên chỉ là ví dụ, vì vậy hãy thay thế máy chủ và đường dẫn xuất mà máy chủ của bạn thực sự cung cấp. Xác minh khóa máy chủ thông qua quy trình được phê duyệt ở lần kết nối đầu tiên đó. Lưu ý rằng mật khẩu tài khoản VPN không tự động là thông tin xác thực của tài khoản lưu trữ, và đó là nguyên nhân phổ biến của các lần thử thất bại.

Chạy nó với tư cách người dùng bình thường với điểm gắn kết thuộc người dùng đó. Theo mặc định chỉ tài khoản gắn kết mới tiếp cận được tệp, và allow_other mở rộng ranh giới đó cho mọi người dùng cục bộ. Đó là sự mở rộng quyền truy cập có chủ đích, không phải cách né tránh cho tự động hóa.

Để trình kích hoạt hành động trong cùng ngữ cảnh phiên

Để tích hợp sự kiện VPN được hỗ trợ yêu cầu chạy một hành động của phiên người dùng, thay vì giả định rằng một callback có đặc quyền có thể mượn thông tin xác thực máy tính để bàn. Giới hạn trình kích hoạt trong mã định danh kết nối dự định thay vì bất kỳ giao diện nào tình cờ có tên tun0. Một quy tắc bộ điều phối khớp với điều sai sẽ kích hoạt mỗi khi mạng thay đổi, kể cả những thay đổi không liên quan gì đến gắn kết này.

Hành động nên xác nhận tên máy chủ mong đợi, nhận ra một gắn kết hiện có và thực hiện một lần thử có giới hạn. Một vòng lặp thăm dò khởi động tiến trình SSHFS mới vài giây một lần, hoặc lặp lại yêu cầu thông tin xác thực khi máy chủ ngừng hoạt động, biến một gián đoạn ngắn thành một đống tiến trình bị kẹt. Giới hạn lần thử bằng thời gian chờ và một lần thử lại.

nmcli -g UUID connection show --active
systemctl --user list-units 'sshfs*'
pgrep -a sshfs

Lệnh đầu tiên cung cấp mã định danh kết nối mà bộ điều phối phải khớp. Hai lệnh còn lại cho biết liệu một lần thử đã đang chạy hay chưa, và đó là kiểm tra ngăn ngừa trùng lặp.

Một dịch vụ không giám sát cần thông tin xác thực được phê duyệt riêng và cơ chế xác minh máy chủ riêng trong ngữ cảnh thực thi riêng của nó. Nó không thể giả định rằng một tác nhân đồ họa đã được mở khóa, và không nên cố mở khóa một tác nhân.

Lên kế hoạch ngắt kết nối trước khi cưỡng chế dọn dẹp

Đối với ngắt kết nối theo kế hoạch, hãy hoàn tất các thao tác tệp và tháo gắn từ chính quy trình làm việc của người dùng gắn kết. Nhắm vào điểm gắn kết thay vì tiến trình, và xác nhận kết quả trước khi báo cáo thành công.

fusermount3 -u "$HOME/mnt/team"
mountpoint "$HOME/mnt/team"

Chỉ tháo gắn kết mà quy trình làm việc này đã tạo. Nếu nó đang bận, đó là quyết định của ứng dụng: một lần tách cưỡng chế tồn tại để một hook trả về thành công sẽ che giấu mất mát dữ liệu thay vì ngăn chặn nó.

Mất mát bất ngờ hành xử khác. SSHFS ghi nhận rằng gián đoạn mạng có thể chặn một thao tác hệ thống tệp, và tùy chọn reconnect khôi phục truyền tải mà không khôi phục handle: một tệp được mở trước khi kết nối lại có thể thất bại ở lần ghi tiếp theo, và một lần ghi bị gián đoạn không được bảo toàn. Sự khác biệt đó quan trọng nhất với các trình soạn thảo giữ một tệp mở trong nhiều giờ. Hãy lên kế hoạch một bước mở lại thay vì giả định khôi phục.

Kiểm tra hành vi với các tệp dùng một lần trước khi dựa vào nó. Một thư mục xuất hiện lại sau khi đường hầm trở lại không chứng minh rằng các handle trước đó hoặc công việc chưa lưu đã sống sót.

Bài viết liên quan