- Root מציע שליטה מלאה, אך Ubuntu והפצות אחרות משאירות אותה מושבתת כברירת מחדל כדי להפחית סיכונים.
- סודו מאפשר לך להעלות הרשאות על בסיס כל מקרה לגופו ושומר תיעוד של מי מבצע כל פקודה.
- עבור יישומים גרפיים, ישנם תוכנות עזר כגון kdesu, gksu, gksudo או pkexec, שניתן להשתמש בהן במפעילי .desktop.
- אבטחה תלויה בשימוש במינימום הרשאות, הימנעות מסקריפטים לא מהימנים וביקורת גישה מוגברת.
ב-Windows, אנשים רבים רגילים ללחוץ על Shift+Enter או Shift+לחיצה שמאלית כדי לפתוח תוכנית עם הרשאות מוגברות מתפריט התחל. בלינוקס, זה לא תמיד פשוט, מכיוון שהאבטחה מסתמכת על root, sudo ועוזרים גרפיים , ולכל סביבת שולחן עבודה יש כלים משלה. למרות זאת, ישנן דרכים פשוטות למדי להפעיל יישומים כ-root ממפעיל, קיצור דרך או מתפריט היישומים, אם כי חשוב להבין מה כרוך בכך.
המפתח הוא שלמשתמש ה-root יש שליטה מוחלטת על המערכת , והפצות מודרניות, במיוחד אובונטו ונגזרותיה, בדרך כלל מבטלות כניסה ישירה. לכן, לא מקובל להתחבר כ-root, אלא להעלות הרשאות מדי פעם באמצעות `sudo` או תוכנית גרפית שמבקשת את הסיסמה. אם נרצה שסמל משגר יפעיל אפליקציה עם הרשאות אלו, נצטרך לשנות את הפקודה שהוא מבצע או ליצור משגר ספציפי.
מה זה באמת אומר להריץ משהו כ-root?

בלינוקס, root הוא חשבון עם UID 0 והרשאות בלתי מוגבלות . הוא יכול לקרוא, לשנות או למחוק כל קובץ, להתקין תוכנה, לשנות תצורות ליבה ולשלוט בתהליכים השייכים לכל משתמש. זה הופך אותו לכלי רב עוצמה להפליא, אך גם לסיכון עצום אם משתמשים בו ברשלנות. שגיאת הקלדה פשוטה עם `rm` או `mv` יכולה להפוך את המערכת לבלתי שמישה, וסקריפט זדוני המופעל כ-root יכול להתקין דלתות אחוריות, לשנות אמצעי אבטחה או לגנוב נתונים כמעט ללא עקבות.
באובונטו, לחשבון ה-root אין סיסמת ברירת מחדל וכניסה ישירה אינה מותרת. הפילוסופיה היא שאתה עובד עם חשבון המשתמש הרגיל שלך ומשתמש ב -`sudo` למשימות ספציפיות . `sudo` פירושו למעשה להפעיל פקודה כמשתמש אחר, בדרך כלל root, לאחר אימות עם הסיסמה שלך אם אתה שייך לקבוצת `sudo`. זה מגביל את משך הזמן שאתה חשוף ושומר תיעוד של מי עשה מה.
עם זאת, במצבים ספציפיים מאוד, כגון שחזור מערכת פגומה, עבודה בסביבות מוגבלות או הגדרת שירותים הדורשים גישה מתמשכת, ייתכן שתשקלו להפעיל את root באופן זמני. ההמלצה הכללית היא להשבית אותו שוב ברגע שמתעורר הצורך. ככל שתבלו פחות זמן כ-root, כך ייטב ליציבות ולאבטחה של המכונה.
סיכונים של שימוש בשורש ללא זהירות
אחת הסכנות הברורות ביותר היא מחיקה בשוגג של קבצים חיוניים . כמשתמש root, אין הגבלות הרשאה; פקודה כמו `sudo rm -rf /` יכולה למחוק את המערכת ללא אזהרה. בדרך כלל אין גם סל מיחזור למחיקות אלו, כך ששחזור עשוי לדרוש כלים פורנזיים מורכבים או אפילו התקנה מחדש מלאה של המערכת.
סיכון נוסף הוא הרצת סקריפטים לא מהימנים. אם אתם מפעילים קוד שהורדת מכל אתר עם הרשאות מוגברות, אתם בעצם נותנים לו את המפתחות לבית שלכם . גם אם הסקריפט נראה לא מזיק, הוא עלול להכיל הוראות הרסניות או להתקין תוכנות זדוניות עם הרשאות root. לכן, מומלץ לבדוק את הקוד, להשתמש במקורות רשמיים, לבדוק סכומי בדיקה ולבדוק אותו במכונה וירטואלית או במכולה לפני הפעלתו בסביבת ייצור.
ישנה גם בעיית מעקב. כשמשתמשים ב-`sudo`, המערכת רושמת את הפקודה, את המשתמש שהוציא אותה ואת הזמן עד `/var/log/auth.log`, `/var/log/secure` או `journalctl` . אם מתחברים ישירות כ-root, הכל מופיע כ-root, ומאבדים את היכולת לדעת מי ביצע כל שינוי. בסביבות עם מספר מנהלים או ISO 27001, PCI DSS או תקני ביקורת אחרים, חוסר מעקב זה הוא חולשה משמעותית.
דרכים לקבל הרשאות מהטרמינל

