# Ma'ruza 5. Operatsion tizimlarda xavfsizlik. Xavfsizlikni ta'minlash usullari. Hisob qaydnomalari. Kirish huquqlari

---

## Ma'ruza rejasi

1. OT xavfsizligi tushunchasi va asosiy atamalar
2. Tahdidlar, zaifliklar va buzg'unchi modeli
3. Himoyalangan tizimlarni qurish tamoyillari
4. OT xavfsizligini ta'minlash usullari
5. Kirishni boshqarish modellari (DAC, MAC, RBAC, ABAC)
6. Xavfsizlikning formal modellari (kirish matritsasi, Bell–LaPadula, Biba)
7. Identifikatsiya, autentifikatsiya, avtorizatsiya, audit
8. Linuxda hisob qaydnomalari
9. Windowsda hisob qaydnomalari
10. Linuxda kirish huquqlari: huquq bitlari, maxsus bitlar, umask, ACL, capabilities
11. Windowsda kirish huquqlari: xavfsizlik deskriptori, DACL, ACE, NTFS ruxsatlari
12. Imtiyozlarni oshirish: sudo va UAC
13. Mandatli mexanizmlar: SELinux, AppArmor, Windows yaxlitlik darajalari
14. Amaliy topshiriqlar
15. Nazorat savollari va glossariy

---

# 1. Operatsion tizim xavfsizligi tushunchasi

**Operatsion tizim xavfsizligi** — bu OTning saqlanayotgan va qayta ishlanayotgan ma'lumotlarni, shuningdek o'z resurslarini (protsessor, xotira, fayllar, qurilmalar, tarmoq ulanishlari) ruxsatsiz kirish, o'zgartirish, yo'q qilish va normal ishlashning buzilishidan himoya qilish xususiyatidir.

Operatsion tizim ma'lumotlarni himoyalashda alohida o'rin tutadi:

* barcha amaliy dasturlar OT **ustida** ishlaydi va uning mexanizmlaridan foydalanadi;
* agar OT buzilgan (kompromat qilingan) bo'lsa, hech qanday amaliy himoya (antivirus, ilovadagi shifrlash, ma'lumotlar bazasidagi parol) xavfsizlikni kafolatlay olmaydi;
* aynan OT **qaysi subyekt** **qaysi obyektga** kira olishini hal qiladi.

### Subyektlar va obyektlar

Axborotni himoyalash nazariyasida tizimdagi barcha mohiyatlar ikki toifaga bo'linadi.

| Tushuncha | Ta'rif | Misollar |
|---|---|---|
| **Subyekt** | Harakatni boshlaydigan faol mohiyat | Foydalanuvchi, jarayon, oqim, xizmat |
| **Obyekt** | Murojaat qilinadigan passiv mohiyat | Fayl, katalog, qurilma, xotira segmenti, soket, reyestr kaliti, kanal |
| **Amal (huquq)** | Subyektning obyekt ustidagi harakati | O'qish, yozish, bajarish, o'chirish, egasini o'zgartirish |

Amalda **OTdagi subyekt — bu biror hisob qaydnomasi nomidan bajarilayotgan jarayon**. Foydalanuvchining o'zi fayllarga murojaat qilmaydi — buni u ishga tushirgan dastur bajaradi, OT esa dasturga foydalanuvchining identifikatori va vakolatlarini beradi.

### CIA triadasi

Himoyalanadigan axborotning asosiy xususiyatlari:

* **Konfidensiallik (Confidentiality)** — axborot faqat ruxsat berilganlar uchun ochiq.
  *Misol: boshqa foydalanuvchi `/home/ali/diplom.docx` faylini o'qiy olmaydi.*
* **Yaxlitlik (Integrity)** — axborotni ruxsatsiz o'zgartirib bo'lmaydi.
  *Misol: oddiy foydalanuvchi `/etc/passwd` yoki `C:\Windows\System32\kernel32.dll` ni o'zgartira olmaydi.*
* **Foydalanish imkoniyati (Availability)** — vakolatli foydalanuvchi axborot va xizmatlarga kerakli paytda kira oladi.
  *Misol: bitta jarayon butun xotirani egallab, tizimni boshqalar uchun "qotirib" qo'ya olmaydi.*

Ko'pincha triadaga quyidagilar qo'shiladi:

* **Hisobdorlik (Accountability)** — har bir harakatni aniq subyekt bilan bog'lash mumkin;
* **Rad etib bo'lmaslik (Non-repudiation)** — subyekt bajargan harakatini inkor eta olmaydi;
* **Haqiqiylik (Authenticity)** — subyekt yoki ma'lumotlarning haqiqiyligi tasdiqlangan.

---

# 2. Tahdidlar, zaifliklar va buzg'unchi modeli

### Asosiy atamalar

* **Tahdid** — xavfsizlikni buzishi mumkin bo'lgan potentsial hodisa yoki harakat.
* **Zaiflik** — tahdid amalga oshishi mumkin bo'lgan tizimning zaif joyi (koddagi xato, noto'g'ri sozlama, zaif parol).
* **Hujum** — zaiflikdan foydalanishga qaratilgan amalga oshirilgan urinish.
* **Xavf (risk)** — tahdidning amalga oshish ehtimoli va oqibatlarining og'irligi birikmasi.

```
Tahdid  +  Zaiflik  →  Hujum  →  Zarar
```

### OT uchun tahdidlar tasnifi

| Toifa | Misollar |
|---|---|
| Ruxsatsiz kirish | Parolni tanlash, sessiyani o'g'irlash, birovning hisob qaydnomasidan foydalanish |
| Imtiyozlarni oshirish | root huquqlarini olish uchun yadro yoki setuid-dasturdagi xatodan foydalanish |
| Zararli dasturlar | Viruslar, chuvalchanglar, troyanlar, rutkitlar, to'lov talab qiluvchi dasturlar |
| Xizmat ko'rsatishni rad etish (DoS) | Fork-bomba, diskni to'ldirish, xotirani tugatish |
| Axborot sizib chiqishi | Birovning xotirasini o'qish, diskdagi qoldiq ma'lumotlar, yon kanallar |
| Yaxlitlikni buzish | Tizim fayllarini almashtirish, jurnallarni o'zgartirish |
| Ijtimoiy muhandislik | Fishing, foydalanuvchini aldab dastur ishga tushirtirish |

### Klassik zaiflik misoli — fork-bomba

```bash
:(){ :|:& };:
```

`:` funksiyasi rekursiv ravishda fonda o'zining ikki nusxasini ishga tushiradi. Jarayonlar soni eksponensial o'sadi va jarayonlar jadvali to'lib qoladi. OT vositalari bilan himoya — **resurslarni cheklash** (`ulimit -u`, `/etc/security/limits.conf`, cgroups):

```bash
ulimit -u 200         # joriy foydalanuvchi uchun 200 tadan ortiq jarayon emas
```

### Buzg'unchi modeli

Himoyani loyihalashda **kimdan** himoyalanishimiz aniqlanadi:

* **tashqi buzg'unchi** — hisob qaydnomasiga ega emas, tarmoq orqali hujum qiladi;
* **ichki imtiyozsiz** — oddiy hisob qaydnomasiga ega (kompyuter sinfidagi talaba);
* **ichki imtiyozli** — huquqlarini suiiste'mol qiluvchi administrator;
* qonuniy foydalanuvchi nomidan ishga tushirilgan **zararli dastur**.

Oxirgi holat ayniqsa muhim: foydalanuvchi ishga tushirgan dastur uning **barcha** huquqlarini oladi. Shuning uchun hisob qaydnomasi huquqlarini cheklash zararli dasturdan keladigan zararni bevosita cheklaydi.

---

# 3. Himoyalangan tizimlarni qurish tamoyillari

1975-yilda J. Saltzer va M. Schroeder himoyalangan OTlarni loyihalashda hozirgacha asos bo'lib xizmat qilayotgan tamoyillarni ishlab chiqdilar.

| № | Tamoyil | Mazmuni | OTdagi misol |
|---|---|---|---|
| 1 | **Mexanizm tejamkorligi** (Economy of mechanism) | Himoya mexanizmi oddiy va kichik bo'lishi kerak | Mikroyadro, huquqlarni tekshirishning kichik kodi |
| 2 | **Standart bo'yicha xavfsizlik** (Fail-safe defaults) | Aniq ruxsat bo'lmasa — kirish taqiqlanadi | Windowsda bo'sh DACL = hammaga kirish taqiqlangan |
| 3 | **To'liq vositachilik** (Complete mediation) | Obyektga har bir murojaat tekshiriladi | Har bir `open()` da huquqlarni tekshirish |
| 4 | **Ochiq dizayn** (Open design) | Xavfsizlik algoritmning maxfiyligiga bog'liq bo'lmasligi kerak | Ochiq parol xeshlash algoritmlari |
| 5 | **Imtiyozlarni ajratish** (Separation of privilege) | Muhim harakat uchun bir nechta shart talab qilinadi | Parol + ikkinchi omil; ikki imzo |
| 6 | **Minimal imtiyozlar** (Least privilege) | Subyekt faqat zarur huquqlarni oladi | Veb-server `root` emas, `www-data` nomidan ishlaydi |
| 7 | **Umumiy mexanizmlar minimumi** (Least common mechanism) | Foydalanuvchilar uchun umumiy resurslarni kamaytirish | Har bir foydalanuvchi uchun alohida `/tmp` |
| 8 | **Psixologik maqbullik** (Psychological acceptability) | Himoya qulay bo'lishi kerak, aks holda uni chetlab o'tishadi | Biometriya, yagona kirish (SSO) |

### Murojaatlar monitori (Reference Monitor)

Har qanday OTda kirishni nazorat qilish asosida yotgan konsepsiya. **Murojaatlar monitori** — yadroning komponenti bo'lib, subyektlarning obyektlarga *barcha* murojaatlari u orqali o'tadi.

```
 ┌──────────┐   so'rov (subyekt, obyekt, amal)        ┌──────────────────┐
 │ Subyekt  │ ─────────────────────────────────────▶ │ Murojaatlar      │
 │ (jarayon)│                                        │ monitori (yadro) │
 └──────────┘                                        └────────┬─────────┘
                                                              │ siyosat bo'yicha
                                                              ▼ tekshirish
                                        ┌───────────────┐   ┌───────────┐
                                        │ Qoidalar bazasi│  │  Audit    │
                                        │ (huquqlar, ACL)│  │  jurnali  │
                                        └───────────────┘   └───────────┘
                                                              │
                                              ruxsat berish / taqiqlash
                                                              ▼
                                                        ┌──────────┐
                                                        │  Obyekt  │
                                                        └──────────┘
```

Murojaatlar monitoriga qo'yiladigan talablar:

1. **Muqarrarlik** — uni chetlab o'tib bo'lmaydi;
2. **Himoyalanganlik** — uni foydalanuvchi rejimidan o'zgartirib bo'lmaydi;
3. **Tekshiriluvchanlik** — uni tekshirish va sinovdan o'tkazish mumkin bo'lgan darajada kichik.

