Search This Blog

Wednesday, October 22, 2014

שכחתי את הסיסמא שלי ? מה עושים בסביבת לינוקס מינט 15 (ובעצם בכל נגזרות הדביאן)

חבר פנה אליי, מעט כועס. הוא מצא עצמו מתמודד עם מכונה וירוטואלית שמריצה לינוקס מינט ישן שפעם עזרתי בקונפיגורציה שלה (15, הגירסא הזכורה לטוב בשם olivia). הבעיה - סיסמת המכונה נשכחה, הוא נזקק לגישה מהירה לתכניה.
למה הוא כעס? הרי לא אני שכחתי בשבילו את הסיסמא.
הוא שכח, כי הוא ניסה להתמודד בעצמו עם הבעיה, ולא הצליח. 
בראשית הוא ניסה לחפש באינטרנט הוראות להתמודדות עם מינט שסיסמתו נשכחה באינטרנט. מצא הוראות שכאלה. אבל המכונה לא התנהלה בהתאם להוראות. לא הצליח. 
לאחר מכן, בנחישות, הוא ניסה לעקוב אחרי ההוראות שמצא בבלוג שלי בפוסט Forgot your linux CentOS root password. וגם זה לא הצליח לו.
בשלב הזה, מתוסכל, החליט להתקשר. למרבה המזל לא זכרתי את הסיסמא בעצמי, כך שהדיון התמקד בשאלות הטכניות: 1) מדוע העצות שמצא באינטרנט ובבלוג שלי לא עבדו. 2) איך משנים סיסמא במינט אם אין גישה לאף משתמש?

מדוע העצות לא עבדו?
הסיבה שבגללה ההוראות שמצא באינטרנט לא עבדו, היתה שמדובר היה בהוראות שהתאימו לגירסאות מהעבר הרחוק של Linux Mint (בהתחשב במעגל הrelease של מינט, העבר הרחוק הזה הוא לא כ"כ רחוק במונחי הפצות שמרניות יותר). הסיבה שבגללה ההוראות שמצא בבלוג לא עבדו, היתה שמדובר בהוראות שהתאימו לCentOS ולמשפחת ההפצות של היצרן הצפון-האמריקאי ההוא....

איך משנים סיסמא בלינוקס מינט 15 כשלא זוכרים סיסמאות של אף משתמש?
1. לאתחל את המכונה. כשהמכונה עולה ללחוץ על Shift, ואז במקום שמינט יעלה ישר אל מסך הלוגין הגרפי, הוא יציג את התפריט של Grub:

2. לוחצים e כשעומדים על השורה הראשונה, כדי לערוך אותה. 
3. במסך אליו עוברים, יורדים (עם החץ) עד שרואים שורה שמתחילה עם linux (שורה שלישית מהסוף במסך שלמטה)


4. זזים עם הסימן עד לסוף השורה, ושם להוסיף  init=/bin/bash . התוצאה צריכה להראות דומה למה שנראה במסך הבא.

5. ואז לוחצים על שילוב המקשים CTRL-x (או על מקש הפונקציה f10) - כדי שהמכונה תמשיך בboot ותעלה עם האפשרות החדשה.

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

6. כשהמכונה מסיימת לעלות, לעשות mount מחדש בצורה שתאפשר שמירת המידע -
mount -o remount,rw / 
7. ואז לשנות את הסיסמא של מי שרוצים - 
passwd userX
8. ואז לוודא שכל המידע נשמר לדיסקים -
sync 
9. ואז להמשיך בעליית המכונה על ידי - 
exec /sbin/init 
המכונה תעלה, ואפשר יהיה להיכנס ולעבוד. 

מה בעצם קרה כאן ? 
בעצם נתנו הוראה לגרעין של לינוקס (linux kernel) להריץ את bash שתחת התיקיה "bin/" במקום להריץ את init
(למי שלא מכיר, זה הדיימון הראשון שעולה במהלך העלייה של לינוקס ואחראי לכל עליית המערכת ויצירת סביבת מערכת ההפעלה).

לאחר מכן עשינו mount בצורה שתאפשר לגשת לדיסק בגישת קריאה-כתיבה. אפשר היה לתת גם הוראה לקרנל. מסורתית הגרעין מעלה את הדיסק במצב של readonly ומאוחר יותר אמור לרוץ תהליך שיבדוק את השלמות (integrity) של הדיסק לפני המעבר למצב קריאה-כתיבה. אני סבור שהגישה של הmount מחדש נותנת יותר הבנה ושליטה בתהליך (אבל מודה בכך שזה בעיקר עניין של טעם וריח).

הערה לפני סיום
עד כמה שידיעתי ונסיוני מגעת, השיטה שמתוארת כאן תעבוד גם לגבי משפחת ההפצות של CentOS, RedHat וכו'

לקריאה נוספת


3 comments:

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

    ReplyDelete
  2. לא ברור כיצד מוסיפים את הפקודה מאונט וגם פסווד.. האם להוסיף אותם בשורה של לינוקס אחרי רווח, או להוסיף בלחיצה על אף 10 ?) גם אין תמונות המחשה :S

    ReplyDelete
  3. מצטער על העיכוב בתשובה.
    מדוברת בפקודות בשורת-הפקודה. לא בקובץ או משהו כזה.
    כל פקודה היא נפרדת.
    כלומר שורה ואח"כ אנטר.

    ReplyDelete