Linux va terminal

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--.

rwx โ€” uch xil ruxsat

Har bir uchlikda uchta harf bo'lishi mumkin:

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:

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
Skriptni ishga tushirib bo'lmayotgan bo'lsa ("Permission denied"), deyarli har doim sabab โ€” bajarish ruxsati yo'qligi. Yechim: 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
Egalikni o'zgartirish odatda administrator (root) huquqini talab qiladi, chunki boshqa birovning faylini o'zlashtirib olish xavfli bo'lardi. Shu bois 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.

Ubuntuda root paroli odatda o'rnatilmagan, shuning uchun su - o'rniga sudo -i ishlatiladi โ€” bu joriy foydalanuvchi paroli bilan root qobig'iga o'tkazadi. Amalda sudo yondashuvi sudan xavfsizroq hisoblanadi.

Xulosa