בביטוי „הפעל את זה ברקע“ מסתתרות שתי שאלות. הראשונה היא אם למשתמש הזה מותר בכלל להפעיל תהליך מיוחס; השנייה היא אם ההפעלה יכולה להימשך בלי שמישהו יקליד במסוף. אמפרסנד של הקונכייה לא עונה לאחת מהן, וסקריפט ששומר סיסמת sudo במשתנה עונה רע לראשונה ומשאיר את השנייה בלי שינוי. הפרידו ביניהן והאפשרויות יהפכו קלות להשוואה.

השוו את שלושת המועמדים לפי בעלות, לא לפי נוחות.

שלוש דרכים לעזוב את המסוף, שלושה בעלים שונים

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

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

sudo -b אינו מנהל אישורים

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

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

--daemon משנה את התוכנית, לא את הכניסה

--daemon מבקש מ-OpenVPN עצמו להתנתק לאחר האתחול. מדריך הגרסה 2.6 מציין שהפניית syslog מתרחשת בעת ניתוח האפשרות, אף שההתנתקות מתרחשת מאוחר יותר, ולכן הודעות עשויות להפסיק להופיע במסוף מוקדם מהצפוי. שתיקה לאחר נקודה זו אינה מוכיחה דבר על המנהרה. הוסיפו --log או --log-append מפורש כדי ש הפלט יגיע למקום שתוכלו לקרוא.

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

מה אימות sudo נותן ומה לא

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

אף אחת מהאפשרויות אינה סיבה להעניק פקודות ללא סיסמה לכולם או להעביר סיסמת מנהל לתוך סקריפט.

העדיפו בעלים שאפשר לצפות בו

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

יהיה אשר יהיה שתבחרו, אמתו את המשאב שלמענו קיימת המנהרה. בקשת התחלה מוצלחת היא אירוע של תהליך, לא הוכחה לחיבור עובד.

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