Linuxda monitor vazifasini VFSdagi huquq tekshiruvlari va **LSM** (Linux Security Modules) freymvorki bajaradi; Windowsda — yadro ijro tizimi tarkibidagi **Security Reference Monitor (SRM)**.

### Ishonchli hisoblash bazasi (TCB)

**TCB (Trusted Computing Base)** — tizim xavfsizligi to'g'ri ishlashiga bog'liq bo'lgan barcha apparat va dasturiy komponentlar majmuasi: yadro, yuklovchi, murojaatlar monitori, tizimga kirish jarayoni, root/SYSTEM huquqlariga ega dasturlar. TCB qanchalik kichik bo'lsa, uni tekshirish shunchalik oson va tizim shunchalik ishonchli.

---

# 4. OT xavfsizligini ta'minlash usullari

Himoya usullari bir necha guruhga bo'linadi. Hech bir usul o'zi yetarli emas — **eshelonlangan himoya (Defense in Depth)** qo'llaniladi.

### 4.1. Apparat usullari

* **Protsessor rejimlari** (himoya halqalari): yadro 0-halqada, ilovalar 3-halqada ishlaydi. Foydalanuvchi rejimidan imtiyozli ko'rsatmalar istisno (exception) keltirib chiqaradi.
* **MMU va virtual xotira** — har bir jarayon o'z manzil maydoniga ega va boshqa jarayonlar xotirasini ko'rmaydi.
* **NX/XD biti** — ma'lumotlar sahifalaridan (stek, uyum) kodni bajarishni taqiqlash.
* **SMEP/SMAP** — yadroga foydalanuvchi maydonidagi kodni bajarish/o'qishni taqiqlash.
* **TPM** (Trusted Platform Module) — kalitlarni saqlash, o'lchanadigan yuklash.
* **Secure Boot** — faqat imzolangan yuklovchi va yadroni yuklash.

### 4.2. Dasturiy (tizimli) usullar

* Foydalanuvchilarni **identifikatsiya va autentifikatsiya qilish**;
* **Kirishni chegaralash** (huquqlar, ACL, mandatli belgilar);
* **Jarayonlarni izolyatsiya qilish** (manzil maydonlari, namespaces, konteynerlar, qum qutilari — sandbox);
* **Audit va jurnallash** (`journald`, `auditd`, Windows hodisalar jurnali);
* **Kriptografik himoya** (LUKS/BitLocker disk shifrlash, parollarni xeshlash);
* **Ekspluatatsiyadan himoya** (ASLR, stek kanareykalari, DEP, CFG);
* **Yaxlitlikni nazorat qilish** (paketlar imzosi, `dm-verity`, Windows Resource Protection);
* **Dasturiy ta'minotni yangilash** — ma'lum zaifliklarni bartaraf etish.

### 4.3. Ma'muriy (tashkiliy) usullar

* parollar va hisob qaydnomalarini bloklash siyosati;
* huquqlarni berishda minimal imtiyozlar tamoyili;
* hisob qaydnomalari va huquqlarni muntazam audit qilish;
* zaxira nusxalash (3-2-1 qoidasi);
* foydalanuvchilarni o'qitish.

### 4.4. Eshelonlangan himoya sxemasi

```
┌──────────────────────────────────────────────────────────┐
│ Jismoniy himoya (server xonasiga kirish, korpus qulfi)  │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Tarmoq (tarmoqlararo ekran, yopiq portlar)           │ │
│ │ ┌──────────────────────────────────────────────────┐ │ │
│ │ │ OT (hisob qaydnomalari, autentifikatsiya)        │ │ │
│ │ │ ┌──────────────────────────────────────────────┐ │ │ │
│ │ │ │ Kirish huquqlari (DAC, ACL, MAC)             │ │ │ │
│ │ │ │ ┌──────────────────────────────────────────┐ │ │ │ │
│ │ │ │ │ Ilova (kiritishni tekshirish, sandbox)   │ │ │ │ │
│ │ │ │ │ ┌──────────────────────────────────────┐ │ │ │ │ │
│ │ │ │ │ │ Ma'lumotlar (shifrlash, zaxira)      │ │ │ │ │ │
│ │ │ │ │ └──────────────────────────────────────┘ │ │ │ │ │
│ │ │ │ └──────────────────────────────────────────┘ │ │ │ │
│ │ │ └──────────────────────────────────────────────┘ │ │ │
│ │ └──────────────────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
```

---

# 5. Kirishni boshqarish modellari

**Kirishni boshqarish (Access Control)** — subyekt obyekt ustida amal bajara olishini aniqlaydigan mexanizm. To'rtta asosiy model ajratiladi.

### 5.1. Diskretsion kirishni boshqarish (DAC)

**DAC (Discretionary Access Control)** — obyektga huquqlarni uning **egasi** o'z xohishiga ko'ra belgilaydi (*discretion* — ixtiyor).

* Fayl egasi boshqa foydalanuvchilarga huquq berishi yoki ularni qaytarib olishi mumkin.
* Klassik Unix/Linux (`rwx` bitlari, ACL) va Windowsda (NTFS DACL) qo'llaniladi.
* **Kamchiligi:** agar foydalanuvchi zararli dasturni ishga tushirsa, u foydalanuvchi nomidan uning fayllariga huquqlarni istalgan kishiga tarqatishi mumkin. Axborot tarqalishi ustidan nazorat yo'q: o'qish huquqiga ega foydalanuvchi faylni nusxalab, nusxani hammaga ochiq qilishi mumkin.

### 5.2. Mandatli kirishni boshqarish (MAC)

**MAC (Mandatory Access Control)** — huquqlar egasi tomonidan emas, **tizim siyosati** tomonidan belgilanadi. Har bir subyekt va obyektga **xavfsizlik belgisi** (maxfiylik darajasi, toifa, tur) beriladi. Foydalanuvchi, hatto egasi bo'lsa ham, siyosatni o'zgartira olmaydi.

* Misollar: SELinux, AppArmor, Windows yaxlitlik darajalari (MIC), maxsus himoyalangan OTlar (Astra Linux).
* Harbiy va davlat tizimlarida, shuningdek xizmatlarni izolyatsiya qilish uchun qo'llaniladi.

### 5.3. Rolga asoslangan kirishni boshqarish (RBAC)

**RBAC (Role-Based Access Control)** — huquqlar foydalanuvchilarga to'g'ridan-to'g'ri emas, **rollarga** beriladi; foydalanuvchilarga esa rollar tayinlanadi.

```
Foydalanuvchi ──▶ Rol ──▶ Huquqlar to'plami
  Ali          Buxgalter   /data/finance ni o'qish/yozish
  Vali         Buxgalter
  Sardor       MB admini   postgresql xizmatini boshqarish
```

* Ma'murlashni soddalashtiradi: xodim boshqa lavozimga o'tganda faqat uning roli o'zgaradi.
* OTda RBACning soddalashtirilgan analogi — **guruhlar** (Linux guruhlari, Windows guruhlari, Active Directory).

### 5.4. Atributlarga asoslangan kirishni boshqarish (ABAC)

**ABAC (Attribute-Based Access Control)** — qaror subyekt, obyekt va muhit atributlari bo'yicha qabul qilinadi.

*Qoida misoli:* "kadrlar bo'limi xodimi shaxsiy hujjatlarni **faqat ish vaqtida** va **faqat korporativ tarmoqdan** o'qishi mumkin".

Bulutli tizimlarda (AWS IAM, Azure), Windowsda — Dynamic Access Control.

### Modellarni taqqoslash

| Xususiyat | DAC | MAC | RBAC | ABAC |
|---|---|---|---|---|
| Huquqlarni kim belgilaydi | Obyekt egasi | Xavfsizlik administratori (siyosat) | Administrator rollar orqali | Atributlarga asoslangan siyosat |
| Moslashuvchanlik | Yuqori | Past | O'rta | Juda yuqori |
| Troyanlarga chidamlilik | Past | Yuqori | O'rta | Siyosatga bog'liq |
| Ma'murlash murakkabligi | Past | Yuqori | O'rta | Yuqori |
| Misol | `chmod`, NTFS | SELinux | Guruhlar, AD | AWS IAM |

---

# 6. Xavfsizlikning formal modellari

### 6.1. Kirish matritsasi (Lampson modeli, 1971)

Himoya tizimining holati **M** matritsa bilan tavsiflanadi: satrlar — subyektlar, ustunlar — obyektlar, `M[s, o]` katakda esa `s` subyektning `o` obyektga huquqlari to'plami yoziladi.

| Subyekt \ Obyekt | `report.txt` | `/usr/bin/gcc` | `printer` | `P2` jarayoni |
|---|---|---|---|---|
| **ali** | own, r, w | r, x | write | — |
| **vali** | r | r, x | — | — |
| **root** | r, w | r, w, x | write | kill |

Amalda matritsa juda katta va siyrak, shuning uchun ikki usulda saqlanadi:

* **ustunlar bo'yicha → kirishni boshqarish ro'yxatlari (ACL)**: har bir **obyekt** bilan "kim va u bilan nima qila oladi" ro'yxati bog'lanadi. Linux va Windows shunday tuzilgan.
* **satrlar bo'yicha → imkoniyatlar ro'yxati (Capability lists)**: har bir **subyekt** bilan "nimaga va qanday kirish huquqi bor" ro'yxati bog'lanadi (mandatlar, "chiptalar"). Misollar: Unix fayl deskriptorlari (ochiq deskriptor amalda capability hisoblanadi), FreeBSDdagi Capsicum, seL4 mikroyadrosi.

| | ACL | Capabilities |
|---|---|---|
| Qayerda saqlanadi | Obyekt yonida | Subyekt yonida |
| "Faylga kim kira oladi?" savoli | Oson | Qiyin |
| Hammadan huquqni qaytarib olish | Oson | Qiyin |
| Huquqni boshqa jarayonga berish | Administrator/ega orqali | Mandatni uzatish orqali |

### 6.2. Bell–LaPadula modeli (1973) — konfidensiallikni himoyalash

Maxfiylik darajalari tartiblangan: `Maxfiy emas < Konfidensial < Maxfiy < O'ta maxfiy`.

Qoidalar:

1. **No Read Up (NRU)** — oddiy xavfsizlik xususiyati: subyekt o'z darajasidan yuqori obyektni **o'qiy olmaydi**.
2. **No Write Down (NWD)** — *-xususiyat (star property): subyekt o'z darajasidan past obyektga **yoza olmaydi**.

Ikkinchi qoida sizib chiqishning oldini oladi: troyan "Maxfiy" ruxsatnoma bilan ishlasa ham, maxfiy ma'lumotlarni maxfiy bo'lmagan faylga yoza olmaydi.

```
 O'ta maxfiy       ▲ yozish ruxsat etilgan (write up)
 Maxfiy       ◀── subyekt
 Konfidensial      ▼ o'qish ruxsat etilgan (read down)
 Maxfiy emas
```