הדרך הנפוצה והמומלצת ביותר היא להקדים פקודה ספציפית עם `sudo`. לדוגמה, כדי לעדכן חבילות, להפעיל מחדש שירות או לערוך קובץ מוגן, `sudo` יבקש את סיסמת המשתמש שלך, לא את סיסמת הבסיס, ולאחר אימותך, הוא יבצע את הפקודה עם הרשאות מוגברות. אם עליך להריץ אותה כמשתמש אחר, תוכל להשתמש ב -`sudo -u username command` . ואם אתה מבין ששכחת להשתמש ב-`sudo`, תוכל לחזור על הפקודה האחרונה עם `sudo !! `.
כאשר אתם מתכוונים לבצע מספר משימות ניהוליות ברצף, ייתכן שיהיה נוח לפתוח מעטפת שורש זמנית. הפקודה `sudo -i` מדמה התחברות מלאה למערכת השורש, טוענת את סביבת השורש וממקמת אתכם בתיקיית הבית. הפקודות `sudo su` או `sudo su -` גם עובדות, אם כי `sudo -i` בדרך כלל אמין יותר. כדי לצאת מההפעלה הזו, פשוט הקלידו `exit`. לא מומלץ להשאיר מעטפת שורש פתוחה ללא השגחה.
הפקודה `su`, לעומת זאת, מחליפה משתמשים. `su-root` או פשוט `su-` גם מאמצים את משתני הסביבה של משתמש היעד, בעוד ש -`su root` או `su` ללא המקף שומרים על חלק מהסביבה הקודמת. הבדל זה מסביר שגיאות כמו `command not found`: פקודות ניהול ממוקמות בדרך כלל ב-`/usr/local/sbin`, `/usr/sbin` ו-`/sbin`, נתיבים שלא תמיד מופיעים ב-PATH של משתמש רגיל. אם תשתמשו ב-`su` ללא המקף, תצטרכו להקליד את הנתיב המלא או לעבור ל-`su-` כדי לרשת את PATH הבסיסי.
אם ברצונך להפעיל סיסמה עבור root, תוכל לעשות זאת באמצעות `sudo passwd root` . אובונטו לא מעודדת זאת, אך טכנית מאפשרת ל-root לקבל סיסמה. כדי לנעול את החשבון, השתמש ב -`sudo passwd -l root` , וכדי לפתוח אותו, השתמש ב-`sudo passwd -u root`. ב-SSH, גישת root ישירה נשלטת על ידי `PermitRootLogin` ב-`/etc/ssh/sshd_config`. עדיף להשאיר אותה מוגדרת ל-`no` או, לכל היותר, ל-`prohibit-password` כדי לאפשר רק סיסמאות SSH. לאחר מכן, עליך להפעיל מחדש את שירות ה-SSH.
עצבו סוודרים בצורה מדויקת
קובץ `/etc/sudoers` מגדיר מי יכול להשתמש ב-`sudo` ולאיזו מטרה. עדיף לא לערוך אותו ידנית; הגישה הנכונה היא להשתמש ב -`sudo visudo` , אשר נועל את הקובץ ובודק את התחביר לפני השמירה. הכלל הבסיסי הוא `host user=(target_user)`. לדוגמה, `bob ALL=(ALL) ALL` מאפשר ל-`bob` לבצע כל פקודה כ-root על כל מכונה. ניתן להשתמש גם בקבוצות, כגון `%admin ALL=(ALL) ALL`.
כדי להעניק הרשאות מדויקות יותר, נעשה שימוש בכינויים. `User_Alias ADMINS = alice, bob` מקבץ משתמשים, ו -`Cmnd_Alias LOCATE = /usr/sbin/updatedb` מקבץ פקודות. לאחר מכן, נעשה שימוש ב-`ADMINS ALL = LOCATE` כך שמשתמשים אלה יוכלו לבצע רק את הפקודות הללו. ניתן ליצור כינויים כמו `NETWORKING` עבור פקודות כגון `route`, `ifconfig`, `ping`, `iptables` וכו'. זה מיישם את עקרון ההרשאות הנמוכות ביותר מבלי להעניק גישת root מלאה לאף אחד.
האפשרות NOPASSWD מאפשרת לך להפעיל פקודות מסוימות ללא סיסמה, לדוגמה, `pi ALL=(ALL)`. NOPASSWD: ALL. זה נוח, אך מסוכן אם נעשה בו שימוש לרעה. יתר על כן, כל שימוש ב-`sudo` נרשם, מה שעוזר לבקרת גישה ולפתור בעיות. אם משהו נשבר, סקירת יומני רישום אלה יכולה להצביע על איזה שינוי אחרון גרם לכשל.
הפעלת יישומים גרפיים כ-root מהמשגר

