Ruxsatlar va egalik
Linux โ ko'p foydalanuvchili tizim. Shu bois har bir faylning kim o'qiy oladi, kim o'zgartira oladi, kim ishga tushira oladi degan qat'iy qoidalari bor. Bu darsda ruxsatlar (permissions) va egalik (ownership) tizimini, hamda administrator huquqlari bilan ishlashni o'rganamiz.
Ruxsatlarni ko'rish
ls -l natijasining eng chapidagi belgilar aynan ruxsatlarni bildiradi:
-rw-r--r-- 1 aziz dasturchilar 2048 Jul 1 10:30 hujjat.txt
Boshidagi 10 belgini bo'lib olaylik: - rw- r-- r--.
- 1-belgi (
-) โ tur:-oddiy fayl,dpapka,lhavola (link); - keyingi 3 (
rw-) โ egasi (owner) uchun ruxsatlar; - keyingi 3 (
r--) โ guruh (group) uchun ruxsatlar; - oxirgi 3 (
r--) โ boshqalar (others) uchun ruxsatlar.
rwx โ uch xil ruxsat
Har bir uchlikda uchta harf bo'lishi mumkin:
r(read) โ o'qish: fayl mazmunini ko'rish; papka uchun โ ichidagilar ro'yxatini olish;w(write) โ yozish: fayl mazmunini o'zgartirish; papka uchun โ ichida fayl yaratish/o'chirish;x(execute) โ bajarish: faylni dastur sifatida ishga tushirish; papka uchun โ ichigacdbilan kirish.
Agar ruxsat bo'lmasa, o'sha o'rinda - turadi. Masalan, rw- โ o'qish va yozish bor, bajarish yo'q. r-x โ o'qish va bajarish bor, yozish yo'q.
Demak, -rw-r--r-- shuni bildiradi: egasi o'qiy va yoza oladi, guruh faqat o'qiy oladi, boshqalar ham faqat o'qiy oladi.
chmod โ ruxsatlarni o'zgartirish (raqamli usul)
chmod (change mode) ruxsatlarni o'zgartiradi. Eng ko'p ishlatiladigan raqamli (octal) usulda har bir ruxsatga son beriladi:
r= 4w= 2x= 1
Har uchlik uchun kerakli ruxsatlar yig'indisi hisoblanadi. Masalan: rwx = 4+2+1 = 7; rw- = 4+2 = 6; r-x = 4+1 = 5; r-- = 4. Uch uchlik uchun uch raqam yoziladi (egasi, guruh, boshqalar):
chmod 644 hujjat.txt # rw-r--r-- (egasi o'qi/yoz, qolganlar o'qi)
chmod 755 skript.sh # rwxr-xr-x (egasi hammasi, qolganlar o'qi/bajar)
chmod 600 maxfiy.txt # rw------- (faqat egasi o'qiy/yoza oladi)
chmod 777 hamma.txt # rwxrwxrwx (hamma hamma narsa qila oladi)
Eng ko'p uchraydigan qiymatlar: 644 โ oddiy fayllar uchun, 755 โ papkalar va skriptlar uchun, 600 โ maxfiy fayllar (parollar, kalitlar) uchun.
chmod 777 โ "hamma hamma narsa qila oladi" degani. Bu xavfsizlik uchun juda yomon! Boshqa foydalanuvchilar faylingizni o'zgartira, o'chira oladi. Muammoni hal qildim deb 777 qo'yish โ yangi boshlovchining eng ko'p qiladigan xatosi. Aniq kerakli minimal ruxsatni bering.chmod โ belgili usul
Ruxsatlarni harflar bilan ham o'zgartirish mumkin. Bu usulda kimga (u=egasi, g=guruh, o=boshqalar, a=hammasi), qanday amal (+=qo'shish, -=olib tashlash, ==aniq belgilash) va qaysi ruxsat (r/w/x) ko'rsatiladi:
chmod +x skript.sh # hammaga bajarish ruxsatini qo'shish
chmod u+x skript.sh # faqat egasiga bajarish ruxsati
chmod g-w hujjat.txt # guruhdan yozish ruxsatini olib tashlash
chmod o-r maxfiy.txt # boshqalardan o'qish ruxsatini olib tashlash
chmod a+r ochiq.txt # hammaga o'qish ruxsati
chmod +x skript.sh. Buni bash skriptlari darsida yana ko'ramiz.Foydalanuvchi va guruh
Har bir faylning bir egasi (user) va bir guruhi (group) bo'ladi. Guruh โ bir necha foydalanuvchini birlashtiradigan tushuncha. Masalan, "dasturchilar" guruhidagi hamma a'zo shu guruhga tegishli fayllarga birdek ruxsat oladi.
Joriy foydalanuvchi va uning guruhlarini ko'rish:
whoami # joriy foydalanuvchi nomi
id # foydalanuvchi va guruh ID'lari
groups # a'zo bo'lgan guruhlar ro'yxati
chown โ egani o'zgartirish
chown (change owner) faylning egasini va/yoki guruhini o'zgartiradi. Sintaksis: chown egasi:guruh fayl:
chown aziz hujjat.txt # egasini 'aziz' qilish
chown aziz:dasturchilar hujjat.txt # egasi va guruhni birga
chown :dasturchilar hujjat.txt # faqat guruhni o'zgartirish
Papka va ichidagi hamma narsani birdaniga o'zgartirish uchun -R (rekursiv):
chown -R aziz:aziz /home/aziz/loyiha
chown ko'pincha sudo bilan ishlatiladi (quyida).root va sudo
root โ Linuxdagi bosh administrator, cheksiz huquqli "super foydalanuvchi". U istalgan faylni o'zgartira, o'chira, tizim sozlamalarini o'zgartira oladi. Kundalik ishda root sifatida ishlash xavfli โ bitta xato butun tizimni buzishi mumkin.
Shu sabab odatda oddiy foydalanuvchi sifatida ishlaymiz, faqat administrator huquqi kerak bo'lganda sudo (superuser do) buyrug'ini oldiga qo'shamiz:
sudo apt update # paket ro'yxatini yangilash
sudo chown aziz fayl.txt # egalikni o'zgartirish
sudo nano /etc/hosts # tizim faylini tahrirlash
sudo yozganingizda tizim parolingizni so'raydi. To'g'ri kiritsangiz, buyruq administrator huquqi bilan bajariladi. Parol yozayotganda ekranda hech narsa ko'rinmaydi โ bu normal, xavfsizlik uchun shunday.
sudo โ o'tkir pichoq: to'g'ri ishlatilsa foydali, ehtiyotsizlik esa tizimni buzadi. Internetdan ko'chirib olgan har qanday sudo buyrug'ini yaxshilab tushunmasdan ishga tushirmang. Ayniqsa sudo rm -rf kabi buyruqlardan ehtiyot bo'ling.su โ foydalanuvchini almashtirish
su (switch user) boshqa foydalanuvchiga o'tish imkonini beradi:
su aziz # 'aziz' foydalanuvchiga o'tish (uning parolini so'raydi)
su - # root'ga to'liq o'tish (root parolini so'raydi)
su - (chiziqcha bilan) โ nafaqat foydalanuvchini, balki uning muhitini (uy papkasi, o'zgaruvchilar) ham to'liq oladi. Root sessiyasidan chiqish uchun exit yoki Ctrl+D bosiladi.
su - o'rniga sudo -i ishlatiladi โ bu joriy foydalanuvchi paroli bilan root qobig'iga o'tkazadi. Amalda sudo yondashuvi sudan xavfsizroq hisoblanadi.Xulosa
- Har fayl uch guruh uchun ruxsatga ega: egasi, guruh, boshqalar;
r=o'qish (4),w=yozish (2),x=bajarish (1);chmod 644/755/600โ raqamli usul;chmod +xโ belgili usul;chmod 777dan qoching โ bu jiddiy xavfsizlik teshigi;chown egasi:guruh faylโ egalikni o'zgartiradi (odatdasudobilan);- root โ cheksiz huquqli administrator; kundalik ishda undan foydalanmang;
sudoโ bitta buyruqni administrator huquqi bilan bajaradi (parol so'raydi);suโ boshqa foydalanuvchiga o'tadi; Ubuntudasudo -iafzal.