לנהל את השרת, מהטלפון הנייד
מאת iTK98 בתאריך 03/04/12, תחת כללי
עם השתכללות הטלפונים הניידים, התחליפיות בינם לבין מחשבים ניידים תגבר, זו דעתי בכל מקרה. היו מקרים שבהם היה בידי טלפון הנייד בלבד והייתי צריך לגשת לשרת בכדי לבדוק את מצבו, השימוש בקונסול דרך טלפון נייד הוא לא הכי נוח, בעיקר כאשר יש בידי טלפון נייד שהוא לא מהכי משוכללים, אולי בטלפונים ניידים חדשים יותר המצב שונה. עניין נוסף שהייתי צריך לטפל בו זה עניין ההרשאות והאבטחה של השרת, אני לא מעוניין שמהטלפון הנייד תהיה גישה בלתי מוגבלת לשרת.
השרת שלי מבוסס CentOS ויש לי טלפון נייד מבוסס סימביאן, הקלינט SSH שלי הוא PuTTY שהומר לסימביאן ואני עושה שימוש בהזדהות על-ידי מפתחות א-סמטרים (אני לא אכסה איך יוצרים מפתחות כאלה, איך מגדירים את השימוש שלהם בשרת ואיך ממירים מהסטדנרט של OpenSSH לסטדנדרט של PuTTY או PPK). ההתחברות לשרת קלילה, אך ברגע שאני מגיע לקונסול אני מגלה קושי לשלוח פקודות לשרת, כמו כן אני מעדיף שהמשתמש יהיה מוגבל בפקודות שהוא יכול להריץ. העניין הופך להיות מורכב כי יש פקודות שאני כן מעוניין שהוא יהיה מסוגל להריץ – אך הן דורשות הרשאות מנהל מערכת.
הפתרון שהגעתי אליו הוא שימוש בסקריפט שיוצר תפריט שהמשתמש מוגבל אליו לאחר שהוא מתחבר. התפריט גם בעל קיצורי דרך, כך שלא צריך לכתוב את הפקודה באופן מלא, רק את המספר התואם בתפריט. לבסוף הסקריפט יגבל את המשתמש אך ורק לאפשרויות שבתפריט מה שימנע מהמשתמש להריץ פקודות אחרות. בעניין הפקודות שצריכות הרשאת מנהל מערכת, אני אעשה שימוש ב-sudo.
יצירת הקבוצה (בשביל sudoers, אני מעדיף לעבוד עם הרשאת קבוצות) ויצירת המשתמש. שימו לב ש-shell יצביע על סקריפט עתידי שניצור "שיכלא" את המשתמש לתפריט.
groupadd staff adduser -c "Mobile access" -d /home/mobile -s /home/mobile/login.sh -G staff -m mobile
השלב הבא הוא מתן הרשאה לחברים בקבוצה staff להריץ פקודות שצריכות הרשאת מנהל מערכת, זאת נעשה על-ידי הוספת השורה הבאה ל-/etc/sudoers
%staff ALL=/sbin/iptables -nvL, /sbin/ifconfig -a
באופן הזה, בפעם הראשונה שהמשתמש ירצה להריץ פקודה שצריכה הרשאות גבוהות יותר הוא ישאל בדבר הסיסמאת משתמש שלו.
השלב האחרון הוא יצירת הסקריפט login.sh בספריית הבית של המשתמש (/home/mobile/login.sh), אותה ניצור בעזרת המנהל מערכת (המשתמש לא יוכל לערוך, אך עדיין למחוק אותה, אם נרצה להגן על הקובץ גם ממחיקה נעשה שימוש ב-chattr +i)
#!/bin/bash # Menu skel by iTK98 # for https://binaryvision.co.il # License, Public Domain # Setting 'bold' and 'normal' text bold=`tput bold` normal=`tput sgr0` # Getting terminal width, # The script will not run if there are less than 50 columns width=`tput cols` # Default pause method, wait for any input from user or for timeout in 15 seconds function pause(){ echo "" echo "" read -t 15 -s -n 1 -p "$*" } if [ "$width" -lt 50 ]; then echo "${bold}Terminal isn't width enough --- Aborting.${normal}" pause exit 1 fi # Clear the screen. clear # If you want to print a banner echo "Welcome to iTK98 Solutions," pause 'Press any key to continue' # Lock into the menu while true; do # Print the menu to the user clear echo "Logins Processes Network" echo "01. last 11. ps 21. ifconfig" echo "02. who 12. top 22. iptables" echo "" echo "Storage other" echo "31. df 41. something" echo "" echo "99. Quit" # Get an input from the user read -s -n 1 -N 2 command # Run the respective command if [ "$command" = "01" ]; then clear /usr/bin/last|head -n 10 pause 'Press any key to continue' elif [ "$command" = "02" ]; then clear /usr/bin/w pause 'Press any key to continue' elif [ "$command" = "11" ]; then clear /bin/ps aux pause 'Press any key to continue' elif [ "$command" = "12" ]; then clear /usr/bin/top -d 5 elif [ "$command" = "21" ]; then clear sudo /sbin/ifconfig -a|more pause 'Press any key to continue' elif [ "$command" = "22" ]; then clear sudo /sbin/iptables -nvL|more pause 'Press any key to continue' elif [ "$command" = "31" ]; then clear df -h pause 'Press any key to continue' elif [ "$command" = "41" ]; then clear echo "${bold}Not implimented yet.${normal}" pause 'Press any key to continue' elif [ "$command" = "99" ]; then echo "Byebye" exit 0 fi done exit 255
נוודא כי הקובץ ניתן להרצה על-ידי כולם
chmod ugo+rx /home/mobile/login.sh
ובכדי לבחון אם המשתמש כאשר הוא נכנס למערכת הוא נכנס אל הסקריפט נריץ את הפקודה
su - mobile
תרגישו חופשי לבצע שינויים בסקריפט ולהפיץ מחדש, הסקריפט הזה הוא לא יותר משלד – רעיון. ניתן להוריד את הסקריפט מכאן. אני מקווה שבעזרת הסקריפט הזה תמצאו כי קל יותר "לנהל" את השרת דרך הטלפון הנייד.
11/04/12 בשעה 23:03
מאמר מעולה איציק.
אהבתי ולמדתי עוד כמה דברים חדשים 🙂
19/04/12 בשעה 20:44
רעיון יפה.
אני אישית משתמש במקלדת של המסך מגע (כן, נורא) וסובל בשקט. 🙂