Mundarija (25)
- Bu darsda
- 1. Nega bu kerak?
- 2. Foydalanuvchilar va guruhlar
- 3. Uch toifa va uch huquq
- 3.1 Kimga: egasi, guruh, boshqalar
- 3.2 Nima: o'qish, yozish, ishga tushirish
- 4. Ruxsat qatorini o'qish
- 5. Raqamli yozuv: 4, 2, 1
- 6. chmod va chown buyruqlari
- 7. Superuser: sudo, Administrator va UAC
- 7.1 Linux va macOS: sudo
- 7.2 Windows: Administrator va UAC
- 8. Ko'p uchraydigan xatolar
- 8.1 Permission denied
- 8.2 EACCES: permission denied
- 8.3 Muammoni chmod 777 bilan "hal qilish"
- 8.4 Hamma narsani sudo bilan qilish
- 8.5 SSH kalit "juda ochiq"
- 9. Hujumchi nigohi
- 10. Mashqlar
- 1-mashq (oson): Raqam va harflar
- 2-mashq (o'rta): Qatorni o'qing
- 3-mashq (qiyin): Serverdagi ruxsatlarni loyihalang
- 11. Real ishda
- Xulosa
Fayl ruxsatlari va foydalanuvchilar
Qisqacha: Linux va macOS'da har faylda uchta toifa uchun ruxsat yozilgan: egasi, guruhi va boshqalar. Har toifa uchta huquqqa ega bo'lishi mumkin:
r— o'qish,w— yozish,x— ishga tushirish. Raqamdar= 4,w= 2,x= 1, shuning uchunchmod 755— egasiga hammasi, boshqalarga o'qish va ishga tushirish. Tizimni o'zgartiradigan ishlar uchun esasudo(Linux) yoki administrator huquqi (Windows) kerak.
Bu darsda
- Foydalanuvchi, guruh va superuser (root) nima ekanini tushuntira olasiz.
-rwxr-xr-xkabi ruxsat qatorini o'qiy olasiz.- Harfli ruxsatni raqamga (
755,644,600) va aksincha o'gira olasiz. chmod,chownvasudonima qilishini bilasiz.Permission deniedxatosining sababini topa olasiz vachmod 777nega xavfli ekanini tushuntirasiz.
Oldin bilishingiz kerak: Operatsion tizim nima, Fayl tizimi, O'n oltilik va sakkizlik sanoq sistemalari.
1. Nega bu kerak?
Kompyuteringizda siz yolg'iz ishlayotgandek tuyuladi. Aslida unda o'nlab "foydalanuvchi" bor: tizim xizmatlari, antivirus, yangilanish dasturi. Serverda esa bir vaqtda veb-server, baza va bir nechta dasturchi ishlaydi.
Agar har biri istalgan faylni o'qiy va o'zgartira olsa nima bo'ladi?
- Saytdagi kichik xatodan foydalangan hujumchi bazaning parolini o'qib oladi.
- Tasodifiy xato buyruq tizim fayllarini o'chirib, serverni ishdan chiqaradi.
Shuning uchun OS har bir faylga "kim nima qila oladi" degan yozuvni biriktiradi. Kernel har bir fayl so'rovida shu yozuvni tekshiradi — Operatsion tizim darsidagi system call'ni eslang. Serverda birinchi marta Permission denied ("ruxsat berilmadi") ko'rganingizda, bu dars aynan kerak bo'ladi.
2. Foydalanuvchilar va guruhlar
Foydalanuvchi (user) — tizimdagi hisob: nomi va raqami bor. Siz kompyuterga kirganda ma'lum bir foydalanuvchi bo'lib kirasiz. Siz ishga tushirgan har bir jarayon ham shu foydalanuvchi nomidan ishlaydi.
Foydalanuvchilar odamlar uchun ham, dasturlar uchun ham ochiladi. Masalan, Linux serverda veb-server ko'pincha alohida www-data foydalanuvchisi nomidan ishlaydi. U buzilsa ham, faqat o'z huquqlari doirasida zarar yetkaza oladi.
Guruh (group) — foydalanuvchilar to'plami. Guruhga ruxsat bersangiz, uning barcha a'zolari o'sha ruxsatni oladi. Masalan, dasturchilar guruhidagi Ali, Malika va Jasur loyiha fayllarini tahrirlay oladi.
Har tizimda cheklovsiz bitta hisob bor:
- Linux va macOS'da —
root(superuser, "eng yuqori foydalanuvchi"). - Windows'da — administratorlar guruhi (Administrators).
Ular istalgan faylni o'qiy, o'zgartira va o'chira oladi.
Tekshirib ko'ring: Nega veb-server
rootnomidan emas, alohidawww-datafoydalanuvchisi nomidan ishlaydi?
Javob
Veb-server internetdan keladigan so'rovlarni qabul qiladi, demak hujumga birinchi bo'lib uchraydi. U root bo'lsa, hujumchi butun serverni boshqarib oladi. Alohida foydalanuvchi bo'lsa, hujumchi faqat shu foydalanuvchiga ruxsat berilgan fayllarga yetadi.
3. Uch toifa va uch huquq
3.1 Kimga: egasi, guruh, boshqalar
Linux va macOS'da har faylning ruxsati uch toifa uchun alohida yoziladi:
| Toifa | Harfi | Kim |
|---|---|---|
| Egasi (owner) | u (user) |
faylni yaratgan yoki unga egalik qiladigan foydalanuvchi |
| Guruh (group) | g |
faylga biriktirilgan guruh a'zolari |
| Boshqalar (others) | o |
qolgan hamma |
O'xshatish: sizning uyingiz. Egasi — siz, hamma xonaga kirasiz va istagan narsani o'zgartirasiz. Guruh — oila a'zolari: yashaydi, foydalanadi, lekin ba'zi javonlarni ochmaydi. Boshqalar — mehmonlar: faqat mehmonxonada o'tirib, qarab turishi mumkin.
3.2 Nima: o'qish, yozish, ishga tushirish
| Huquq | Harfi | Faylda | Papkada |
|---|---|---|---|
| O'qish (read) | r |
ichini ko'rish | ichidagi nomlar ro'yxatini ko'rish |
| Yozish (write) | w |
ichini o'zgartirish | ichida fayl yaratish, o'chirish, nomini o'zgartirish |
| Ishga tushirish (execute) | x |
dastur sifatida ishga tushirish | papkaning ichiga kirish |
Sakkizlik sanoq sistemasi darsida x ni "bajarish" deb atagan edik — "ishga tushirish" bilan bir narsa.
Papka ustuniga diqqat qiling. Faylni o'chirish — papkaning w huquqiga bog'liq, faylning o'ziga emas. Chunki o'chirish — papkadagi ro'yxatdan bir nomni olib tashlash.
Tekshirib ko'ring: Papkada sizda
rbor, lekinxyo'q. Nima qila olasiz?
Javob
Papka ichidagi fayllarning nomlarini ko'ra olasiz, lekin ichiga kira olmaysiz va fayllarni ocha olmaysiz. Ichkariga kirish uchun x kerak. Shuning uchun papkalarga odatda r va x birga beriladi.
4. Ruxsat qatorini o'qish
Linux terminalida papkadagi fayllarni ruxsatlari bilan ko'rsatadigan buyruq bor (ls -l). Terminalni kursda keyinroq o'rganamiz. Hozir faqat uning natijasini o'qishni o'rganamiz:
-rwxr-xr-x 1 ali dasturchilar 2048 Sep 27 10:00 deploy.sh
drwxr-x--- 2 ali dasturchilar 4096 Sep 27 10:00 rasmlar
-rw------- 1 ali ali 220 Sep 27 10:00 .envBirinchi qatorni bo'laklaymiz:
| Qism | Ma'nosi |
|---|---|
- |
tur: - — oddiy fayl, d — papka (directory) |
rwx |
egasi: o'qish, yozish, ishga tushirish — hammasi bor |
r-x |
guruh: o'qish va ishga tushirish, yozish yo'q (-) |
r-x |
boshqalar: o'qish va ishga tushirish |
ali |
fayl egasi |
dasturchilar |
fayl guruhi |
Keyin fayl hajmi (baytda), o'zgartirilgan sana va nomi keladi. - belgisi har doim "shu huquq yo'q" degani. Huquqlarning tartibi o'zgarmaydi: avval r, keyin w, keyin x.
Endi ikkinchi qatorni siz o'qing: drwxr-x---. Bu papka. Guruh a'zolari unga nima qila oladi? r-x — ro'yxatni ko'radi va kiradi, lekin yoza olmaydi. Boshqalarda esa ---, ya'ni hech qanday huquq yo'q. Uchinchi qatorda .env faylini egasidan boshqa kim o'qiy oladi? Javob:
OS ruxsatni qanday tekshiradi:
flowchart TD
A["Jarayon faylni ochmoqchi"] --> B{"root mi?"}
B -->|Ha| OK["Ruxsat beriladi"]
B -->|Yo'q| C{"Fayl egasimi?"}
C -->|Ha| U["Egasi uchun rwx tekshiriladi"]
C -->|Yo'q| D{"Fayl guruhidami?"}
D -->|Ha| G["Guruh uchun rwx tekshiriladi"]
D -->|Yo'q| O["Boshqalar uchun rwx tekshiriladi"]Muhim: OS faqat bitta mos toifaga qaraydi. Siz fayl egasi bo'lsangiz, guruh va boshqalar ustunlari sizga ta'sir qilmaydi.
Tekshirib ko'ring:
-rw-r--r--faylida boshqalar faylni o'zgartira oladimi?
Javob
Yo'q. Boshqalar uchun uchlik — r--: faqat o'qish. Yozish (w) faqat egasida bor. Bu HTML, CSS va rasm fayllari uchun odatiy ruxsat.
5. Raqamli yozuv: 4, 2, 1
Har uchlikni bitta raqam bilan yozish mumkin. Har huquqning o'z "qiymati" bor:
r= 4w= 2x= 1
Qiymatlar qo'shiladi. Ikkilik sanoq sistemasi darsini eslang: rwx — aslida uchta bit, 4, 2 va 1 esa ularning qiymati. Shuning uchun natija doim 0 dan 7 gacha — bitta sakkizlik raqam (sakkizlik sanoq sistemasi).
| Raqam | Harflar | Hisob | Ma'nosi |
|---|---|---|---|
| 7 | rwx |
4 + 2 + 1 | hammasi |
| 6 | rw- |
4 + 2 | o'qish va yozish |
| 5 | r-x |
4 + 1 | o'qish va ishga tushirish |
| 4 | r-- |
4 | faqat o'qish |
| 0 | --- |
0 | hech narsa |
Uch toifa — uch raqam: egasi, guruh, boshqalar.
To'liq yechilgan misol: rwxr-xr-x.
- Uchlikka bo'lamiz:
rwx|r-x|r-x. - Har birini hisoblaymiz: 4+2+1 = 7, 4+1 = 5, 4+1 = 5.
- Natija: 755.
Keyingi jadvalda skript so'zi uchraydi. Skript — kompyuter ketma-ket bajaradigan buyruqlar yozilgan matn fayli (masalan, yuqoridagi deploy.sh).
Eng ko'p uchraydigan to'rtta:
| Raqam | Harflar | Qayerda |
|---|---|---|
| 755 | rwxr-xr-x |
papkalar, ishga tushiriladigan skriptlar |
| 644 | rw-r--r-- |
oddiy fayllar: HTML, CSS, rasmlar |
| 600 | rw------- |
maxfiy fayllar: .env, SSH kalit |
| 700 | rwx------ |
shaxsiy papka yoki skript |
Qisman yechilgan misol: rw-r----- → egasi 6, guruh 4, boshqalar 0. Natija:
Tekshirib ko'ring:
chmod 600 .envdan keyin guruh a'zosi Malika faylni o'qiy oladimi?
Javob
Yo'q. 600 = rw-------: faqat egasida o'qish va yozish bor. Guruh (0) va boshqalar (0) hech narsa qila olmaydi. Maxfiy fayllar uchun aynan shu kerak.
6. chmod va chown buyruqlari
Ruxsatlarni terminalda ikki buyruq bilan o'zgartirasiz. Hozir ularni ko'rib qo'ying — terminalni o'rgangach, o'zingiz yozasiz.
chmod (change mode — "rejimni o'zgartirish") — ruxsatlarni o'zgartiradi. Raqam bilan:
chmod 644 index.html # egasi: rw-, qolganlar: r--
chmod 600 .env # faqat egasi o'qiydi va yozadiYoki harflar bilan: kimga (u, g, o, hammaga a), qo'shish + yoki olib tashlash -, qaysi huquq:
chmod +x deploy.sh # hammaga ishga tushirish huquqini qo'shish
chmod g-w hisobot.txt # guruhdan yozish huquqini olishYangi yozilgan skript odatda x huquqisiz yaratiladi. Uni ishga tushirishdan oldin chmod +x qilinadi. Buni Shell skript yozish darsida amalda ko'rasiz.
chown (change owner — "egasini o'zgartirish") — fayl egasi va guruhini o'zgartiradi:
# egasi — ali, guruhi — dasturchilar
sudo chown ali:dasturchilar loyiha.txtBoshqa odamning faylini o'zingizga "olish" oddiy foydalanuvchiga ruxsat etilmaydi. Shuning uchun chown odatda sudo bilan ishlatiladi. sudo ni keyingi bo'limda ko'ramiz.
Diqqat:
chmodvachownda-Rsozlamasi (masalan,chmod -R 755 papka) papka ichidagi hamma narsaga birdaniga ta'sir qiladi. Noto'g'ri papkada ishlatilsa, minglab faylning ruxsati buziladi. Uni ishlatishdan oldin qaysi papkada turganingizni ikki marta tekshiring.
7. Superuser: sudo, Administrator va UAC
7.1 Linux va macOS: sudo
root hamma narsani qila oladi — shuning uchun u bilan doim ishlash xavfli. Bitta xato buyruq butun tizimni o'chirib yuborishi mumkin. Dasturchilar oddiy foydalanuvchi sifatida ishlaydi va faqat kerak bo'lganda vaqtincha root huquqini oladi.
Buning uchun sudo ("superuser do" — "superuser sifatida bajar") ishlatiladi:
sudo apt update # Ubuntu'da dasturlar ro'yxatini yangilashapt — Ubuntu'da dastur o'rnatuvchi vosita. Uni Dastur o'rnatish darsida o'rganamiz.
sudo sizning parolingizni so'raydi (root parolini emas). U faqat shu bitta buyruqni root huquqi bilan bajaradi va buni jurnalga yozib qo'yadi. Serverda kim nima qilganini keyin ko'rish mumkin.
7.2 Windows: Administrator va UAC
Windows'da rwx o'rniga batafsilroq ruxsatlar ro'yxati ishlatiladi. Uni faylning "Properties" → "Security" ("Xavfsizlik") yorlig'ida ko'rasiz. Kundalik ishda unga kam tegasiz — rwx asosan Linux serverlar va macOS'da kerak.
Windows'dagi sudo ning o'xshashi — UAC (User Account Control, "hisob nazorati"). Dastur tizimni o'zgartirmoqchi bo'lsa (masalan, dastur o'rnatish), ekran qorayadi va oyna chiqadi:
Do you want to allow this app to make changes to your device?Tarjimasi: "Bu ilovaga qurilmangizga o'zgartirish kiritishga ruxsat berasizmi?". Siz bilmagan dastur uchun bu oyna chiqsa — "No" ("Yo'q") ni bosing.
Dasturni administrator huquqi bilan ochish uchun: sichqonchaning o'ng tugmasi → "Run as administrator" ("Administrator sifatida ishga tushirish").
Tekshirib ko'ring: Nega
sudoroot sifatida kirib ishlashdan xavfsizroq?
Javob
sudo root huquqini faqat bitta buyruq uchun beradi va har safar ongli qaror talab qiladi. Qolgan vaqtda siz cheklangan foydalanuvchisiz — xato buyruq faqat o'z fayllaringizga ta'sir qiladi. Bundan tashqari, sudo har bir buyruqni jurnalga yozadi.
8. Ko'p uchraydigan xatolar
8.1 Permission denied
Serverda skriptni ishga tushirdingiz:
bash: ./deploy.sh: Permission deniedTarjimasi: "bash: ./deploy.sh: ruxsat berilmadi". bash — terminalda buyruqlarni bajaruvchi dastur, xabar undan keldi. Sababi: faylda x huquqi yo'q. Yechim: chmod +x deploy.sh.
8.2 EACCES: permission denied
Node.js dasturida (JavaScript'ni kompyuterda ishlatadigan dastur) shunday xato chiqishi mumkin:
Error: EACCES: permission denied, open '/etc/hosts'Tarjimasi: EACCES — "Error: ACCESS", ya'ni kirishda xato. "Ruxsat berilmadi, ochmoqchi bo'lgan: /etc/hosts". Dastur siz nomingizdan ishlayapti, sizda esa bu faylga yozish huquqi yo'q. Yechim: avval o'ylang — dasturga bu fayl rostdan kerakmi? Ko'pincha to'g'ri yechim faylni o'z papkangizda saqlash, sudo emas.
8.3 Muammoni chmod 777 bilan "hal qilish"
Biror narsa ishlamasa, ko'p boshlovchi chmod 777 qiladi. 777 = rwxrwxrwx — hamma hamma narsani qila oladi. Xato yo'qoladi, lekin eshik ochiq qoladi: tizimdagi istalgan dastur yoki hujumchi faylni o'zgartira oladi. Yechim: kimga qaysi huquq yetishmayotganini aniqlang va faqat o'shani bering.
8.4 Hamma narsani sudo bilan qilish
Loyiha papkasida buyruqlarni sudo bilan bajarsangiz, yangi fayllarning egasi root bo'lib qoladi. Keyin ularni oddiy foydalanuvchi sifatida o'zgartira olmaysiz va yana EACCES olasiz. Yechim: egalikni qaytaring — sudo chown -R ali:ali loyiha/ — va keyin sudo siz ishlang.
8.5 SSH kalit "juda ochiq"
Serverga ulanish uchun maxfiy kalit fayli ishlatiladi (SSH kalit — Git qismida o'rganamiz). Uning ruxsati 644 bo'lsa, ulanish rad etiladi:
Permissions 0644 for '/home/ali/.ssh/id_ed25519' are too open.
This private key will be ignored.Tarjimasi: "Fayl ruxsatlari 0644 — juda ochiq. Bu maxfiy kalit e'tiborga olinmaydi". Dastur boshqalar kalitni o'qiy olishini ko'rib, uni ishlatishdan bosh tortdi. Yechim: chmod 600 ~/.ssh/id_ed25519.
9. Hujumchi nigohi
Tasavvur qiling: saytingizdagi xatodan foydalanib, hujumchi serverda buyruq bajara oldi. U veb-server nomidan — www-data foydalanuvchisi sifatida ishlayapti. Uning keyingi qadamlari:
.envni o'qish. Unda baza paroli va to'lov tizimi kaliti bor. Fayl 644 bo'lsa, boshqalar ham o'qiy oladi —www-dataham. Parollar o'g'irlandi.- Sahifani almashtirish.
index.htmlga 777 berilgan bo'lsa, hujumchi uni o'z matni bilan almashtiradi. Mijozlar saytingizda firibgarlik havolasini ko'radi. - Butun serverni egallash. Veb-server
rootnomidan ishlasa, hujumchi hamma narsani qila oladi.
Himoya shu darsdagi qoidalardan iborat:
.env— 600 va ilova foydalanuvchisiga tegishli.www-datauni o'qiy olmaydi.- HTML va boshqa fayllar — 644 va deploy qiluvchi foydalanuvchiga tegishli.
www-dataularni o'qiydi, lekin o'zgartira olmaydi. - Veb-server hech qachon
rootbo'lib ishlamaydi. - Hech qayerda 777 yo'q.
Bu eng kam huquq tamoyili (least privilege) deyiladi: har bir foydalanuvchi va dasturga ishlashi uchun zarur bo'lgan eng kam huquq beriladi. Xatoga yo'l qo'yilsa ham, zarar kichik bo'ladi.
10. Mashqlar
1-mashq (oson): Raqam va harflar
Raqamlarni harflarga o'giring (masalan, 7 → rwx):
- 6 →
- 5 →
- 4 →
Yechim
- 6 = 4 + 2 →
rw-(o'qish va yozish). - 5 = 4 + 1 →
r-x(o'qish va ishga tushirish). - 4 →
r--(faqat o'qish).
Tartib doim r, w, x. Yo'q huquq o'rnida - turadi.
2-mashq (o'rta): Qatorni o'qing
-rw-rw-r-- 1 malika dizaynerlar 5120 Sep 27 11:00 logo.svg- Bu fayl yoki papkami?
- Egasi kim, guruhi qaysi?
dizaynerlarguruhidagi Jasur faylni o'zgartira oladimi?- Boshqa foydalanuvchi Ali-chi?
- Ruxsatning raqamli ko'rinishi qanday?
Yechim
- Fayl — birinchi belgi
-. - Egasi —
malika, guruhi —dizaynerlar. - Ha. Guruh uchligi
rw-— o'qish va yozish bor. - Yo'q. Ali guruhda emas, demak "boshqalar" uchligi amal qiladi:
r--— faqat o'qish. rw-= 6,rw-= 6,r--= 4 → 664.
3-mashq (qiyin): Serverdagi ruxsatlarni loyihalang
Serverga sayt joylayapsiz. Fayllar ali foydalanuvchisiga tegishli, veb-server esa www-data nomidan ishlaydi va faqat fayllarni o'qishi kerak. Har biriga raqamli ruxsat tanlang va sababini yozing:
index.html,style.cssdeploy.sh— faqat Ali ishga tushiradi.env— baza paroli- Biror narsa ishlamay qoldi, kimdir
chmod -R 777 sayt/ni taklif qildi. Nima deysiz?
Yechim
- 644 — Ali tahrirlaydi, qolganlar (jumladan
www-data) faqat o'qiydi. - 700 — faqat Ali o'qiydi, o'zgartiradi va ishga tushiradi. Boshqalarga bu skript kerak emas.
- 600 — faqat egasi o'qiydi. Aslida
.envni ishlatadigan ilova foydalanuvchisi uning egasi bo'lishi kerak. - Rad etasiz. 777 — hammaga yozish huquqi: har qanday dastur yoki hujumchi fayllarni o'zgartira oladi va
.envni o'qiy oladi. To'g'ri yo'l — xato xabarini o'qib, aynan qaysi foydalanuvchiga qaysi huquq yetishmayotganini topish.
11. Real ishda
- Deploy: serverga yuklangan skriptlar
chmod +xqilinadi, maxfiy fayllar 600 qilinadi. Bu kursning Linux server qismida har kuni uchraydi. - SSH kalitlar:
~/.sshpapkasi — 700, maxfiy kalit — 600. Aks holda ulanish ishlamaydi. - Docker va CI: konteynerlarda ilovani root'dan boshqa foydalanuvchi nomidan ishga tushirish — xavfsizlik bo'yicha tekshiruvlarning standart talabi. Bu vositalarni kursda keyinroq o'rganamiz.
- Intervyu savoli: "
chmod 755vachmod 644nimani bildiradi? Nega777yomon?" — backend va DevOps intervyularida ko'p beriladi.
Xulosa
- Har fayl egasi va guruhiga ega. Ruxsat uch toifa (egasi, guruh, boshqalar) uchun alohida yoziladi.
r— o'qish,w— yozish,x— ishga tushirish. Papkadax— ichiga kirish,w— ichida yaratish va o'chirish.- Raqamda
r= 4,w= 2,x= 1: 755 — skript va papka, 644 — oddiy fayl, 600 — maxfiy fayl. chmodruxsatni,chownegasini o'zgartiradi.sudobitta buyruqni root huquqi bilan bajaradi.- Windows'da buning o'rnida Administrator va UAC oynasi.
chmod 777— hech qachon to'g'ri javob emas. Eng kam huquq tamoyiliga amal qiling.
Keyingi dars: Qator oxiri (CRLF/LF), inode va symlink — Windows va Linux fayllarni nega biroz boshqacha yozishini va bu qanday xatolarga olib kelishini ko'ramiz.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!