Asosiy kontentga o‘tish
Innovialabs

Linuxda kirish huquqlari: chmod, chown va foydalanuvchilar

Asoslar4 daq

Qisqacha

Linuxdagi har bir faylning egasi, guruhi va ega, guruh hamda boshqalar uchun uchta huquq to‘plami (o‘qish, yozish, bajarish) bor; chmod huquqlarni, chown esa egasini o‘zgartiradi.

Qisqa javob

Linuxda har bir fayl va katalogning egasi (foydalanuvchi), guruhi va uchta huquq to‘plami bor:

  • u (user) — egasining huquqlari;
  • g (group) — guruh a’zolarining huquqlari;
  • o (others) — qolgan barcha foydalanuvchilarning huquqlari.

Har bir to‘plamda uchta bit bor: r (read, o‘qish), w (write, yozish), x (execute, bajarish). Ularni ls -l buyrug‘i bilan ko‘rish mumkin:

$ ls -l
-rw-r--r-- 1 deploy www-data  512 app.conf
drwxr-x--- 2 deploy www-data 4096 storage

Birinchi belgi — tur (- fayl, d katalog), keyin uchta uchlik keladi: ega, guruh, boshqalar. Bu yerda deploy — ega, www-data — guruh.

Fayl va katalog uchun r, w, x nimani anglatadi

Bitlar fayl va katalogda turlicha ishlaydi va chalkashlikning asosiy sababi aynan shu.

BitFaylKatalog
rmazmunini o‘qishichidagi fayllar ro‘yxatini ko‘rish
wmazmunini o‘zgartirishichida fayl yaratish, o‘chirish, nomini o‘zgartirish
xdastur sifatida ishga tushirishkatalogga kirish va fayllarga nom orqali murojaat qilish

Bundan kelib chiqadigan muhim xulosalar:

  • Katalogda x bo‘lmasa, fayl o‘qilishi mumkin bo‘lsa ham, uni ochib bo‘lmaydi.
  • Faylni o‘chirish faylning emas, katalogning huquqlariga (w + x) bog‘liq.
  • Veb-server /var/www/app/public/index.html faylini o‘qishi uchun yo‘ldagi har bir katalogda x kerak.

Raqamli va belgili yozuv

Raqamli (sakkizlik) yozuvda bitlar og‘irligi qo‘shiladi: r = 4, w = 2, x = 1. Har bir to‘plam uchun bitta raqam.

RaqamHuquqlarOdatiy qo‘llanilishi
644rw-r--r--oddiy fayllar, maxfiy ma’lumotsiz konfiglar
640rw-r-----xizmat guruhi o‘qiydigan konfiglar
600rw-------maxfiy kalitlar, .env
755rwxr-xr-xkataloglar, bajariladigan skriptlar
750rwxr-x---begonalardan yopilgan kataloglar
chmod 640 .env
chmod 755 deploy.sh

Belgili yozuv qolganlariga tegmasdan bitta bitni o‘zgartirish kerak bo‘lganda qulay:

chmod u+x deploy.sh      # egasiga bajarish huquqini qo‘shish
chmod g-w config.yml     # guruhdan yozish huquqini olish
chmod o= secret.key      # boshqalardan barcha huquqlarni olish
chmod -R g+rX storage    # X faqat kataloglarga (va bajariladigan fayllarga) x qo‘yadi

Egalar va guruhlar: chown va chgrp

  • chown deploy file — egasini o‘zgartirish;
  • chown deploy:www-data file — egasi va guruhini o‘zgartirish;
  • chgrp www-data file — faqat guruhini o‘zgartirish;
  • -R — butun katalog uchun rekursiv.

Foydalanuvchini guruhga qo‘shish: sudo usermod -aG www-data deploy. -a bayrog‘i majburiy, aks holda foydalanuvchi boshqa guruhlaridan chiqib ketadi. Guruh o‘zgarishlari tizimga qayta kirgandan keyin kuchga kiradi.

Veb-ilova uchun odatiy sxema

Maqsad: kodni faqat deploy foydalanuvchisi o‘zgartiradi, veb-server yoki PHP-FPM uni o‘qiydi, ilova esa faqat maxsus kataloglarga yozadi.

# ega — deploy foydalanuvchisi, guruh — veb-server foydalanuvchisi
sudo chown -R deploy:www-data /var/www/app

# kataloglar 750, fayllar 640
sudo find /var/www/app -type d -exec chmod 750 {} \;
sudo find /var/www/app -type f -exec chmod 640 {} \;

# ilova yozadigan kataloglar (yuklamalar, kesh, loglar)
sudo chmod -R g+w /var/www/app/storage

# maxfiy ma’lumotlarni faqat ega va guruh o‘qiydi
sudo chmod 640 /var/www/app/.env

Mantiq oddiy: veb-server jarayoni guruhga kiradi, shuning uchun kodni o‘qiy oladi, lekin o‘zgartira olmaydi. Agar ilovadagi zaiflik orqali buzib kirishsa, hujumchi manba kodini qayta yoza olmaydi.

Foydalanuvchi nomlari distributivga bog‘liq: Debian va Ubuntuda odatda www-data, RHEL asosidagi tizimlarda nginx yoki apache.

Ko‘p uchraydigan xatolar

  • chmod 777 bilan kirish xatosini «tuzatish». Bu tizimdagi barcha foydalanuvchilarga yozish huquqini beradi. Qaysi jarayon qaysi foydalanuvchi nomidan ishlayotganini aniqlang va huquqni faqat unga bering.
  • Hamma narsaga chmod -R 755, natijada barcha fayllar bajariladigan bo‘lib qoladi. Fayl va kataloglar huquqlarini find orqali alohida bering.
  • root nomidan deploy qilish. Fayllar root egaligiga o‘tadi va ilova keshga yoza olmay qoladi.
  • Maxfiy SSH kaliti 644 huquq bilan. OpenSSH undan foydalanishni rad etadi, 600 kerak.
  • Ota katalogda x unutilgan, shu sababli fayl huquqlari to‘g‘ri bo‘lsa ham nginx 403 qaytaradi.

Ko‘p beriladigan savollar

Bu yangi yaratilgan fayllarning standart huquqlarini belgilaydigan niqob. Keng tarqalgan 022 qiymati fayllarga 644, kataloglarga 755 beradi; 027 esa yangi fayllarni boshqalardan yopadi. Joriy qiymatni umask buyrug‘i ko‘rsatadi.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.