פתרון בידוד קבצים ורשת¶
פתרון ראשון¶
הוסיפו בתוך הילד, לאחר יצירת התצוגה, את הרצף הבא. הקוד משתלב בסקריפט ההרצאה ומשתמש במשתנה base שהוגדר בו.
printf 'version-2\n' > "$base/source/value"
test "$(cat "$base/view/value")" = version-2
if printf 'x\n' > "$base/view/value"; then
exit 1
fi
printf 'version-3\n' > "$base/source/value"
test "$(cat "$base/view/value")" = version-3
התצוגה והמקור מצביעים לאותו אחסון, אך פעולת הכתיבה נבדקת דרך העיגון שבו נעשה החיפוש. ההורה רואה את התוכן האחרון במקור משום ששינוי בתוכן אינו שינוי במפת העיגונים. ההורה אינו רואה את הקובץ דרך התיקייה view, משום שהעיגון הנוסף נוצר רק במרחב הילד.
פתרון שני¶
נוסיף את הנתיב ונבדוק את החלטת הניתוב בנפרד מהתקשורת.
sudo ip -n amit-isolate-a route add default via 192.0.2.2
sudo ip -n amit-isolate-a route get 198.51.100.1
sudo ip netns exec amit-isolate-a ping -c 2 -W 1 198.51.100.1
sudo ip -n amit-isolate-a route del default via 192.0.2.2
בחירת הנתיב אמורה להציג את הקצה השני בתור השער. בקשת הבדיקה עדיין אינה מגיעה ליעד שלישי, משום שהטופולוגיה אינה מכילה דרך אליו. גם הפעלת העברה בצד השני לא הייתה יוצרת בעצמה קישור נוסף או נתיב חזרה. הבדיקה מציגה הפרדה בין ידיעה לאיזה קצה מקומי לשלוח לבין קיום מסלול שלם בשני הכיוונים.
פתרון שלישי¶
נפתח את קובץ היומן עם הרשאות מוגדרות ונאמת את סוגו לפני המעבר. ניצור מרחב עיגונים פרטי, נבנה את השורש, נחליף שורש ונעבור לתיקיית עבודה בתוכו. נסגור כל מתאר למעט רשימת המתארים המוצהרת, כולל הפניות לתיקיות ישנות. ננתק את השורש הישן ונוריד קבוצות, זהויות וסמכויות בסדר שנבדק בפרקים הקודמים.
כל כישלון יגרום ליציאה לפני הפעלת קוד השירות. נבדוק שכתיבה למתאר היומן מצליחה ושפתיחת הנתיב המקורי של היומן נכשלת. נבדוק גם שאין מתאר תיקייה בלתי צפוי שמאפשר גישה יחסית אל העץ הישן. ההרשאה למתאר היומן היא חריג מכוון למדיניות הנתיבים, ולכן יש לתעד אותה כחלק מהממשק של השירות.