### 6.3. Biba modeli (1977) — yaxlitlikni himoyalash

Bell–LaPadula modeliga qarama-qarshi (dual), lekin **yaxlitlikni** himoya qiladi:

1. **No Read Down** — yaxlitlik darajasi yuqori subyekt past darajadagi "iflos" ma'lumotlarni o'qimaydi;
2. **No Write Up** — yaxlitlik darajasi past subyekt yuqori darajadagi ma'lumotlarni o'zgartira olmaydi.

**Amaliy misol — Windows MIC (Mandatory Integrity Control).** Internetdan sahifa ochgan brauzer jarayoni **Low** darajasi bilan ishlaydi. Zararli kod jarayonni egallab olsa ham, u foydalanuvchi fayllariga (**Medium** darajasi) yoza olmaydi, ya'ni *No Write Up* qoidasi amal qiladi.

### 6.4. Clark–Wilson modeli

Tijorat tizimlariga yo'naltirilgan: ma'lumotlarni **faqat tekshirilgan protseduralar** (tranzaksiyalar) orqali o'zgartirish mumkin, vazifalar esa xodimlar o'rtasida taqsimlanadi (biri to'lovni yaratadi, boshqasi tasdiqlaydi).

---

# 7. Identifikatsiya, autentifikatsiya, avtorizatsiya, audit

Tizimga kirish bosqichlar ketma-ketligidan o'tadi (**IAAA** modeli):

```
Identifikatsiya  →  Autentifikatsiya  →  Avtorizatsiya  →  Audit (hisob)
 "Sen kimsan?"       "Isbotla"          "Senga nima mumkin?" "Nima qilding?"
 login: ali          parol, kalit        huquqlar, guruhlar   hodisalar jurnali
```

| Bosqich | Savol | Linuxdagi mexanizm | Windowsdagi mexanizm |
|---|---|---|---|
| Identifikatsiya | Sen kimsan? | Foydalanuvchi nomi → UID | Foydalanuvchi nomi → SID |
| Autentifikatsiya | Haqiqatan ham o'zing aytgan kishimisan? | PAM, `/etc/shadow`, SSH kalitlari | LSASS, SAM, Kerberos, Windows Hello |
| Avtorizatsiya | Senga nima ruxsat etilgan? | UID/GID, huquqlar, ACL, capabilities, SELinux | Kirish markeri, DACL, imtiyozlar |
| Audit | Nima qilding? | `journald`, `auditd`, `/var/log/auth.log` | "Xavfsizlik" jurnali (Event Viewer) |

### Autentifikatsiya omillari

| Omil | Tavsif | Misollar |
|---|---|---|
| **Bilim** (something you know) | Foydalanuvchi biladigan narsa | Parol, PIN-kod, maxfiy savolga javob |
| **Egalik** (something you have) | Foydalanuvchida bor narsa | Smart-karta, token, TOTPli telefon, FIDO2 kaliti |
| **Xususiyat** (something you are) | Biometriya | Barmoq izi, yuz, ko'z qorachig'i |

**Ko'p faktorli autentifikatsiya (MFA)** — **turli** turdagi omillardan foydalanish. Parol + PIN-kod — bu MFA emas (ikkalasi ham "bilim" omili). Parol + telefondagi ilovadan kod — MFA.

### Parollarni saqlash

OT **hech qachon parolni ochiq ko'rinishda saqlamasligi kerak**. **Tuz** qo'shilgan **xesh-funksiya** natijasi saqlanadi:

```
saqlanadigan_qiymat = Hash(tuz + parol)
```

* **Tuz (salt)** — har bir foydalanuvchi uchun noyob tasodifiy satr. Uning yordamida bir xil parollar turli xeshlar beradi va oldindan hisoblangan "kamalak jadvallari" foydasiz bo'lib qoladi.
* Parollar uchun **sekin** funksiyalar ishlatiladi (minglab raundli SHA-512-crypt, bcrypt, yescrypt, Argon2), shunda saralab chiqish (brute force) qimmatga tushadi.

Kirishda OT kiritilgan paroldan xuddi shu tuz bilan xesh hisoblaydi va saqlangan qiymat bilan solishtiradi.

---

# 8. Linuxda hisob qaydnomalari

**Hisob qaydnomasi (account)** — foydalanuvchi haqidagi ma'lumotlar majmuasi bo'lib, ular asosida OT uni identifikatsiya qiladi, autentifikatsiya qiladi va uning huquqlarini aniqlaydi.

### 8.1. Identifikatorlar

Linux yadrosi **foydalanuvchi nomlarini bilmaydi** — u faqat sonlar bilan ishlaydi:

* **UID** (User ID) — foydalanuvchi identifikatori;
* **GID** (Group ID) — guruh identifikatori.

Nomlar fayllarda saqlanadi va faqat inson qulayligi uchun ishlatiladi. Agar foydalanuvchi o'chirilsa-yu, uning fayllari o'chirilmasa, `ls -l` buyrug'i nom o'rniga sonni ko'rsatadi — "yetim" UID.

| UID diapazoni | Vazifasi |
|---|---|
| `0` | **root** — superfoydalanuvchi |
| `1–999` | Tizim hisob qaydnomalari (xizmatlar: `daemon`, `www-data`, `sshd`, `postgres`) |
| `1000+` | Oddiy foydalanuvchilar |
| `65534` | `nobody` — imtiyozsiz "hech kim" foydalanuvchisi |

> root huquqlari **nom** bilan emas, **UID = 0** qiymati bilan belgilanadi. Agar UID 0 bo'lgan `admin` foydalanuvchisi yaratilsa, u superfoydalanuvchi bo'ladi. Shuning uchun `/etc/passwd` da UID 0 bo'lgan ortiqcha yozuvlarni tekshirish — majburiy audit.

### 8.2. Hisob qaydnomalari turlari

1. **Superfoydalanuvchi (root)** — cheklanmagan huquqlar, uning uchun DAC tekshiruvlari bajarilmaydi.
2. **Tizim (xizmat) hisob qaydnomalari** — demonlarni ishga tushirish uchun; odatda parolsiz va `/usr/sbin/nologin` qobig'i bilan, tizimga kirish imkonsiz.
3. **Oddiy foydalanuvchilar** — odamlarning ishi uchun; huquqlar o'z fayllari va berilgan ruxsatlar bilan cheklangan.

### 8.3. `/etc/passwd` fayli

Hammaga o'qish uchun ochiq (dasturlarga UID ↔ nom o'girish uchun kerak).

```
ali:x:1001:1001:Ali Valiyev,,,:/home/ali:/bin/bash
```

