ניהול וניטור השרת על ידי קוקפיט
https://cockpit-project.org/
כדי למצוא באגים שנמצאים במעבד ולא תוקנו
שני כלים לניטור התעבורה במערכת,
בכדי לדבג תהליך ניתן להריץ את
https://cockpit-project.org/
כדי למצוא באגים שנמצאים במעבד ולא תוקנו
$ cat /proc/cpuinfo | grep bugs
תיקיית /proc
מכילה מידע על התהליכים שרצים במערכת, כל תהליך מקבל תיקייה, שם התיקייה הוא מספר התהליך, ניתן לתשאל את התיקייהשני כלים לניטור התעבורה במערכת,
iftop
and nethoge
שניהם מציגים איזה תוכנה שולחת כמה ומתי.בכדי לדבג תהליך ניתן להריץ את
journalctl _PID=1233
כשהמספר הוא מספר התהליךבכדי לחקור מעט יותר תוכניות exec בלינוקס אפשר להשתמש בפקודת strings שישלוף מהבינרי את כל המחרוזות שהוא מכיל, לדוגמה
strings /proc/1/exe
לקבל מידע על החומרה שבמחשב
להלן דוגמאות
dmidecode
, lshw
כל מערכת הפעלה פועלת על חומרה ממנה בנוי המחשב, בכדי לקבל את המידע על חומרת המחשב ישנה טבלה שמחזיקה את כל הערכים דבר הנקרא SMBIOS בעבר זה נקרא DMI ושם לינוקס נמצאת, את המידע אפשר להשיג על ידי פקודת dmidecode
בהרצה פשוטה הפקודה תחזיר מלל ארוך מאוד בקשר לכל הידוע לה על החומרה, כדי לקבל את המידע הרלוונטי שאנו מחפשים על המערכת אפשרי להשתמש בדגלים -t או -s כשהראשון מאפשר לנו לחפש לפי type והשני לפי מחרוזתלהלן דוגמאות
$ sudo dmidecode -s chassis-manufacturerכלי נוסף שמציג מידע על המערכת הוא lswh, בשביל לא לטבוע בכמות המידע אפשר לפלטר את הפלט על ידי שימוש בקטגוריה (Class) של החלק שמעניין אותנו, לדוגמה
ASUSTeK COMPUTER INC.
$ sudo dmidecode -s processor-version
Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
$ sudo dmidecode -t bios
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 3.0.0 present.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: American Megatrends Inc.
...
$ sudo lshw -C CPU
*-cpu
description: CPU
product: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
vendor: Intel Corp.
physical id: 11
או להשתמש עם דגל -short
שיציג תצוגה מקוצרת שמחולקת לפי קטגוריות$ sudo lshw -short
H/W path Device Class Description
======================================================
system X556URK
/0 bus X556URK
/0/0 memory 64KiB BIOS
אחסון
דגל -i יתן מידע על החומרה עצמה ואם היא תומכת ב SMART
לייבל
smarctl
, lsblk
בכדי לקבל רשימה ויזואלית של התקני האחסון שקיימים במערכת ותצוגת המחיצות שלהם ניתן להריץ את lsblk
, כך ניתן לדעת איזה התקן מעוגן לאיזה סוקט$ lsblk
...
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 260M 0 part /boot/efi
├─sda2 8:2 0 16M 0 part
├─sda3 8:3 0 79.4G 0 part
...
בכל דיסק מודרני ישנה מערכת שמספקת נתונים על בריאות הדיסק ואם הוא לקראת סוף חייו נקרא בימינו smart בכדי לקבל נתונים על הדיסק אותו אנו רוצים לחקור ניקח את שם הדיסק ונעביר לתוכנת smartctl
שהיא בעצם תוכנה שיודעת לבדוק את הדיסק לקבל את הנתונים ולתת אינפורמציה על הדיסקדגל -i יתן מידע על החומרה עצמה ואם היא תומכת ב SMART
$ sudo smartctl -i /dev/sda
תגית short מסמלת טסט מקוצר $ sudo smartctl -t short /dev/sdaניתן לחזור לבדוק תוצאות לאחר הבדיקה על ידי -l
לייבל
devstat
יחזיר נתונים חשובים על הדיסק, טמפרטורה, כמות reboots שהדיסק עשה ועוד $ sudo smartctl -l devstat /dev/sda
לייבל xerror
יחזיר את השגיאות מהבדיקה שנעשתה$ sudo smartctl -l xerror /dev/sdaלייבל
selftest
יציג סיכום של הבדיקה$ sudo smartctl -l selftest /dev/sda
גראב וקרנל
הקרנל הוא החלק הכי נמוך במערכת שמתקשר עם החומרה, ניתן להרחיב את הקרנל עם מודולים וכך להרחיב את התמיכה של לינוקס בחומרה נוספת.
כל עדכון של קרנל שומר את הגרסאות האחרות שהיו במערכת.
גראב הוא התהליך שמנהל את עליית המערכת, הוא בוחר עם איזה קרנל לעלות ועם אלו הגדרות, בכדי לערוך את גרסת הקרנל שאיתה המערכת תעלה ניתן לבחור בתפריט עליית הגראב "מתקדם" ושם לבחור קרנל מהרשימה.
דרך קבועה יותר(?) שתעלה את המערכת לקרנל מסויים היא להקיש C בתפריט הגראב ובקובץ שנפתח לשנות את ערך הקרנל לגרסה ישנה.
נהוג לשמור 2 גרסאות קרנל דבר שהמערכת תעשה לבד על ידי הרצה של
הקרנל הוא החלק הכי נמוך במערכת שמתקשר עם החומרה, ניתן להרחיב את הקרנל עם מודולים וכך להרחיב את התמיכה של לינוקס בחומרה נוספת.
כל עדכון של קרנל שומר את הגרסאות האחרות שהיו במערכת.
גראב הוא התהליך שמנהל את עליית המערכת, הוא בוחר עם איזה קרנל לעלות ועם אלו הגדרות, בכדי לערוך את גרסת הקרנל שאיתה המערכת תעלה ניתן לבחור בתפריט עליית הגראב "מתקדם" ושם לבחור קרנל מהרשימה.
דרך קבועה יותר(?) שתעלה את המערכת לקרנל מסויים היא להקיש C בתפריט הגראב ובקובץ שנפתח לשנות את ערך הקרנל לגרסה ישנה.
נהוג לשמור 2 גרסאות קרנל דבר שהמערכת תעשה לבד על ידי הרצה של
# Ubuntu
$ apt —purge autoremove
# CentOS
$ rpm -q kernel
$ yum install yum-utils
$ package-cleanup —oldkernels —count=2
שינוי ברירת מחדל של עליית המערכת נעשה על ידי עריכת הקובץ/etc/default/grubושינוי הערך המספרי של
GRUB_DEFAULT=0
לאינדקס הרצויבניית חבילת deb ו-repo
בצורה הבסיסית ביותר
בניה של חבילה להפצות מבוססות
בצורה הבסיסית ביותר
בניה של חבילה להפצות מבוססות
debian
נעשית על ידי יצירת ההיררכיה הבאה כשהבינרי אותו אנו רוצים לארוז נמצא בתיקיית bin במקרה שלי זה הקובץ mycode
test
├── DEBIAN
│ └── control
└── usr
└── bin
└── mycode
הקובץ control
מכיל את הוראות האריזה ולאיזה ארכיטקטורה, הוא נראה כךPackage: mycode
Version: 1.0
Section: custum
Priorty: optional
Architecture: all
Essential: no
Installed-size: 1024
Maintainer: any@email.com
Description: POC
הרצה של הפקודה הבאה תיצור לנו קובץ deb במיקום בו הרצנו, כשהערך test
הינו התיקייה בה נמצא הקוד והוראות האריזה$ dpkg-deb --build test
בכדי ליצור repo עצמאי ניצור תיקיית debian בתיקיית השרת ונעתיק לשם את קובץ ה-deb אותו ארזנו, הרצה של הפקודה הבאה תאגד את חבילות הdeb שזמינות בשרת $ cd /var/www/html/debian
$ dpkg-scanpackages . | gzip -c9 > Packages.gz
כעת אפשרי להוסיף את ה-repo הזה מכל מחשב אחר, כדי להוסיף את ה-repo לרשימת המקורות של המחשב כל שיש לעשות הוא להוסיף את השורה הבאה (וזה בהנחה שהמקור אכן מהימן)deb [trusted=yes] https://myrepo_address/debian ./לקובץ המקורות של המערכת הלא הוא
/etc/apt/sources.list
רק לרענן את מנהל החבילות עם sudo apt update
וניתן להתקין את החבילה שיצרנו כמו כל חבילה אחרת👍1
לקבל מידע על המערכת
פקודת
פקודת
hostnamectl
מאפשרת לנו לקבל מידע על המערכת שאנו רצים ממנה, סוג הוירטואליזציה אם ישנה, איזו גרסה היא, גרסת קרנל, ארכיטקטורה ועוד נתונים מעניינים$ hostnamectl
Static hostname: home
Icon name: computer-desktop
Chassis: desktop
Machine ID: 3409d191261833093f3d3a64c8eac6bd
Boot ID: 63763ffab2a9432490a5bbffd272ee65
Operating System: Ubuntu 20.04 LTS
Kernel: Linux 5.4.0-40-generic
Architecture: x86-64
@learnlinuxnoteקובץ /etc/shadow
והגדרות ברירת מחדל
קובץ /etc/shadow מכיל את שמות המשתמשים שבמערכת ואת המידע עליהם, אם נפתח את הקובץ שורות יראו בצורה מבולגנת מאוד, להלן הסבר מה נמצא ומה הוא אומר.
כך נראות הקובץ, כפי שניתן לראות לא כל משתמש הכוונה ליוזר ממשי אלא ליוזר בהגדרת המערכת
אם כן מה יש לנו
1.
1. שם המשתמש
2. חלק זה מורכב מ3 חלקים שמופרדים בנקודה
השלישי
סימן קריאה או כוכבית במיקום הסיסמה, מסמל שהסיסמה אינה תקינה.
3. תאריך שינוי אחרון של הסיסמה (מספר הימים מ1970)
4. מספר הימים שחייבים לעבור כדי שהמשתמש יוכל להחליף את הסיסמה שלו.
5. פג התוקף של הסיסמה (ימים)
6. מספר ימים לפני פג התוקף בהם תוצג הזהרה למשתמש.
7. מספר הימים שחשבון המשתמש יחסם לאחר שסיסמת המשתמש פגה.
8. הזמן בו החשבון נחסם
את המידע המעניין הזה נוכל לראות ולערוך על ידי הרצת הפקודה הבאה
והגדרות ברירת מחדל
קובץ /etc/shadow מכיל את שמות המשתמשים שבמערכת ואת המידע עליהם, אם נפתח את הקובץ שורות יראו בצורה מבולגנת מאוד, להלן הסבר מה נמצא ומה הוא אומר.
כך נראות הקובץ, כפי שניתן לראות לא כל משתמש הכוונה ליוזר ממשי אלא ליוזר בהגדרת המערכת
$ sudo tail /etc/shadow
...
nvidia-persistenced:*:18364:0:99999:7:::
libvirt-qemu:!:18373:0:99999:7:::
libvirt-dnsmasq:!:18373:0:99999:7:::
user:$6$X.69XaHtriY5x.SZ$Dj4aF9ebhQxn6Sr5DlVjUpJ4TPp7gpIsnugMV8gSJEHA01h4BwymJJgeZ4JzlBGhZJ/SxPnbZZC7a5K/f3di01:18382:0:99999:7:::
נתחיל בזה שמדובר על שורה של ערכים בהם כל ערך מופרד על ידי :
, לשם הדוגמה אני בוחר להדגים על משתמש "אמיתי" שממלא כמעט את כל הערכים.אם כן מה יש לנו
1.
user:
2. $6$X.69XaHtriY5x.SZ$Dj4aF9ebhQxn6Sr5DlVjUpJ4TPp7gpIsnugMV8gSJEHA01h4BwymJJgeZ4JzlBGhZJ/SxPnbZZC7a5K/f3di01:
3. 18382:
4. 0:
5. 99999:
6. 7:
7. :
8. :
ולהלן ההסבר1. שם המשתמש
2. חלק זה מורכב מ3 חלקים שמופרדים בנקודה
$type$salt$hashed
הראשון type
סוג ההצפנה בה הסיסמה מוצפנת, להלן מפתח$1$ – MD5
$2a$ – Blowfish
$2y$ – Eksblowfish
$5$ – SHA-256
$6$ – SHA-512
השני salt
הוא מידע נוסף שנועד לחזק את ההצפנה.השלישי
hashed
גיבוב הטקסט של ההצפנה.סימן קריאה או כוכבית במיקום הסיסמה, מסמל שהסיסמה אינה תקינה.
3. תאריך שינוי אחרון של הסיסמה (מספר הימים מ1970)
4. מספר הימים שחייבים לעבור כדי שהמשתמש יוכל להחליף את הסיסמה שלו.
5. פג התוקף של הסיסמה (ימים)
6. מספר ימים לפני פג התוקף בהם תוצג הזהרה למשתמש.
7. מספר הימים שחשבון המשתמש יחסם לאחר שסיסמת המשתמש פגה.
8. הזמן בו החשבון נחסם
את המידע המעניין הזה נוכל לראות ולערוך על ידי הרצת הפקודה הבאה
$ chage -l userבכדי לקבוע ערכי ברירת מחדל לכל משתמש חדש שיוצר, ניתן לערוך את הקובץ הבא
Last password change : 12 19, 2019
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
$ less /etc/login.defsלינוקס מספקת לנו אפשרות להגדיר ערכי ברירת מחדל לכל משתמש שיווצר, כפי הערכים שמוגדרים בקובץ
...
# Password aging controls:
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
...
/etc/login.defs
, כדי לראות אלו הגדרות ברירת מחדל יש ליצירת משתמש.$ sudo useradd -Dקובץ זה של הגדרות ברירת המחדל ממוקם בנתיב של כל הגדרות ברירת המחדל של כלי המערכת
[sudo] password for myuser:
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
/etc/default/
תחת שם הפקודה useradd
@learnlinuxnote👍1