ההבדל בין su ו- sudo וכיצד להגדיר sudo ב- Linux

מערכת Linux מאובטחת יותר מכל אחד מהמתחרים שלה. אחת הדרכים ליישום אבטחה ב-Linux היא מדיניות ניהול משתמשים והרשאות משתמש ומשתמשים רגילים אינם מורשים לבצע פעולות מערכתיות כלשהן.

אם משתמש רגיל צריך לבצע שינויים ברמת המערכת, עליו להשתמש בפקודת ‘su‘ או ‘sudo‘.

Linux: su v/s sudo

הערה – מאמר זה רלוונטי יותר להפצות המבוססות על Ubuntu, אך גם רלוונטי לרוב ההפצות הפופולריות של Linux.

‘su’ נגד ‘sudo’

su‘ מאלץ אותך לשתף את סיסמת ה־root שלך עם משתמשים אחרים, בעוד ש‘sudo‘ מאפשר לבצע פקודות מערכת בלי root. ‘sudo‘ מאפשר לך להשתמש בסיסמתך האישית כדי לבצע פקודות מערכת, כלומר להעביר אחריות מערכתית בלי root.

מהו ‘sudo’?

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

מי יכול להריץ ‘sudo’?

ניתן להריץ ‘/usr/sbin/visudo‘ כדי להוסיף/להסיר את רשימת המשתמשים שיכולים להריץ ‘sudo‘.

$ sudo /usr/sbin/visudo

A screen shot of ‘/usr/sbin/visudo‘ file, looks something like this:

הרשימה של sudo נראית כמו המחרוזת הבאה, כברירת מחדל:

root ALL=(ALL) ALL

הערה: עליך להיות root כדי לערוך את קובץ /usr/sbin/visudo.

הענקת גישת sudo

במצבים רבים, מנהל המערכת, במיוחד מי שחדש בתחום, מוצא את המחרוזת "root ALL=(ALL) ALL" כתבנית ומעניק גישה לא מוגבלת לאחרים, מה שעשוי להיות מזיק מאוד.

עריכת קובץ 'usr/sbin/visudo' למשהו דומה לתבנית הבאה עשויה באמת להיות מסוכן מאוד, אלא אם תאמין לכל המשתמשים המצוינים לחלוטין.

root ALL=(ALL) ALL
adam ALL=(ALL) ALL
tom ALL=(ALL) ALL
mark ALL=(ALL) ALL

פרמטרים של sudo

A properly configured ‘sudo‘ is very flexible and number of commands that needs to be run may be precisely configured.

תחביר השורה המוגדרת של 'sudo' היא:

User_name Machine_name=(Effective_user) command

התחביר הנ"ל יכול להיחלק לארבעה חלקים:

  1. שם_משתמש: זהו שם המשתמש 'sudo'.
  2. שם_מכונה: זהו שם המארח, בו פקודת 'sudo' תקפה. שימושי כאשר יש לך הרבה מכונות מארחות.
  3. (משתמש_יעיל): ה'משתמש היעיל' שמורשה לבצע את הפקודות. עמוד זה מאפשר לך לאפשר למשתמשים לבצע פקודות מערכת.
  4. פקודה: פקודה או סט של פקודות שהמשתמש יכול להריץ.

המלצה לקריאה: 10 הגדרות שימושיות של Sudoers להגדרת 'sudo' ב-Linux

חלק מהמצבים, והשורת 'sudo' המתאימה להם:

שאלה 1. יש לך משתמש mark שהוא מנהל מסד נתונים. אתה אמור לאפשר לו גישה לכל השרת של מסד הנתונים (beta.database_server.com) בלבד, ולא לשרת אחר.

למצב הנ"ל ניתן לכתוב את השורת 'sudo' כך:

mark beta.database_server.com=(ALL) ALL

שאלה 2. יש לך משתמש 'tom' שצריך לבצע פקודת מערכת כמשתמש שונה מ-root על אותו שרת מסד נתונים, כפי שנסבר לעיל.

למצב הנ"ל ניתן לכתוב את השורת 'sudo' כך:

mark beta.database_server.com=(tom) ALL

שאלה 3. יש לך משתמש 'cat' ב-sudo שצריך להריץ את הפקודה 'dog' בלבד.

כדי ליישם את המצב הנ"ל, ניתן לכתוב 'sudo' כך:

mark beta.database_server.com=(cat) dog

שאלה 4. מה לעשות אם יש למשתמש להינתן מספר פקודות?

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

mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ...

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

A few alias Examples, which can be used in place of entry in ‘sudo‘ configuration file.

User_Alias ADMINS=tom,jerry,adam
user_Alias WEBMASTER=henry,mark
WEBMASTERS WEBSERVERS=(www) APACHE
Cmnd_Alias PROC=/bin/kill,/bin/killall, /usr/bin/top

ניתן לציין קבוצות מערכת, במקום משתמשים, ששייכים לאותה קבוצה על ידי הוספת ‘%’ מתחת לכך:

%apacheadmin WEBSERVERS=(www) APACHE

שאלה 5. איך להריץ פקודת ‘sudo‘ בלי להקליד סיסמה?

ניתן להריץ פקודת ‘sudo‘ בלי להקליד סיסמה על ידי שימוש בדגל ‘NOPASSWD‘.

adam ALL=(ALL) NOPASSWD: PROCS

כאן המשתמש ‘adam‘ יכול להריץ את כל הפקודות הכינוי תחת “PROCS”, בלי להקליד סיסמה.

קריאה מומלצת: תן לsudo לפגוע בך כאשר אתה מקליד סיסמה שגויה

sudo” מספק לך סביבת עבודה חזקה ובטוחה עם המון גמישות בהשוואה ל־‘su‘. ולמעלה מכך קונפיגורציית “sudo” היא קלה. חלק מההפצות של Linux כוללות “sudo” מאופשר כברירת מחדל בעוד רוב ההפצות של היום מחייבות ממך להפעיל אותו כמנהג אבטחה.

כדי להוסיף משתמש (bob) ל־sudo יש להריץ את הפקודה הבאה כשר.

adduser bob sudo

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

Source:
https://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/