עבור תוכניות עם ממשק גרפי, שימוש פשוט ב-`sudo` בדרך כלל לא עובד טוב מכיוון שאין מסוף שיבקש את הסיסמה. כאן נכנסים לתמונה עוזרים גרפיים . ב-KDE, יש את `kdesu` : אם אתה יודע איזו פקודה מפעילה את היישום, אתה יכול להריץ את `kdesu that_command`. האפשרות `Run Command` בתפריט KDE מאפשרת לך גם להפעיל יישום כמשתמש אחר על ידי הזנת האישורים שלו. בסביבות GNOME ו-GTK , `gksu` ו -`gksudo` היו בשימוש נרחב ; אלה הם ממשק משתמש עבור `sudo` או `su`. לדוגמה, `gksu synaptic` או `gksudo gparted` פותחים את היישום ומבקשים את הסיסמה.
במערכות מודרניות, gksu אינו מומלץ או שאינו בשימוש. החלופה הרגילה שלו היא pkexec , המבוססת על PolicyKit, המאפשרת לתוכניות לפעול עם הרשאות בהתאם למדיניות מוגדרת. משגרים רבים משתמשים ב-pkexec למשימות ניהול. הרעיון זהה: המשתמש אינו צריך לפתוח טרמינל, אך המערכת מאמתת את ההרשאה בצורה מבוקרת.
כדי ליצור קיצור דרך במפעיל, עליך לערוך קובץ .desktop . השורה `Exec` היא המפתח. אם ברצונך שהוא יפעל כ-root, תוכל להשתמש במשהו כמו `Exec=gksu /path/to/program`, `Exec=kdesu /path/to/program`, או `Exec=pkexec /path/to/program`. אם תשתמש ב-`sudo` ישירות, תצטרך שהמפעיל יכלול `Terminal=true` או שתגדיר askpass גרפי. תוכל גם לנסות ללחוץ על Alt+F2 ולהקליד את העזרה ואת שם התוכנית, לדוגמה, `gksu synaptic`. ב-KDE, `kdesu synaptic` או האפשרות להפעיל כמשתמש אחר מבצעות פונקציה דומה.
ישנה אלטרנטיבה קלאסית בשם consolehelper , עטיפת יישומים עבור יישומי GUI. יוצרים קישור סמלי, לדוגמה, /usr/bin/xterm-root המצביע אל /usr/sbin/consolehelper. לאחר מכן מגדירים את PAM על ידי יצירת /etc/pam.d/xterm-root עם הפריטים auth, account ו-session מ-config-util. לאחר מכן, מגדירים /etc/security/console.apps/xterm-root עם USER=root ו-PROGRAM=/usr/bin/xterm. כאשר מפעילים את xterm-root, consolehelper מבקש אימות PAM ומפעיל את xterm כ-root. אם נתקלים בשגיאה "Xlib connection to :0.0 refused by server", הפעלת xhost local:root עשויה לעזור.
בכל מקרה, לפתיחת יישומים גרפיים כ-root יש חסרונות: היא משלבת משתני סביבה, יכולה לשבור את אפיק ההפעלה, להשפיע על Wayland או X11, וליצור קבצים בבעלות root בספריית הבית שלך. עדיף להשתמש בה רק עבור כלי ניהול ספציפיים ולסגור אותם ברגע שתסיים. אל תגלוש באינטרנט או תפתח מסמכים חשודים כ-root , מכיוון שכל ניצול לרעה יירש הרשאות מלאות.
דוגמאות נפוצות למשימות הדורשות גישת root
פעולות יומיומיות רבות דורשות הרשאות מוגברות. ניהול חבילות עם apt, zypper, dnf או yum דורש לעתים קרובות sudo. לדוגמה, `sudo apt update` , `sudo apt install firefox`, או `sudo zypper install docker-ce`. אותו הדבר חל על שירותי מערכת: `sudo systemctl restart apache2`, `sudo systemctl restart ssh`, או `sudo systemctl restart nginx`. כדי לשנות חשבונות משתמש, השתמש ב-`sudo usermod`, וכדי לשנות בעלות על קובץ, השתמש ב-`sudo chown`. עריכת תצורות קריטיות, כגון `/etc/ssh/sshd_config`, דורשת גם הרשאות root אם היא נעשית עם nano, vim או gedit.
אינך צריך `sudo` עבור פקודות שרק קוראות מידע או לא משנות את המערכת, כגון `zypper repos` או `systemctl status NetworkManager`. שימוש ב-`sudo` עבור כל דבר מתוך הרגל הוא נוהג גרוע. הדבר הנבון לעשות הוא להעלות הרשאות רק כאשר המשימה דורשת זאת ולאחר מכן לחזור למשתמש הרגיל בהקדם האפשרי.
שיטות עבודה מומלצות בעת עבודה עם הרשאות מוגברות

