לומדים לינוקס
322 subscribers
3 links
Download Telegram
ניהול וניטור השרת על ידי קוקפיט
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 
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.
...

כלי נוסף שמציג מידע על המערכת הוא lswh, בשביל לא לטבוע בכמות המידע אפשר לפלטר את הפלט על ידי שימוש בקטגוריה (Class) של החלק שמעניין אותנו, לדוגמה
$ 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
אחסון 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 גרסאות קרנל דבר שהמערכת תעשה לבד על ידי הרצה של
# 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 מכיל את שמות המשתמשים שבמערכת ואת המידע עליהם, אם נפתח את הקובץ שורות יראו בצורה מבולגנת מאוד, להלן הסבר מה נמצא ומה הוא אומר.

כך נראות הקובץ, כפי שניתן לראות לא כל משתמש הכוונה ליוזר ממשי אלא ליוזר בהגדרת המערכת

$ 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