| Maydon | Qiymat | Tavsif |
|---|---|---|
| 1 | `ali` | Foydalanuvchi nomi (login) |
| 2 | `x` | Parol `/etc/shadow` da saqlanadi |
| 3 | `1001` | UID |
| 4 | `1001` | Asosiy (birlamchi) guruh GID si |
| 5 | `Ali Valiyev,,,` | GECOS — izoh (to'liq ism, telefon) |
| 6 | `/home/ali` | Uy katalogi |
| 7 | `/bin/bash` | Kirishdagi buyruq qobig'i |

### 8.4. `/etc/shadow` fayli

Faqat root uchun ochiq (huquqlar `640`, `shadow` guruhi, yoki `000`).

```
ali:$y$j9T$Fh3k...$Qx9...:20001:0:90:7:14::
```

| Maydon | Misol | Tavsif |
|---|---|---|
| 1 | `ali` | Foydalanuvchi nomi |
| 2 | `$y$j9T$...` | `$id$tuz$xesh` formatidagi parol xeshi |
| 3 | `20001` | Parol oxirgi marta o'zgartirilgan sana (01.01.1970 dan kunlar) |
| 4 | `0` | Parol o'zgartirishlar orasidagi minimal muddat (kun) |
| 5 | `90` | Parolning maksimal amal qilish muddati |
| 6 | `7` | Muddat tugashidan necha kun oldin ogohlantirish |
| 7 | `14` | Muddat tugagach necha kundan keyin bloklash |
| 8 | (bo'sh) | Hisob qaydnomasini bloklash sanasi |
| 9 | (bo'sh) | Zaxiralangan |

Ikkinchi maydondagi **algoritm identifikatori**:

| `$id$` | Algoritm |
|---|---|
| `$1$` | MD5-crypt (eskirgan, xavfsiz emas) |
| `$5$` | SHA-256-crypt |
| `$6$` | SHA-512-crypt |
| `$2b$` | bcrypt |
| `$y$` | yescrypt (Debian 11+, Ubuntu 22.04+, Fedora da standart) |

Parol maydonining maxsus qiymatlari:

* `!` yoki `*` — parol bilan kirish taqiqlangan (hisob qaydnomasi bloklangan yoki xizmat hisobi);
* `!$6$...` — parol bor, lekin hisob qaydnomasi bloklangan (`passwd -l`);
* bo'sh maydon — **parolsiz** kirish (xavfli!).

### 8.5. Guruhlar: `/etc/group` va `/etc/gshadow`

```
developers:x:1050:ali,vali,sardor
```

Maydonlar: guruh nomi, guruh paroli (`x` → `/etc/gshadow`), GID, **qo'shimcha** a'zolar ro'yxati.

Har bir foydalanuvchida:

* **bitta asosiy (birlamchi) guruh** — `/etc/passwd` da ko'rsatilgan, u yangi fayllarga beriladi;
* **bir nechta qo'shimcha guruhlar** — `/etc/group` da ko'rsatilgan.

```bash
$ id ali
uid=1001(ali) gid=1001(ali) groups=1001(ali),27(sudo),1050(developers)
```

Muhim tizim guruhlari: `sudo`/`wheel` (sudo dan foydalanish huquqi), `adm` (jurnallarni o'qish), `docker` (Docker ni boshqarish — amalda root ga teng!), `dialout` (ketma-ket portlar), `video`, `audio`.

### 8.6. Jarayonning hisob ma'lumotlari

Har bir Linux jarayonida bir nechta identifikator bor:

| Identifikator | Vazifasi |
|---|---|
| **RUID** (real UID) | Jarayonni haqiqatda kim ishga tushirgan |
| **EUID** (effective UID) | Kirish huquqlari kimning nomidan tekshiriladi |
| **SUID** (saved UID) | Saqlangan UID — imtiyozlarni vaqtincha tashlab, qaytarish imkonini beradi |
| **FSUID** | Fayl tizimi tekshiruvlari uchun UID (odatda EUID ga teng) |
| **RGID / EGID / SGID** | Guruh uchun analoglari |
| **Qo'shimcha guruhlar** | `/etc/group` dagi GID lar ro'yxati |

Odatda RUID = EUID. Ular **setuid** biti bor dasturlar ishga tushirilganda farq qiladi (10.4-bo'lim): masalan, oddiy foydalanuvchi `passwd` ni ishga tushirganda RUID = 1001, EUID = 0.

```bash
$ cat /proc/self/status | grep -E 'Uid|Gid|Groups'
Uid:    1001    1001    1001    1001     # real effective saved fs
Gid:    1001    1001    1001    1001
Groups: 27 1001 1050
```

### 8.7. Tizimga kirish jarayoni va PAM

```
login/sshd/gdm ──▶ PAM ──▶ parolni tekshirish (/etc/shadow), 2FA, cheklovlar
                    │
                    ▼  muvaffaqiyat
     setgid(GID) → initgroups() → setuid(UID) → qobiqni ishga tushirish
```

**PAM (Pluggable Authentication Modules)** — ulanadigan autentifikatsiya modullari. Dasturlarni o'zgartirmasdan autentifikatsiya usulini almashtirish imkonini beradi. Sozlamalar — `/etc/pam.d/` da.

```
# /etc/pam.d/common-auth (parcha)
auth  required   pam_faillock.so preauth deny=5 unlock_time=900
auth  [success=1 default=ignore]  pam_unix.so nullok
auth  requisite  pam_deny.so
```

Modul turlari: `auth` (shaxsni tekshirish), `account` (kirishga ruxsat bormi: muddat, vaqt), `password` (parolni o'zgartirish), `session` (seans ochilishi/yopilishidagi harakatlar).

Foydali modullar: `pam_unix` (klassik parollar), `pam_pwquality` (parol murakkabligi), `pam_faillock` (muvaffaqiyatsiz urinishlardan keyin bloklash), `pam_google_authenticator` (TOTP), `pam_limits` (resurs cheklovlari).

### 8.8. Hisob qaydnomalarini boshqarish — buyruqlar

| Harakat | Buyruq |
|---|---|
| Uy katalogi bilan foydalanuvchi yaratish | `sudo useradd -m -s /bin/bash -c "Ali Valiyev" ali` |
| Interaktiv yaratish (Debian/Ubuntu) | `sudo adduser ali` |
| Parol o'rnatish/o'zgartirish | `sudo passwd ali` |
| Qo'shimcha guruhga qo'shish | `sudo usermod -aG developers ali` |
| Qobiqni o'zgartirish | `sudo usermod -s /usr/sbin/nologin ali` |
| Bloklash / blokdan chiqarish | `sudo usermod -L ali` / `sudo usermod -U ali` |
| Hisob qaydnomasi amal qilish muddati | `sudo usermod -e 2026-12-31 ali` |
| Parol muddati siyosati | `sudo chage -M 90 -m 1 -W 7 ali` |
| Parol siyosatini ko'rish | `sudo chage -l ali` |
| Foydalanuvchini uy katalogi bilan o'chirish | `sudo userdel -r ali` |
| Guruh yaratish | `sudo groupadd developers` |
| Guruhdan chiqarish | `sudo gpasswd -d ali developers` |
| Men kimman | `whoami`, `id` |
| Hozir tizimda kim bor | `who`, `w` |
| Kirishlar tarixi | `last`, `lastb` (muvaffaqiyatsiz) |
| Muvaffaqiyatsiz urinishlar / bloklar | `faillock --user ali` |

> **Ko'p uchraydigan xato:** `-a` kalitisiz `usermod -G developers ali` qo'shimcha guruhlarning butun ro'yxatini **almashtiradi**. Foydalanuvchi `sudo` guruhi a'zoligini yo'qotishi mumkin.

> Guruh o'zgarishlari faqat **yangi seansda** kuchga kiradi — qayta kirish yoki `newgrp developers` bajarish kerak.

Yangi hisob qaydnomalari uchun standart qiymatlar `/etc/login.defs` da (UID diapazonlari, `PASS_MAX_DAYS`, `UMASK`, `ENCRYPT_METHOD`) va `/etc/skel/` uy katalogi shablonida belgilanadi.

---

# 9. Windowsda hisob qaydnomalari

### 9.1. Xavfsizlik identifikatori (SID)

Linux UID bilan ishlaganidek, Windows **SID (Security Identifier)** — o'zgaruvchan uzunlikdagi noyob satr bilan ishlaydi.

```
S-1-5-21-3623811015-3361044348-30300820-1013
│ │ │  │ └──────── domen/kompyuter identifikatori ┘ └─ RID
│ │ │  └─ qism-avtoritet (21 = mahalliy kompyuter/domen)
│ │ └─ avtoritet (5 = NT Authority)
│ └─ versiya
└─ "SID"
```

**RID (Relative ID)** — oxirgi qism, domen yoki kompyuter ichidagi hisob qaydnomasi raqami.

Yaxshi ma'lum (well-known) SID lar:

| SID | Hisob qaydnomasi / guruh |
|---|---|
| `S-1-5-18` | **LocalSystem (SYSTEM)** — tizimdagi eng yuqori huquqlar |
| `S-1-5-19` | LocalService |
| `S-1-5-20` | NetworkService |
| `S-1-5-21-…-500` | O'rnatilgan **Administrator** |
| `S-1-5-21-…-501` | **Guest** (Mehmon) |
| `S-1-5-21-…-1000+` | Yaratilgan oddiy foydalanuvchilar |
| `S-1-5-32-544` | **Administrators** guruhi |
| `S-1-5-32-545` | **Users** guruhi |
| `S-1-1-0` | **Everyone** (Hamma) |
| `S-1-5-11` | **Authenticated Users** |

> Agar foydalanuvchini o'chirib, xuddi shu nom bilan yangisini yaratsangiz, u **yangi SID** oladi va eski foydalanuvchi fayllariga kirish huquqini **olmaydi**. Linuxda UID mos kelsa — oladi.

### 9.2. Hisob qaydnomalari qayerda saqlanadi

* **Mahalliy hisob qaydnomalari** — **SAM** (Security Account Manager) bazasida, `%SystemRoot%\System32\config\SAM` fayli. Parollar NT-xeshlar ko'rinishida saqlanadi; ishlash vaqtida fayl tizim tomonidan bloklangan.
* **Domen hisob qaydnomalari** — domen kontrollerida **Active Directory** da (`NTDS.dit`), **Kerberos** protokoli bo'yicha autentifikatsiya.
* **Microsoft / Microsoft Entra ID hisob qaydnomalari** — bulutli autentifikatsiya.

**LSASS** jarayoni (`lsass.exe`, Local Security Authority Subsystem Service) hisob ma'lumotlarini tekshiradi, kirish markerini yaratadi va mahalliy xavfsizlik siyosatini qo'llaydi. Shuning uchun LSASS xotirasini o'g'irlash (Mimikatz turidagi vositalar) hujumchilarning asosiy maqsadlaridan biri; himoya — **Credential Guard** va LSA himoyalangan jarayon rejimi.

### 9.3. Windows hisob qaydnomalari turlari

| Tur | Tavsif |
|---|---|
| **Administrator** (o'rnatilgan) | To'liq huquqlar; Windows 10/11 da standart bo'yicha **o'chirilgan** |
| **Administrators guruhidagi foydalanuvchi** | Administrator huquqlari, lekin UAC bilan (12.2-bo'lim) |
| **Standart foydalanuvchi** (Users guruhi) | Hamma uchun dastur o'rnata olmaydi, tizim sozlamalarini o'zgartira olmaydi |
| **Guest** | Minimal huquqlar, standart bo'yicha o'chirilgan |
| **SYSTEM, LocalService, NetworkService** | Xizmatlar uchun xizmat hisob qaydnomalari |
| **Virtual hisob qaydnomalari / gMSA** | `NT SERVICE\<xizmat_nomi>` — har bir xizmat uchun alohida hisob qaydnomasi |

### 9.4. Kirish markeri (Access Token)

Muvaffaqiyatli kirishda LSASS **kirish markeri** yaratadi — Linuxdagi jarayon hisob ma'lumotlarining analogi. Foydalanuvchi ishga tushirgan har bir jarayon markerning nusxasini oladi.

Marker quyidagilarni o'z ichiga oladi:

* foydalanuvchi SID i;
* u a'zo bo'lgan barcha guruhlar SID lari;
* **imtiyozlar** ro'yxati (masalan, `SeShutdownPrivilege`, `SeBackupPrivilege`, `SeDebugPrivilege`);
* **yaxlitlik darajasi** (Low / Medium / High / System);
* kirish seansi SID i, marker turi (birlamchi yoki o'zini boshqa sifatida ko'rsatish markeri — impersonation).

```powershell
PS> whoami /all          # SID, guruhlar, imtiyozlar va yaxlitlik darajasini ko'rsatish
PS> whoami /priv         # faqat imtiyozlar
```

> **Ruxsatlar** (permissions) **obyektlarga** (fayl, reyestr kaliti) tegishli va obyektning ACL ida yoziladi. **Imtiyozlar** (privileges) **hisob qaydnomasiga** tegishli va tizim miqyosidagi harakatlarga ruxsat beradi (kompyuterni o'chirish, tizim vaqtini o'zgartirish, boshqa jarayonlarni sozlash (debug)). Imtiyozlar "Mahalliy xavfsizlik siyosati" orqali beriladi (`secpol.msc` → "Foydalanuvchi huquqlarini tayinlash").

### 9.5. Windows hisob qaydnomalarini boshqarish — buyruqlar

| Harakat | cmd | PowerShell |
|---|---|---|
| Foydalanuvchilar ro'yxati | `net user` | `Get-LocalUser` |
| Foydalanuvchi yaratish | `net user ali P@ssw0rd /add` | `New-LocalUser -Name ali -Password (Read-Host -AsSecureString)` |
| Guruhga qo'shish | `net localgroup Administrators ali /add` | `Add-LocalGroupMember -Group Users -Member ali` |
| O'chirib qo'yish | `net user ali /active:no` | `Disable-LocalUser ali` |
| O'chirish | `net user ali /delete` | `Remove-LocalUser ali` |
| Parol siyosati | `net accounts /maxpwage:90 /minpwlen:12` | — |
| Guruhlar ro'yxati | `net localgroup` | `Get-LocalGroup` |

Grafik vositalar: `lusrmgr.msc` (mahalliy foydalanuvchilar va guruhlar), `secpol.msc` (mahalliy xavfsizlik siyosati), `gpedit.msc` (guruh siyosatlari).

### 9.6. Linux va Windows hisob qaydnomalarini taqqoslash

| Jihat | Linux | Windows |
|---|---|---|
| Identifikator | UID/GID (butun son) | SID (tuzilmali satr) |
| Superfoydalanuvchi | root (UID 0) | SYSTEM, Administrator, Administrators guruhi |
| Saqlash joyi | `/etc/passwd`, `/etc/shadow`, `/etc/group` (yoki LDAP/SSSD) | SAM, Active Directory |
| Autentifikatsiya | PAM | LSASS + autentifikatsiya paketlari (NTLM, Kerberos) |
| Jarayon guvohnomasi | `struct cred` (UID, GID, guruhlar, capabilities) | Kirish markeri (SID, guruhlar, imtiyozlar, yaxlitlik darajasi) |
| Huquqlarni vaqtincha oshirish | `sudo`, `su`, setuid | UAC, "Administrator sifatida ishga tushirish", `runas` |
| root vakolatlarini bo'lish | capabilities | imtiyozlar |

---

# 10. Linuxda kirish huquqlari

**Kirish huquqi** — subyektga obyekt ustida ma'lum amalni bajarishga ruxsat.

### 10.1. Klassik Unix modeli: ega, guruh, boshqalar

Har bir fayl (inode) quyidagilarni saqlaydi:

* **egasining UID i**;
* **egalik qiluvchi guruhning GID i**;
* **12 bitli rejim**: 9 bit huquqlar + 3 ta maxsus bit.

```
$ ls -l report.txt
-rw-r-----  1  ali  developers  2048  Oct  5 10:00  report.txt
│└┬┘└┬┘└┬┘     │    │
│ │  │  │      │    └─ egalik qiluvchi guruh
│ │  │  │      └─ egasi (foydalanuvchi)
│ │  │  └─ others (boshqalar): ---
│ │  └─ group (guruh): r--
│ └─ user/owner (egasi): rw-
└─ fayl turi: - oddiy, d katalog, l havola, c/b qurilma, s soket, p kanal
```

### 10.2. Fayllar va kataloglar uchun huquqlarning ma'nosi

| Huquq | Fayl uchun | Katalog uchun |
|---|---|---|
| **r** (4) | Tarkibni o'qish | Fayl nomlari ro'yxatini olish (`ls`) |
| **w** (2) | Tarkibni o'zgartirish | **Katalogda** fayllarni yaratish, o'chirish, nomini o'zgartirish |
| **x** (1) | Dastur sifatida bajarish | Katalogdan "o'tish": `cd`, fayllarga nom bo'yicha murojaat qilish |

Muhim xulosalar:

* **Faylni o'chirish fayl huquqlari bilan emas, katalog huquqlari bilan belgilanadi.** Agar foydalanuvchida katalogga `w` va `x` bo'lsa, u undan begona faylni, hatto faqat o'qish uchun bo'lsa ham, o'chira oladi (himoya — sticky bit).
* `--x` huquqli katalog (`r` siz) — "ko'r": kirish mumkin, tarkib ko'rinmaydi, lekin nomi ma'lum faylni ochish mumkin.
* `r--` huquqli katalog (`x` siz) — nomlar ko'rinadi, lekin birorta faylni ochib ham, atributlarini bilib ham bo'lmaydi.
* `/home/ali/docs/a.txt` ga kirish uchun yo'ldagi **har bir** katalogga `x` huquqi kerak: `/`, `/home`, `/home/ali`, `/home/ali/docs`.

### 10.3. Raqamli va belgili yozuv

| Sakkizlik | Ikkilik | Huquqlar |
|---|---|---|
| 0 | 000 | `---` |
| 1 | 001 | `--x` |
| 2 | 010 | `-w-` |
| 3 | 011 | `-wx` |
| 4 | 100 | `r--` |
| 5 | 101 | `r-x` |
| 6 | 110 | `rw-` |
| 7 | 111 | `rwx` |

Odatiy kombinatsiyalar:

| Rejim | Belgili | Qo'llanilishi |
|---|---|---|
| `600` | `rw-------` | Shaxsiy fayllar, `~/.ssh/id_ed25519` |
| `644` | `rw-r--r--` | Oddiy fayllar, maxfiy ma'lumotsiz konfiguratsiya |
| `640` | `rw-r-----` | Xizmat guruhiga ochiq maxfiy ma'lumotli konfiguratsiya |
| `700` | `rwx------` | Shaxsiy katalog, `~/.ssh` |
| `755` | `rwxr-xr-x` | Dasturlar, hammaga ochiq kataloglar |
| `750` | `rwxr-x---` | Guruh uchun loyiha katalogi |
| `777` | `rwxrwxrwx` | **Xavfli**: hamma hamma narsani qila oladi |

Buyruqlar:

```bash
chmod 640 report.txt           # raqamli shakl
chmod u+x script.sh            # egasiga bajarish huquqini qo'shish
chmod g-w,o= report.txt        # guruhdan yozishni, boshqalardan barcha huquqlarni olib tashlash
chmod -R u=rwX,g=rX,o= project/  # X — bajarish faqat kataloglar (va allaqachon bajariladigan fayllar) uchun

chown ali report.txt           # egasini o'zgartirish (faqat root)
chown ali:developers report.txt
chgrp developers report.txt    # guruhni o'zgartirish (ega — faqat o'zi a'zo bo'lgan guruhga)
```

> Fayl egasini **faqat root** o'zgartira oladi. Aks holda foydalanuvchi faylni boshqasiga "sovg'a qilib", disk kvotalarini chetlab o'tishi yoki boshqa birovning nomidan fayl yaratishi mumkin edi.

### 10.4. Maxsus bitlar: setuid, setgid, sticky

| Bit | Son | Faylda | Katalogda | `ls` dagi ko'rinishi |
|---|---|---|---|---|
| **setuid** | 4000 | Dastur fayl **egasining EUID i** bilan bajariladi | Ishlatilmaydi | Ega huquqlarida `rws` |
| **setgid** | 2000 | Dastur fayl **guruhining EGID i** bilan bajariladi | Yangi fayllar **katalog guruhini** meros qilib oladi | Guruh huquqlarida `rws` |
| **sticky** | 1000 | Ishlatilmaydi | Faylni faqat uning egasi, katalog egasi yoki root o'chira/nomini o'zgartira oladi | Boshqalar huquqlarida `rwt` |

Katta harf (`S`, `T`) maxsus bit o'rnatilgan, lekin tegishli `x` biti o'rnatilmaganligini bildiradi.

**setuid misoli.** Oddiy foydalanuvchi o'z parolini o'zgartira olishi kerak, lekin `/etc/shadow` ga faqat root yoza oladi:

```bash
$ ls -l /usr/bin/passwd /etc/shadow
-rwsr-xr-x 1 root root   68208 ... /usr/bin/passwd
-rw-r----- 1 root shadow  1520 ... /etc/shadow
```

`passwd` dasturi EUID = 0 bilan ishga tushadi, `/etc/shadow` ni o'zgartiradi, lekin foydalanuvchi **faqat o'z** parolini o'zgartirayotganini o'zi tekshiradi.

> root ga tegishli setuid-dasturlar imtiyozlarni oshirish hujumlarining asosiy nishonlaridan biri. Bunday dasturdagi har qanday xato hujumchiga root beradi. Bunday dasturlar ro'yxatini bilish va kamaytirish kerak:
> ```bash
> find / -perm -4000 -type f 2>/dev/null
> ```

**sticky bit misoli:**

```bash
$ ls -ld /tmp
drwxrwxrwt 20 root root 4096 ... /tmp
```

Hamma `/tmp` da fayl yarata oladi, lekin hech kim begona faylni o'chira olmaydi.

**Katalogda setgid misoli — loyihaning umumiy papkasi:**

```bash
sudo mkdir /srv/project
sudo chgrp developers /srv/project
sudo chmod 2770 /srv/project     # rwxrws---
```

Ishtirokchilar `/srv/project` da yaratadigan barcha fayllar avtomatik ravishda `developers` guruhini oladi.

### 10.5. umask — standart huquqlar

Fayl yaratilganda dastur huquqlarni so'raydi (odatda fayllar uchun `666`, kataloglar uchun `777`), yadro esa ulardan **umask** da ko'rsatilgan bitlarni **olib tashlaydi**:

```
yakuniy_huquqlar = so'ralgan_huquqlar AND (NOT umask)
```

| umask | Fayl (666 dan) | Katalog (777 dan) | Qo'llanilishi |
|---|---|---|---|
| `022` | `644` | `755` | Ko'pchilik tizimlar uchun standart |
| `002` | `664` | `775` | Guruhlarda birgalikda ishlash |
| `027` | `640` | `750` | Serverlar: boshqalar hech narsani ko'rmaydi |
| `077` | `600` | `700` | Maksimal maxfiylik |

```bash
$ umask
0022
$ umask 027      # joriy seans uchun; doimiy — ~/.bashrc yoki /etc/login.defs da
```

### 10.6. Linuxda huquqlarni tekshirish algoritmi

Jarayon `open("file", O_RDONLY)` ni chaqirganda yadro quyidagilarni bajaradi:

```
1. Agar jarayon EUID = 0 bo'lsa (aniqrog'i — CAP_DAC_OVERRIDE bo'lsa):
       → ruxsat berish (bajarish uchun kamida bitta x biti kerak)
2. Aks holda, agar EUID = fayl egasining UID i bo'lsa:
       → FAQAT ega huquqlarini (u) tekshirish
3. Aks holda, agar EGID yoki qo'shimcha guruhlardan biri = fayl GID i bo'lsa:
       → FAQAT guruh huquqlarini (g) tekshirish
4. Aks holda:
       → boshqalar huquqlarini (o) tekshirish
5. (qo'shimcha) LSM tekshiruvi: SELinux / AppArmor taqiqlashi mumkin
```

Tekshiruvlar **qo'shilmaydi**: **birinchi mos keladigan** toifa tanlanadi.

**Tuzoqli masala:**

```bash
$ ls -l secret.txt
----r--r-- 1 ali ali 10 ... secret.txt
$ whoami
ali
$ cat secret.txt
cat: secret.txt: Permission denied
```

`ali` foydalanuvchisi — ega, shuning uchun "boshqalar" uchun o'qish ruxsat etilgan bo'lsa ham, **faqat** ega huquqlari (`---`) tekshiriladi. Biroq `ali` ega sifatida `chmod u+r secret.txt` ni bajarib, kirishni o'ziga qaytara oladi — joriy bitlardan qat'i nazar, huquqlarni ega o'zgartira oladi.

### 10.7. POSIX ACL — kirishni boshqarish ro'yxatlari

Klassik model huquqlarni faqat **bitta** foydalanuvchi va **bitta** guruh uchun belgilash imkonini beradi. **ACL** istalgan sondagi foydalanuvchi va guruhlarga huquq berish imkonini beradi.

```bash
# vali foydalanuvchisiga o'qish va yozish huquqini berish
setfacl -m u:vali:rw report.txt

# teachers guruhiga o'qish huquqini berish
setfacl -m g:teachers:r report.txt

# katalogdagi yangi fayllar uchun standart huquqlar (meros)
setfacl -d -m g:developers:rwX /srv/project

# ko'rish
getfacl report.txt

# yozuvni / barcha ACL ni o'chirish
setfacl -x u:vali report.txt
setfacl -b report.txt
```

`getfacl` natijasi:

```
# file: report.txt
# owner: ali
# group: developers
user::rw-
user:vali:rw-
group::r--
group:teachers:r--
mask::rw-
other::---
```

* `ls -l` huquqlardan keyin `+` belgisini ko'rsatadi: `-rw-rw----+`.
* **mask** — barcha nomlangan foydalanuvchilar, guruhlar va egalik qiluvchi guruh uchun maksimal huquqlar. Samarali huquqlar = ACL yozuvi **AND** mask. ACL li faylda `chmod g=...` buyrug'i aynan mask ni o'zgartiradi.

ACL bilan tekshirish algoritmi: ega → nomlangan foydalanuvchilar (`& mask`) → egalik qiluvchi guruh va nomlangan guruhlar (`& mask`; kamida bittasi mos kelsa — kirish) → boshqalar.

### 10.8. Linux capabilities — root vakolatlarini bo'lish

An'anaviy Unixda ikkilik bor edi: yo root (hammasi), yo oddiy foydalanuvchi. Yadroning 2.2 versiyasidan boshlab root vakolatlari ~40 ta alohida **capability** larga bo'lingan:

| Capability | Nimaga ruxsat beradi |
|---|---|
| `CAP_NET_BIND_SERVICE` | < 1024 portlarni egallash |
| `CAP_NET_RAW` | "Xom" soketlardan foydalanish (`ping`) |
| `CAP_DAC_OVERRIDE` | rwx huquq tekshiruvlarini e'tiborsiz qoldirish |
| `CAP_DAC_READ_SEARCH` | Fayllarni o'qish va kataloglarda qidirish tekshiruvlarini e'tiborsiz qoldirish |
| `CAP_CHOWN` | Fayllar egasini o'zgartirish |
| `CAP_KILL` | Begona jarayonlarga signal yuborish |
| `CAP_SYS_PTRACE` | Begona jarayonlarni sozlash (debug) |
| `CAP_SYS_TIME` | Tizim vaqtini o'zgartirish |
| `CAP_SYS_ADMIN` | Ko'plab ma'muriy amallar ("yangi root") |

Misol — veb-server root huquqlarisiz 80-portni tinglay oladi:

```bash
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/myserver
getcap /usr/local/bin/myserver
# /usr/local/bin/myserver cap_net_bind_service=ep

# joriy jarayonning capabilities lari
grep Cap /proc/self/status
capsh --print
```

Bu **minimal imtiyozlar tamoyilining** bevosita qo'llanilishi: dastur to'liq root o'rniga aynan bitta kerakli vakolatni oladi. Windowsdagi analogi — kirish markeridagi **imtiyozlar**.

### 10.9. ext4 fayl atributlari

**Hatto root uchun ham** amal qiladigan qo'shimcha himoya darajasi:

```bash
sudo chattr +i /etc/resolv.conf   # immutable: o'zgartirib, o'chirib, nomini o'zgartirib bo'lmaydi
sudo chattr +a /var/log/app.log   # append-only: faqat oxiriga qo'shish
lsattr /etc/resolv.conf
# ----i---------e------- /etc/resolv.conf
```

`+a` atributi jurnallar uchun foydali: buzg'unchi avval atributni olib tashlamasdan (buning uchun `CAP_LINUX_IMMUTABLE` kerak) izlarni o'chira olmaydi.

---

# 11. Windowsda kirish huquqlari

### 11.1. Xavfsizlik deskriptori

Windowsning har bir himoyalanadigan obyekti (fayl, katalog, reyestr kaliti, xizmat, jarayon, printer, umumiy papka) **xavfsizlik deskriptoriga (Security Descriptor)** ega:

```
Xavfsizlik deskriptori
├── Owner SID     — obyekt egasi
├── Group SID     — asosiy guruh (POSIX bilan moslik uchun)
├── DACL          — diskretsion kirishni boshqarish ro'yxati: KIM va NIMA qila oladi
│    ├── ACE: Allow  ali        Modify
│    ├── ACE: Deny   Guest      Read
│    └── ACE: Allow  Administrators  Full Control
└── SACL          — tizim ro'yxati: qaysi murojaatlarni audit jurnaliga YOZISH
     └── ACE: Audit Failure  Everyone  Write
     + majburiy yaxlitlik belgisi (Mandatory Label)
```

**ACE (Access Control Entry)** — ro'yxatdagi yozuv: tur (Allow / Deny / Audit), SID, huquqlar maskasi, meros bayroqlari.

### 11.2. NTFS standart ruxsatlari

| Ruxsat | Fayl | Katalog |
|---|---|---|
| **To'liq kirish (Full Control)** | Hammasi, jumladan huquqlar va egani o'zgartirish | Hammasi, jumladan ichki obyektlarni o'chirish |
| **O'zgartirish (Modify)** | O'qish, yozish, o'chirish | + fayllarni yaratish va o'chirish |
| **O'qish va bajarish (Read & Execute)** | O'qish, dasturlarni ishga tushirish | Kataloglarni ko'rish va ular bo'ylab o'tish |
| **Papka tarkibi ro'yxati** | — | Fayllar ro'yxatini ko'rish |
| **O'qish (Read)** | Tarkib va atributlarni o'qish | Ro'yxat va atributlarni o'qish |
| **Yozish (Write)** | Tarkibni o'zgartirish | Fayllar va ichki kataloglar yaratish |
| **Maxsus ruxsatlar** | 14 ta batafsil huquq: o'chirish, ruxsatlarni o'zgartirish, egani o'zgartirish va h.k. | |

### 11.3. Meros

Standart bo'yicha ruxsatlar ota katalogdan ichki obyektlarga **meros** bo'lib o'tadi. ACE meros bayroqlari:

| `icacls` bayrog'i | Ma'nosi |
|---|---|
| `(OI)` | Object Inherit — fayllar meros qilib oladi |
| `(CI)` | Container Inherit — ichki kataloglar meros qilib oladi |
| `(IO)` | Inherit Only — katalogning o'ziga emas, faqat avlodlarga qo'llaniladi |
| `(NP)` | No Propagate — faqat bir daraja meros bo'ladi |
| `(I)` | Yozuv otadan meros bo'lib kelgan |

Meros huquqlarni obyekt uchun **o'chirib qo'yish** mumkin (xususiyatlarda "Merosni o'chirish"), ularni aniq (explicit) huquqlarga aylantirib yoki o'chirib.

### 11.4. Windowsda kirishni tekshirish algoritmi

Jarayon obyektni ochganda **Security Reference Monitor** jarayonning **kirish markerini** obyektning **xavfsizlik deskriptori** bilan solishtiradi:

```
1. Yaxlitlik darajasini tekshirish (MIC): agar jarayon darajasi obyekt
   darajasidan past bo'lsa — yozish taqiqlanadi (No Write Up).
2. Agar DACL yo'q bo'lsa (NULL DACL) → HAMMAGA to'liq kirish (xavfli!).
3. Agar DACL bo'sh bo'lsa (birorta ham ACE yo'q) → hammaga kirish TAQIQLANGAN.
4. Obyekt egasi bilvosita READ_CONTROL va WRITE_DAC huquqlarini oladi
   (ruxsatlarni o'qishi va o'zgartirishi mumkin).
5. ACE lar TARTIB BILAN ko'rib chiqiladi:
      • agar Deny ACE markerdagi SID ga mos kelsa va so'ralgan huquqlardan
        kamida bittasini taqiqlasa → RAD ETISH;
      • agar Allow ACE mos kelsa → ruxsat etilgan huquqlarni qo'shish;
      • so'ralgan barcha huquqlar to'plangan zahoti → RUXSAT BERISH.
6. Agar ro'yxat tugasa-yu, huquqlar to'liq to'planmagan bo'lsa → RAD ETISH.
```

**ACE larning kanonik tartibi** (Windows uni avtomatik saqlaydi):

1. Aniq taqiqlovchi (explicit Deny)
2. Aniq ruxsat beruvchi (explicit Allow)
3. Meros bo'lib kelgan taqiqlovchi (inherited Deny)
4. Meros bo'lib kelgan ruxsat beruvchi (inherited Allow)

Xulosa: **aniq ruxsat meros bo'lib kelgan taqiqdan kuchliroq**, aniq taqiq esa har qanday ruxsatdan kuchliroq.

Linuxdan farqli ravishda, Windowsda **huquqlar** foydalanuvchining barcha guruhlari bo'yicha **qo'shiladi**: agar `ali` `Users` guruhida Read, `Developers` guruhida Modify huquqiga ega bo'lsa, natija — Modify (Deny bo'lmasa).

### 11.5. Tarmoq papkalari: Share + NTFS

Papkaga tarmoq orqali (`\\server\share`) kirishda **ikki** to'plam huquq amal qiladi: umumiy resurs ruxsatlari (Share) va NTFS ruxsatlari. Yakuniy huquqlar — ikkalasidan **eng qat'iysi**.

| Share | NTFS | Tarmoq orqali natija |
|---|---|---|
| Full Control | Read | Read |
| Read | Modify | Read |
| Change | Modify | Modify |

### 11.6. `icacls` buyrug'i

```cmd
:: huquqlarni ko'rish
icacls C:\Data\report.docx

:: ali foydalanuvchisiga fayllar va ichki kataloglarga meros bilan o'zgartirish huquqini berish
icacls C:\Data /grant ali:(OI)(CI)M

:: guruhga faqat o'qish va bajarish huquqini berish
icacls C:\Data /grant "Students":(OI)(CI)RX

:: yozishni aniq taqiqlash
icacls C:\Data\exam /deny Students:(W)

:: foydalanuvchining barcha yozuvlarini olib tashlash
icacls C:\Data /remove ali

:: merosni o'chirish, meros huquqlarni aniq huquqlarga nusxalash
icacls C:\Data /inheritance:d

:: egasini o'zgartirish
icacls C:\Data /setowner Administrators /T

:: meros huquqlarga qaytarish
icacls C:\Data /reset /T
```

Huquqlar belgilari: `F` — to'liq kirish, `M` — o'zgartirish, `RX` — o'qish va bajarish, `R` — o'qish, `W` — yozish, `D` — o'chirish.

PowerShell da: `Get-Acl`, `Set-Acl`.

### 11.7. Linux va Windows kirish huquqlarini taqqoslash

| Jihat | Linux | Windows |
|---|---|---|
| Asosiy model | 9 bit rwx (owner/group/other) + POSIX ACL | Istalgan sondagi ACE lardan iborat DACL |
| Aniq taqiq | Yo'q (ega/ACL ning "bo'sh" huquqlaridan tashqari) | Bor (Deny ACE) |
| Guruh huquqlarini birlashtirish | Birinchi mos keladigan toifa | Barcha guruhlar bo'yicha qo'shish |
| Meros | Faqat default ACL, katalogning setgid i orqali | O'rnatilgan, OI/CI/IO/NP bayroqlari bilan |
| Faylni o'chirish huquqi | Katalog huquqlari bilan belgilanadi | Fayldagi alohida Delete yoki katalogdagi Delete Child huquqi |
| Kirish auditi | `auditd` (`-w` qoidalari) | Obyektdagi SACL |
| Superfoydalanuvchi tekshiruvlarni chetlab o'tadi | Ha (root / CAP_DAC_OVERRIDE) | Qisman: administrator **egaga aylanib**, so'ng DACL ni o'zgartirishi mumkin; SeBackupPrivilege hammasini o'qishga imkon beradi |

---

# 12. Imtiyozlarni oshirish: sudo va UAC

Doimo administrator huquqlari bilan ishlash xavfli: har qanday xato yoki zararli dastur tizim ustidan to'liq nazoratni qo'lga oladi. Shuning uchun zamonaviy OTlar **imtiyozlarni vaqtincha oshirishdan** foydalanadi.

### 12.1. Linuxda sudo

`sudo` (superuser do) ruxsat berilgan foydalanuvchilarga **o'z** parolini kiritib, alohida buyruqlarni root (yoki boshqa foydalanuvchi) nomidan bajarish imkonini beradi.

`su` (root sifatida kirish) dan afzalliklari:

* root parolini aytish shart emas;
* ruxsat etilgan buyruqlar to'plamini cheklash mumkin;
* har bir foydalanish jurnalga yoziladi (`/var/log/auth.log`, `journalctl _COMM=sudo`).

`/etc/sudoers` fayli **faqat** `visudo` orqali tahrirlanadi (sintaksisni tekshirish — xato sudo ga kirishdan mahrum qilishi mumkin).

```
# foydalanuvchi  xostlar=(kim_nomidan:guruhlar)  buyruqlar
root            ALL=(ALL:ALL) ALL
%sudo           ALL=(ALL:ALL) ALL

# operator faqat veb-serverni parolsiz qayta ishga tushira oladi
operator ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx

# o'qituvchi talabalar hisob qaydnomalarini boshqara oladi
%teachers ALL=(root) /usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd [a-z]*
```

Qo'shimcha qoidalarni `/etc/sudoers.d/` dagi alohida fayllarga chiqarish yaxshiroq.

```bash
sudo -l          # menga qaysi buyruqlar ruxsat etilgan
sudo -i          # root ning interaktiv qobig'i (kirish jurnallanadi)
sudo -u postgres psql   # boshqa foydalanuvchi nomidan bajarish
```

> **Xavf:** sudo orqali muharrirlar (`vim`, `less`), interpretatorlarni (`python`, `find -exec`, `awk`) ishga tushirishga ruxsat berish amalda to'liq root beradi, chunki ulardan qobiqni ishga tushirish mumkin. Bunday chetlab o'tish misollari GTFOBins loyihasida to'plangan.

### 12.2. Windowsda UAC

**UAC (User Account Control)** — hisob qaydnomalarini nazorat qilish. Administrator tizimga kirganda LSASS **ikkita marker** yaratadi:

* **filtrlangan marker** — ma'muriy imtiyozlarsiz, yaxlitlik darajasi **Medium**; barcha oddiy dasturlar, jumladan Explorer, u bilan ishga tushadi;
* **to'liq marker** — barcha huquqlar bilan, daraja **High**; faqat tasdiqlangandan keyin ishlatiladi.

```
 Administrator kirishi
        │
        ├─▶ Filtrlangan marker (Medium) ──▶ explorer.exe, brauzer, Word ...
        │
        └─▶ To'liq marker (High) ──▶ faqat UAC so'rovidan keyin
                                     ("Bu ilovaga o'zgartirish kiritishga ruxsat berasizmi?")
```

UAC so'rovi **himoyalangan ish stolida** (Secure Desktop) ko'rsatiladi, shunda zararli dastur "Ha" tugmasini o'zi bosa olmaydi.

Standart foydalanuvchi uchun UAC **administratorning login va parolini** so'raydi (*over-the-shoulder elevation*).

> UAC qat'iy ma'noda **xavfsizlik chegarasi emas** (Microsoft uni rasman shunday deb hisoblamaydi), balki dasturlarni standart bo'yicha ortiqcha huquqlarsiz ishlashga majbur qiluvchi mexanizm. **Standart foydalanuvchi** hisob qaydnomasi ostida ishlash ishonchliroq.

---

# 13. Zamonaviy OTlardagi mandatli mexanizmlar

### 13.1. SELinux

**SELinux (Security-Enhanced Linux)** — AQSh Milliy xavfsizlik agentligi (NSA) tomonidan ishlab chiqilgan MAC amalga oshirilishi, Linux yadrosiga LSM orqali kiritilgan. RHEL, Fedora, CentOS, Android da standart bo'yicha ishlatiladi.

Har bir jarayon va faylga **xavfsizlik konteksti** beriladi:

```
user:role:type:level
system_u:system_r:httpd_t:s0          ← veb-server jarayoni
system_u:object_r:httpd_sys_content_t:s0  ← sayt fayllari
```

Siyosat (Type Enforcement) masalan, `httpd_t` turidagi jarayonlarga faqat `httpd_sys_content_t` turidagi fayllarni o'qishga ruxsat beradi. Veb-server buzilib, hujumchi **shu jarayon ichida** root olsa ham, u `/etc/shadow` (`shadow_t` turi) yoki uy kataloglarini o'qiy olmaydi.

```bash
getenforce             # Enforcing / Permissive / Disabled
ls -Z /var/www/html    # fayllar kontekstlari
ps -eZ | grep httpd    # jarayonlar kontekstlari
sudo restorecon -Rv /var/www/html   # standart kontekstlarni tiklash
sudo ausearch -m avc -ts recent     # SELinux rad etishlarini ko'rish
```

Tekshirish tartibi: **avval DAC, keyin MAC**. Kirishga **ikkala** mexanizm ham ruxsat bergandagina ruxsat etiladi.

### 13.2. AppArmor

MAC ning muqobil amalga oshirilishi (Ubuntu, Debian, SUSE). Belgilar o'rniga **yo'llarga asoslangan profillardan** foydalanadi:

```
# /etc/apparmor.d/usr.sbin.nginx (parcha)
/usr/sbin/nginx {
  /var/www/** r,
  /var/log/nginx/** w,
  network inet tcp,
  deny /etc/shadow r,
}
```

```bash
sudo aa-status                     # yuklangan profillar va ularning rejimi
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx
sudo aa-complain /etc/apparmor.d/usr.sbin.nginx   # o'rganish rejimi: faqat jurnallash
```

| | SELinux | AppArmor |
|---|---|---|
| Asosi | Obyektlardagi belgilar (kontekstlar) | Fayllarga yo'llar |
| Murakkabligi | Yuqori | O'rta |
| Batafsillik (granulyarlik) | Juda yuqori | Yuqori |
| Distributivlar | RHEL, Fedora, Android | Ubuntu, Debian, SUSE |

### 13.3. Windows yaxlitlik darajalari (MIC)

| Daraja | Kim ishlatadi |
|---|---|
| **Untrusted** | Anonim jarayonlar |
| **Low** | Brauzer qum qutilari (sandbox), himoyalangan rejimdagi Internet Explorer, AppContainer |
| **Medium** | Foydalanuvchining oddiy dasturlari |
| **High** | "Administrator sifatida" ishga tushirilgan dasturlar |
| **System** | OT xizmatlari, yadro |

Standart qoida — **No Write Up** (Biba modeli): jarayon yuqoriroq darajadagi obyektlarni o'zgartira olmaydi va yuqoriroq darajadagi jarayonlarga kirib ola olmaydi.

```cmd
whoami /groups | find "Mandatory Label"
icacls file.txt /setintegritylevel low
```

---

# 14. Amaliy topshiriqlar

### 1-topshiriq. Hisob qaydnomasini o'rganish (Linux)

```bash
whoami
id
grep "^$(whoami):" /etc/passwd
sudo grep "^$(whoami):" /etc/shadow
sudo chage -l $(whoami)
awk -F: '$3 == 0 {print $1}' /etc/passwd    # UID 0 bo'lgan barcha hisob qaydnomalari
awk -F: '$3 >= 1000 && $3 < 65534 {print $1, $3, $7}' /etc/passwd   # oddiy foydalanuvchilar
```

**Javob bering:** qaysi xeshlash algoritmi ishlatiladi? Parolingiz qachon muddati tugaydi? UID 0 bo'lgan nechta hisob qaydnomasi bor?

### 2-topshiriq. Loyiha uchun foydalanuvchilar va guruh yaratish

```bash
sudo groupadd project
sudo useradd -m -s /bin/bash -G project student1
sudo useradd -m -s /bin/bash -G project student2
sudo useradd -m -s /bin/bash student3
sudo passwd student1; sudo passwd student2; sudo passwd student3

sudo mkdir /srv/project
sudo chown root:project /srv/project
sudo chmod 2770 /srv/project
```

Tekshiring:

1. `student1` `/srv/project` da fayl yarata oladimi? Yaratilgan faylning guruhi qanday?
2. `student2` uni o'zgartira oladimi? (Ishora: umask.)
3. `student3` `ls /srv/project` ni bajara oladimi?
4. `chmod 3770` ni o'rnating (sticky bit qo'shing). Endi `student2` `student1` ning faylini o'chira oladimi?

### 3-topshiriq. umask

```bash
umask
touch a.txt; mkdir dirA; ls -ld a.txt dirA
umask 077
touch b.txt; mkdir dirB; ls -ld b.txt dirB
```

Olingan huquqlarni hisob-kitob bilan tushuntiring.

### 4-topshiriq. ACL

```bash
echo "baholar" > grades.txt
chmod 600 grades.txt
setfacl -m u:student3:r grades.txt
getfacl grades.txt
ls -l grades.txt                 # "+" belgisiga e'tibor bering
chmod g-r grades.txt             # mask bilan nima bo'ldi?
getfacl grades.txt
```

mask o'zgargandan keyin `student3` faylni o'qiy oladimi? Nima uchun?

### 5-topshiriq. Xavfsiz bo'lmagan sozlamalarni qidirish

```bash
# setuid/setgid-dasturlar
find / -perm /6000 -type f 2>/dev/null

# hammaga yozish uchun ochiq fayllar (/proc, /sys dan tashqari)
find / -xdev -type f -perm -0002 2>/dev/null

# hammaga yozish uchun ochiq, sticky bit siz kataloglar
find / -xdev -type d -perm -0002 ! -perm -1000 2>/dev/null

# egasiz fayllar (yetim UID lar)
find / -xdev \( -nouser -o -nogroup \) 2>/dev/null

# bo'sh parolli hisob qaydnomalari
sudo awk -F: '$2 == "" {print $1}' /etc/shadow
```

### 6-topshiriq. Capabilities

```bash
cp /usr/bin/python3 /tmp/py
/tmp/py -m http.server 80        # xato: Permission denied
sudo setcap cap_net_bind_service=+ep /tmp/py
/tmp/py -m http.server 80        # root siz ishlaydi
getcap /tmp/py
sudo rm /tmp/py
```

### 7-topshiriq. Windows

```powershell
whoami /all
Get-LocalUser
Get-LocalGroupMember Administrators

New-Item -ItemType Directory C:\Lab
icacls C:\Lab
icacls C:\Lab /inheritance:r
icacls C:\Lab /grant "${env:USERNAME}:(OI)(CI)F"
icacls C:\Lab /grant "Users:(OI)(CI)RX"
icacls C:\Lab
```

**Javob bering:** oddiy ishga tushirilgan va "administrator sifatida" ishga tushirilgan PowerShell ning yaxlitlik darajasi qanday? Oshirilgan rejimda qanday imtiyozlar paydo bo'ladi?

---

# 15. Odatiy xatolar va tavsiyalar

| Xato | Oqibat | To'g'risi |
|---|---|---|
| "Ishlashi uchun" `chmod -R 777` | Har qanday foydalanuvchi va xizmat fayllarni o'zgartira oladi | Kirish qaysi subyektga kerakligini aniqlab, minimal huquq berish |
| Doimo root / administrator ostida ishlash | Har qanday xato yoki virus to'liq nazoratni oladi | Oddiy hisob qaydnomasi + `sudo` / UAC |
| Bir necha kishiga bitta umumiy hisob qaydnomasi | Kim nima qilganini aniqlab bo'lmaydi | Shaxsiy hisob qaydnomalari |
| Ishdan ketganlar hisob qaydnomalari o'chirilmaydi | Sobiq xodim kirish huquqini saqlab qoladi | Muntazam audit, hisob qaydnomalari muddati |
| `-a` siz `usermod -G` | Guruhlar a'zoligini yo'qotish | `usermod -aG` |
| Xizmat root nomidan ishlaydi | Xizmatning buzilishi = tizimning buzilishi | Alohida tizim foydalanuvchisi, capabilities, MAC profili |
| Foydalanuvchi "qulaylik uchun" `docker` guruhida | Amalda parolsiz root | Rootless-Docker yoki sudo |
| Birinchi xatodayoq SELinux ni o'chirish | Himoya darajasini yo'qotish | `ausearch` tahlili, kontekstlarni tuzatish |
| Windows obyektida NULL DACL | Hammaga to'liq kirish | Minimal huquqli aniq DACL |
| `644` huquqli fayllarda maxfiy ma'lumotlar | Parollarni har qanday foydalanuvchi o'qiydi | Xizmat guruhi bilan `600` / `640` |

---

# 16. Eslab qolish kerak

1. OT xavfsizligi resurslarning **konfidensialligi, yaxlitligi va foydalanish imkoniyatini** ta'minlaydi.
2. OTda **subyekt — bu jarayon**, hisob qaydnomasi nomidan harakat qiladi; **obyekt** — fayl, qurilma, xotira va h.k.
3. Barcha murojaatlar yadroning chetlab o'tib bo'lmaydigan **murojaatlar monitori** orqali o'tadi.
4. Kirish modellari: **DAC** (ega hal qiladi), **MAC** (siyosat hal qiladi), **RBAC** (rollar orqali), **ABAC** (atributlar orqali).
5. Bell–LaPadula **konfidensiallikni** himoya qiladi (no read up, no write down); Biba — **yaxlitlikni** (no read down, no write up).
6. Linux foydalanuvchilarni **UID/GID**, Windows — **SID** bo'yicha identifikatsiya qiladi. root — bu **UID 0**.
7. Parollar faqat **tuzli xesh** ko'rinishida saqlanadi (`/etc/shadow`, SAM).
8. Linuxda huquqlarni tekshirish **bitta** toifani tanlaydi (ega → guruh → boshqalar); Windowsda guruhlar huquqlari **qo'shiladi**, **Deny** esa ustuvor.
9. Linuxda faylni o'chirish **katalog** huquqlari bilan belgilanadi; sticky bit umumiy kataloglardagi begona fayllarni himoya qiladi.
10. setuid dasturga egasining huquqlari bilan ishlash imkonini beradi — bu kuchli va xavfli.
11. ACL rwx modelini kengaytiradi; capabilities va imtiyozlar administratorning cheksiz vakolatini bo'ladi.
12. Asosiy tamoyil — **minimal imtiyozlar**: har bir subyekt faqat haqiqatda zarur bo'lgan narsani oladi.

---

# 17. Nazorat savollari

1. OT xavfsizligiga ta'rif bering. Tahdid zaiflikdan nimasi bilan farq qiladi?
2. "Subyekt", "obyekt", "kirish huquqi" tushunchalarini tushuntiring. Linux va Windows uchun misollar keltiring.
3. Saltzer–Schroeder tamoyillarini sanab bering. `chmod 777` buyrug'i ulardan qaysilarini buzadi?
4. Murojaatlar monitori nima? U qaysi uchta talabga javob berishi kerak?
5. Diskretsion kirish modeli mandatli modeldan nimasi bilan farq qiladi? Nima uchun DAC troyan dasturlarga zaif?
6. Bell–LaPadula va Biba modellari qoidalarini ifodalang. Har biri axborotning qaysi xususiyatini himoya qiladi?
7. ACL imkoniyatlar ro'yxatidan (capability list) nimasi bilan farq qiladi?
8. Identifikatsiya, autentifikatsiya va avtorizatsiya nimasi bilan farq qiladi?
9. Nima uchun parol + PIN-kod ko'p faktorli autentifikatsiya hisoblanmaydi?
10. Parollarni xeshlashda tuz nima uchun ishlatiladi?
11. `/etc/passwd` va `/etc/shadow` fayllari maydonlarini tavsiflang. Nima uchun xeshlar alohida faylga chiqarilgan?
12. Linuxda superfoydalanuvchi huquqlarini nima belgilaydi — `root` nomimi yoki boshqa narsa?
13. real UID va effective UID nimasi bilan farq qiladi? Ular qachon farqli bo'ladi?
14. SID nima? Foydalanuvchi xuddi shu nom bilan qayta yaratilganda Linux va Windows xatti-harakati qanday farq qiladi?
15. Windows kirish markeri nimalarni o'z ichiga oladi? Imtiyozlar ruxsatlardan nimasi bilan farq qiladi?
16. Katalog uchun `r`, `w`, `x` huquqlari nimani anglatadi? Foydalanuvchi o'ziga faqat o'qish uchun ochiq bo'lgan begona faylni o'chira oladimi?
17. `umask 027` da yangi fayl va katalog huquqlarini hisoblang.
18. setuid, setgid va sticky bitlarining vazifasini tushuntiring. Har biri uchun misol keltiring.
19. Fayl egasining huquqlari `---`, boshqalarniki — `r--`. Ega faylni o'qiy oladimi? Nima uchun?
20. POSIX ACL dagi `mask` yozuvi nima uchun kerak?
21. Linux capabilities nima? Ulardan foydalanishga misol keltiring.
22. Windows xavfsizlik deskriptori tuzilishini tavsiflang. DACL SACL dan nimasi bilan farq qiladi?
23. NULL DACL va bo'sh DACL o'rtasidagi farq nimada?
24. ACE larning kanonik tartibini va Windowsda kirishni tekshirish algoritmini tavsiflang.
25. Foydalanuvchi tarmoq orqali Share-huquq "O'qish" va NTFS-huquq "O'zgartirish" ga ega. Yakuniy huquqlar qanday?
26. Nima uchun `sudo` root sifatida kirishdan afzalroq? Nima uchun sudo orqali `vim` ni ishga tushirishga ruxsat berish xavfli?
27. UAC qanday ishlaydi? Filtrlangan marker nima?
28. SELinux AppArmor dan nimasi bilan farq qiladi? DAC va MAC qaysi tartibda tekshiriladi?
29. Windows yaxlitlik darajalari nima va ular Biba modelining qaysi qoidasini amalga oshiradi?
30. Universitet kompyuter sinfida hisob qaydnomalarini himoya qilish uchun chora-tadbirlar to'plamini taklif qiling.

---

# 18. Glossariy

| O'zbekcha | Ruscha | English |
|---|---|---|
| OT xavfsizligi | Безопасность ОС | OS security |
| Hisob qaydnomasi | Учетная запись | User account |
| Kirish huquqlari | Права доступа | Access rights / permissions |
| Imtiyoz | Привилегия | Privilege |
| Identifikatsiya | Идентификация | Identification |
| Autentifikatsiya | Аутентификация | Authentication |
| Avtorizatsiya | Авторизация | Authorization |
| Subyekt / obyekt | Субъект / объект | Subject / object |
| Egasi | Владелец | Owner |
| Guruh | Группа | Group |
| Kirishni boshqarish ro'yxati | Список управления доступом | Access Control List (ACL) |
| Diskretsion kirishni boshqarish | Дискреционное управление доступом | Discretionary Access Control (DAC) |
| Mandatli kirishni boshqarish | Мандатное управление доступом | Mandatory Access Control (MAC) |
| Rolga asoslangan kirishni boshqarish | Ролевое управление доступом | Role-Based Access Control (RBAC) |
| Minimal imtiyozlar tamoyili | Принцип минимальных привилегий | Principle of least privilege |
| Xesh funksiyasi, tuz | Хэш-функция, соль | Hash function, salt |
| Tahdid / zaiflik / hujum | Угроза / уязвимость / атака | Threat / vulnerability / attack |
| Murojaatlar monitori | Монитор обращений | Reference monitor |
| Kirish markeri | Маркер доступа | Access token |
| Xavfsizlik deskriptori | Дескриптор безопасности | Security descriptor |
| Imtiyozlarni oshirish | Повышение привилегий | Privilege escalation |
| Audit jurnali | Журнал аудита | Audit log |
| Ko'p faktorli autentifikatsiya | Многофакторная аутентификация | Multi-factor authentication (MFA) |

---

# 19. Adabiyotlar

1. Tanenbaum A., Bos H. *Modern Operating Systems.* 4th ed. — Pearson, 2014. — 9-bob "Security" (rus tilida: *Современные операционные системы*, СПб.: Питер, 2015).
2. Silberschatz A., Galvin P., Gagne G. *Operating System Concepts.* 10th ed. — Wiley, 2018. — 16–17-boblar (Security, Protection).
3. Stallings W. *Operating Systems: Internals and Design Principles.* 9th ed. — Pearson, 2017. — 15-bob.
4. Russinovich M., Solomon D., Ionescu A., Yosifovich P. *Windows Internals.* 7th ed., Part 1. — Microsoft Press, 2017. — 7-bob "Security".
5. Kerrisk M. *The Linux Programming Interface.* — No Starch Press, 2010. — 8, 9, 15, 17, 39-boblar.
6. Saltzer J., Schroeder M. *The Protection of Information in Computer Systems.* Proc. IEEE, 1975.
7. Hujjatlar: `man 5 passwd`, `man 5 shadow`, `man 1 chmod`, `man 5 acl`, `man 7 capabilities`, `man 5 sudoers`, `man 8 pam`.
8. Microsoft Learn: *Access Control*, *Security Identifiers*, *How User Account Control works*.
