קל לאמץ את ההנחה וקשה לשים לב אליה: וו חיבור VPN פועל כ-root, ולכן גם העלייה שהוא מפעיל צריכה להיות מסודרת כ-root. ההיגיון הזה מייצר תיקיית צוות שמשתמש שולחן העבודה אינו יכול לפתוח, עלייה שנעלמת כשהשירות המפעיל מופעל מחדש, ובקשת אימות בהקשר שבו אין מי שיכול לענות עליה. הוו והעלייה הם שני תפקידים שונים, ורק אחד מהם זקוק להרשאה.

המיתוס: הרשאת רשת מרמזת על הרשאת עלייה

העלאת ממשק ואימות מול שרת קבצים הן יכולות שאינן קשורות זו לזו, והן שייכות בדרך כלל לחשבונות שונים. רכיב ה-VPN זקוק להרשאה מספקת כדי לשנות מסלולים וממשקים. חשבון שרת הקבצים זקוק למפתח או לסיסמה, להחלטה בנוגע למפתח המארח, ולתיקיית בית שעליה לעלות. מסירת פרטי האימות של התפקיד השני לזהות הראשונה היא הדרך שבה שירות רשת מוצא את עצמו מחזיק במפתח של משתמש.

במחשב נייד של משתמש יחיד אלה עשויים להיות אותו חשבון, והצירוף המקרי הזה אינו תכנון.

ברגע שוו בעל הרשאה מבצע את העלייה, שלושה דברים משתבשים בשקט. העלייה שייכת ל-root, הסוכן של המשתמש נעדר מאותה סביבה, וכשלים מופיעים ביומן שירות הרשת ולא בהפעלה שאיכפת לה. שום דבר מזה אינו מתוקן על ידי הוספת אפשרויות לפקודת העלייה. הם מתוקנים על ידי מסירת התפקיד להפעלה שמחזיקה בזהות.

למה העלייה שייכת למשתמש המחובר

עלייה של SSHFS היא עליית FUSE שבבעלות התהליך שיצר אותה, והגישה עוקבת אחר הבעלות הזו ולא אחר מצב תיקיית האב. ההפניה ממליצה על משתמש רגיל עם נקודת עלייה שבבעלותו, וזו בדיוק הסיבה שעלייה שנוצרה על ידי תהליך root אינה נוחה לכל האחרים. שינוי הרשאה בנקודת העלייה אינו מתקן אותה, כי המכשול הוא הבעלים של העלייה עצמה.

התחילו מקו בסיס ידני בתוך הפעלת המשתמש: נקודת עלייה ריקה קיימת תחת תיקיית הבית, חשבון מורשה בשרת, ומפתח מארח שכבר אומת דרך התהליך המאושר שלכם. עלו אותה פעם אחת ביד והשתמשו בה, כי זה מוכיח שנתיב הזהות עובד לפני שקיים אוטומציה כלשהי. רשמו מה הפקודה הייתה צריכה: שם החשבון, נתיב הייצוא ושם המארח הפרטי. שמרו בדיוק את ההקשר הזה לגרסה האוטומטית, כי עלייה ידנית עובדת היא המפרט שהטריגר חייב לשחזר.

sshfs [email protected]:/exports/team "$HOME/mnt/team"

התייחסו לכל שם ונתיב בשורה הזו כאל מציין מקום, כולל החשבון והייצוא. סיסמת חשבון VPN אינה אוטומטית פרטי האימות של חשבון האחסון.

מה הטריגר צריך לבקש מההפעלה

הסדר הנתמך הוא בקשה מאירוע הרשת אל הפעלת המשתמש, ולא פרטי אימות שאולים. הגבילו את הטריגר לחיבור שהתכוונתם אליו, לפי שם או UUID, ולא לכל ממשק שמקרה קרא לו tun0. השינוי האחד הזה מונע מפרופיל שני, ממנהרת בדיקה או מהפעלת ניפוי באגים של עמית להתחיל עלייה.

הפעולה בצד ההפעלה צריכה לחפש את העלייה הקיימת המיועדת ואז לבצע ניסיון מוגבל אחד.

אל תנסו שוב בכל סקר, ואל תמשיכו לבקש פרטי אימות כשהשרת אינו נגיש, כי שניהם הופכים תקלה חולפת לנעילת חשבון. שירות ללא השגחה הוא תכנון נפרד עם פרטי האימות המאושרים שלו וסידור אימות המארח שלו בהקשר ההרצה שלו, והוא אינו יכול להסתמך על מישהו שפתח סוכן גרפי. החליטו איזה משני אלה אתם בונים לפני שתבחרו היכן הקוד יחיה. רוב הבלבול כאן מגיע מבניית האחד וציפייה לשני.

ניתוק הוא אירוע של מערכת הקבצים, לא אירוע של הוו

ניתוק מתוכנן צריך לסיים פעולות קבצים ולבטל את העלייה מהפעלת המשתמש המעלה באמצעות הפקודה הנתמכת לאותו סוג מערכת קבצים. כפיית התנתקות כדי שהוו יחזור מהר היא הדרך שבה יישומים מאבדים את תיקיית העבודה שלהם ומשתמשים מאבדים אמון באוטומציה. עלייה עסוקה זקוקה להחלטה ברמת היישום, כמו סגירת הקובץ או עצירת הכתיבה, ולא לאות חזק יותר. מצב היציאה של הוו אינו הדבר שמבצעים עליו אופטימיזציה.

fusermount3 -u "$HOME/mnt/team"

אובדן בלתי צפוי הוא מקרה אחר, ו-SSHFS מתעד שפעולה שנקטעה עשויה להיחסם בזמן שהתעבורה מתחברת מחדש.

אפשרות ההתחברות מחדש משחזרת את התעבורה, וקבצים שנפתחו לפני אותה התחברות מחדש עדיין עשויים להחזיר שגיאות ולצריך פתיחה מחדש. VPN שחוזר אינו מוכיח דבר על ידיות קודמות או על עבודה שלא נשמרה. בחרו את ההתנהגות שאתם רוצים בעת תקלה — השהיה, הצגת שגיאה או עלייה מחדש בכוונה — ובדקו אותה עם קבצים חד-פעמיים לפני שמשהו תלוי בה.

מאמרים קשורים