עקרון המינימום של הרשאות צריך להנחות הכל. השתמשו ב-`sudo` עבור פקודות בודדות ככל האפשר, הימנעו מקליפות root קבועות אלא אם כן זה הכרחי לחלוטין, וצאו מיד לאחר שתסיימו. אל תריצו סקריפטים ממקורות לא ידועים כ-root; עברו על הקוד מראש, הורידו ממאגרים רשמיים או מפרויקטים בעלי מוניטין, ודאו סכומי בדיקה ובדקו בסביבה מבודדת אם יש לכם ספקות. מנה בריאה של ספקנות היא מעלה כשמתמודדים עם קוד של צד שלישי שיש לו הרשאות מלאות.
כמו כן, מומלץ להגדיר את פקודות ה-sudo בצורה מדויקת, לא להסתמך אך ורק על קבוצת sudo לכל דבר, ולבצע ביקורת על יומני הרישום. אם אתם מנהלים שרתים, בדקו `/var/log/auth.log`, `/var/log/secure`, או `journalctl -xe` כדי לזהות שימוש לרעה. בסביבות מרובות משתמשים, ידיעת מי ביצע כל פקודה היא המפתח לאחריותיות ועמידה בתקנות האבטחה.
הפעלה והשבתה של רוט באמצעות head
אם תחליטו להפעיל גישת root, הקצה סיסמה עם `sudo passwd root`, השתמשו בה רק למשימות חיוניות, ולאחר מכן נעל מחדש את החשבון. כדי להשבית כניסה ישירה באמצעות SSH, ערכו את `sshd_config` והגדירו `PermitRootLogin no` או `prohibit-password`, ולאחר מכן הפעילו מחדש את SSH. כדי לנעול את החשבון באופן מקומי, השתמשו ב-`sudo passwd -l root`. כדי לפתוח אותו, השתמשו ב-`sudo passwd -u root`. אמצעים אלה מפחיתים את משטח ההתקפה ומונעים התקפות Brute-Force נגד החשבון החזק ביותר.
ברוב המקרים, התשובה המעשית לשאלה הראשונית היא כן: ניתן להפעיל תוכנית מהמשגר עם הרשאות root באמצעות עוזר גרפי כמו kdesu, gksu, gksudo או pkexec, או על ידי יצירת קובץ .desktop עם הפקודה המתאימה. עם זאת, זה לא משהו שכדאי להשאיר מוגדר עבור כל יישום. עדיף שיהיו משגרי ניהול ספציפיים עם שמות ברורים ולהשתמש בהם רק בעת הצורך.
המסקנה המרכזית היא ש-root אינו צעצוע, ו-sudo קיים בדיוק כדי להעצים אותך מבלי להפוך כל לחיצה לסיכון קבוע. אם אתה צריך להפעיל אפליקציה גרפית כמשתמש-על, תן עדיפות לעוזרים הדורשים סיסמה, ודא שהאפליקציה באמת זקוקה לה, והגבל את השימוש בה למשימות ניהול. בדרך זו, אתה נהנה מהנוחות של המשגר מבלי לוותר על האבטחה שהופכת את לינוקס לכל כך חזקה.