Skip to content

3. Foydalanuvchilar va ruxsatlar — 30 ta masala

Faqat laboratoriya mashinasida

Foydalanuvchi va ruxsatlarni o'zgartiruvchi buyruqlarni ish serverida emas, virtual mashinada (snapshot olingan holda) bajaring.

Fayllar bilan ishlash uchun:

mkdir -p ~/lab && cd ~/lab

Ruxsatlar

1. rw-r----- ruxsatini sakkizlik (octal) ko'rinishda yozing.
Misol: 640

Yechim

r=4, w=2, x=1. Egasi: rw- = 4+2 = 6. Guruh: r-- = 4. Boshqalar: --- = 0.

touch f.txt && chmod 640 f.txt && ls -l f.txt

2. deploy.sh skriptini egasi bajara oladigan, qolganlar faqat o'qiy oladigan va bajara oladigan qiling (rwxr-xr-x).
Misol: ls -l deploy.sh → -rwxr-xr-x

Yechim
touch deploy.sh
chmod 755 deploy.sh

3. Mavjud ruxsatlarni o'zgartirmasdan faqat egasiga x huquqini qo'shing.
Misol: -rw-r--r-- → -rwxr--r--

Yechim

chmod u+x deploy.sh
Simvolli yozuv (u+x, go-w) faqat ko'rsatilgan bitlarni o'zgartiradi, sakkizlik yozuv esa hammasini qayta yozadi.

4. deploy.sh dan guruh va boshqalarning yozish huquqini oling.
Misol: -rwxrwxrwx → -rwxr-xr-x

Yechim
chmod go-w deploy.sh

5. ~/lab/site katalogidagi barcha fayllarni 644, kataloglarni 755 qiling.
Misol: find ~/lab/site -type f -perm 644 — barcha fayllar chiqadi.

Yechim

mkdir -p ~/lab/site/css && touch ~/lab/site/index.html ~/lab/site/css/a.css
find ~/lab/site -type f -exec chmod 644 {} +
find ~/lab/site -type d -exec chmod 755 {} +
Qisqa yo'li: chmod -R u=rwX,go=rX ~/lab/site. Katta X — x ni faqat kataloglarga (yoki allaqachon bajariladigan fayllarga) beradi. chmod -R 755 esa oddiy fayllarni ham bajariladigan qilib qo'yadi.

6. f.txt ning egasini root, guruhini adm qiling.
Misol: ls -l f.txt → root adm

Yechim

sudo chown root:adm f.txt
Faqat guruhni o'zgartirish: sudo chgrp adm f.txt yoki chown :adm f.txt.

7. umask 022 bo'lganda yangi fayl va katalog qanday ruxsat bilan yaratiladi? umask 027 bo'lganda-chi?
Misol: 022 → fayl 644, katalog 755; 027 → fayl 640, katalog 750.

Yechim

umask 027
touch u.txt && mkdir u.d
ls -ld u.txt u.d
Fayl 666, katalog 777 dan boshlanadi, umask bitlari ayiriladi. Oddiy fayl hech qachon x bilan yaratilmaydi. Joriy sessiyadan keyin umask 022 bilan qaytaring.

8. Hamma yoza oladigan (others da w) oddiy fayllarni /etc dan toping.
Misol: odatda hech narsa chiqmaydi.

Yechim

sudo find /etc -xdev -type f -perm -0002 2>/dev/null
-perm -0002 — "kamida shu bit(lar) yoqilgan". Bu yerda hamma yoza oladigan fayl tizim xavfsizligiga tahdid.

9. Fayl ruxsati, egasi va guruhini bitta qatorda 640 student:student f.txt formatida chiqaring.
Misol: 640 student:student f.txt

Yechim
stat -c '%a %U:%G %n' f.txt

Maxsus ruxsatlar va kataloglar

10. Tizimdagi barcha SUID fayllarni toping va passwd nega ularning orasida ekanini tushuntiring.
Misol: /usr/bin/passwd, /usr/bin/sudo …

Yechim

find / -xdev -perm -4000 -type f 2>/dev/null
ls -l /usr/bin/passwd
-rwsr-xr-x dagi s — SUID: fayl uni ishga tushirgan foydalanuvchi emas, egasi (root) huquqi bilan ishlaydi. Shu sabab oddiy foydalanuvchi /etc/shadow ni yangilay oladi. Notanish SUID fayl — xavfsizlik auditida birinchi tekshiriladigan narsa.

11. /srv/team jamoaviy katalogini yarating: unda yaratilgan fayllar avtomatik developers guruhiga tegishli bo'lsin.
Misol: ls -ld /srv/team → drwxrwsr-x ... developers

Yechim

sudo groupadd developers
sudo mkdir -p /srv/team
sudo chgrp developers /srv/team
sudo chmod 2775 /srv/team
Boshlang'ich 2 — SGID katalogda: ichida yaratilgan yangi fayllar yaratuvchining asosiy guruhini emas, katalogning guruhini oladi.

12. /tmp ning ruxsatini ko'rsating va oxiridagi t nimani anglatishini tushuntiring.
Misol: drwxrwxrwt

Yechim

ls -ld /tmp
t — sticky bit: hamma /tmp ga yoza oladi, lekin faylni faqat uning egasi (yoki katalog egasi, root) o'chira oladi. Qo'lda: chmod 1777 dir yoki chmod +t dir.

13. Nima uchun cd secret ishlamay, Permission denied chiqadi? Katalog drw-r--r-- bo'lsa-chi?
Misol: x bit yo'q.

Yechim

mkdir secret && chmod 644 secret
cd secret
ls secret
Katalogda x — "ichiga kirish/o'tish" huquqi. xsiz cd ishlamaydi, ls secret esa nomlarni ko'rsatsa ham metama'lumotni ololmaydi (cannot access). r — nomlar ro'yxatini o'qish.

14. /home/x/a/b/c.txt ochilmayapti. Yo'lning qaysi qismida ruxsat yetishmasligini toping.
Misol: har bir bo'lakning ruxsati bitta ro'yxatda.

Yechim

namei -l /home/student/lab/proj/README.md
namei -l yo'lning har bir qismini egasi va ruxsati bilan ko'rsatadi: yetishmayotgan x darhol ko'rinadi.

15. Faylni o'chirish uchun fayl yoki katalog ruxsati kerakligini tajriba bilan ko'rsating.
Misol: chmod 000 locked.txt bo'lsa ham, katalogda w bor bo'lsa o'chadi.

Yechim

mkdir d && touch d/locked.txt && chmod 000 d/locked.txt
rm -f d/locked.txt
Faylni o'chirish — katalog yozuvini o'zgartirish, shuning uchun katalogda w va x kerak. Fayl ruxsati bu yerda rol o'ynamaydi.

Foydalanuvchi va guruhlar

16. ali foydalanuvchisini uy katalogi va /bin/bash shell bilan yarating.
Misol: id ali ishlaydi, /home/ali mavjud.

Yechim

sudo useradd -m -s /bin/bash ali
sudo passwd ali
id ali
-m uy katalogini yaratadi. -msiz katalog yaratilmaydi.

17. ali ga qaysi guruhlar tegishli ekanini ko'rsating.
Misol: uid=1001(ali) gid=1001(ali) groups=1001(ali)

Yechim
id ali
groups ali

18. ali ni sudo guruhiga (Ubuntu) mavjud guruhlarini yo'qotmasdan qo'shing.
Misol: groups ali da sudo ham bor.

Yechim
sudo usermod -aG sudo ali

Ehtiyot bo'ling

-asiz usermod -G sudo ali foydalanuvchini boshqa barcha qo'shimcha guruhlardan chiqarib, faqat sudo da qoldiradi. RHEL oilasida administrator guruhi wheel.

19. developers guruhini yarating va ali ni unga qo'shing. Guruhga a'zolik yangi sessiyada kuchga kirishini tushuntiring.
Misol: ali qayta kirgach id da developers ko'rinadi.

Yechim

sudo usermod -aG developers ali
getent group developers
Guruhlar kirish (login) vaqtida o'qiladi. Ochiq sessiya eski ro'yxat bilan ishlayveradi: chiqib qayta kiring yoki newgrp developers.

20. Foydalanuvchining parolini bloklang va holatini tekshiring.
Misol: passwd -S ali → ikkinchi maydon L.

Yechim

sudo passwd -l ali
sudo passwd -S ali
Bu faqat parol bilan kirishni to'sadi. SSH kalit bilan kirish davom etishi mumkin; to'liq bloklash uchun sudo usermod -e 1 ali ham qo'shiladi.

21. ali va uning uy katalogini butunlay o'chiring.
Misol: id ali → no such user.

Yechim

sudo userdel -r ali
-r uy katalogi va pochta fayllarini ham o'chiradi. Foydalanuvchi tizimga kirgan bo'lsa, avval jarayonlarini to'xtating.

22. Parol muddati sozlamalarini ko'ring va parolni har 90 kunda almashtirishni majburlang.
Misol: Maximum number of days between password change : 90

Yechim
sudo chage -l student
sudo chage -M 90 student

23. /etc/passwd da UID qaysi ustunda? student ning UID sini faqat shu ustun orqali oling.
Misol: 1000

Yechim

grep '^student:' /etc/passwd | cut -d: -f3
Ustunlar: nom:x:UID:GID:izoh:uy:shell. x — parol /etc/shadow da saqlanishini bildiradi.

24. /etc/shadow nega oddiy foydalanuvchi uchun o'qib bo'lmaydi? Ruxsatini ko'rsating.
Misol: -rw-r----- 1 root shadow

Yechim

ls -l /etc/shadow
Unda parol xeshlari bor; o'qiy olgan odam ularni offline taxmin qilishi (brute-force) mumkin. /etc/passwd esa tizim ishlashi uchun hamma o'qiy olishi kerak, shuning uchun xeshlar ajratib olingan.

25. Tizim xizmati uchun kirish imkoni bo'lmagan svc-app foydalanuvchisini yarating.
Misol: su - svc-app → This account is currently not available.

Yechim

sudo useradd -r -s /usr/sbin/nologin svc-app
-r — tizim foydalanuvchisi (UID oralig'i boshqa), nologin — interaktiv shell yo'q. Xizmatlarni root emas, shunday foydalanuvchi ostida ishga tushirish eng kam imtiyoz tamoyilidir.

sudo va ACL

26. Joriy foydalanuvchi sudo bilan qanday buyruqlarni bajara olishini ko'ring.
Misol: (ALL : ALL) ALL

Yechim
sudo -l

27. ali ga faqat systemctl restart nginx buyrug'ini parolsiz bajarishga ruxsat bering. Sintaksisni saqlashdan oldin tekshiring.
Misol: visudo -cf → parsed OK.

Yechim
echo 'ali ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx' | sudo tee /etc/sudoers.d/ali
sudo chmod 0440 /etc/sudoers.d/ali
sudo visudo -cf /etc/sudoers.d/ali

Ehtiyot bo'ling

/etc/sudoers ni oddiy muharrir bilan tahrirlamang: sintaksis xatosi sudo ni butunlay buzadi. visudo saqlashdan oldin tekshiradi. Buyruqning to'liq yo'li yoziladi.

28. su va su - farqini ko'rsating.
Misol: su - ali dan keyin pwd → /home/ali.

Yechim

su ali -c pwd
su - ali -c pwd
su - (login shell) maqsadli foydalanuvchining to'liq muhitini (uy katalogi, PATH, profil fayllari) yuklaydi. -siz eski muhit qoladi.

29. alice ga ~/lab/report.txt ni o'qish va yozish huquqini egasi/guruhini o'zgartirmasdan bering (ACL).
Misol: getfacl da user:alice:rw-.

Yechim

touch ~/lab/report.txt
setfacl -m u:alice:rw ~/lab/report.txt
getfacl ~/lab/report.txt
Standart rwx faqat bitta egasi va bitta guruhni biladi. ACL esa aniq foydalanuvchilarga alohida huquq beradi. ls -l da ruxsat oxirida + belgisi paydo bo'ladi.

30. ACL ni olib tashlang va fayl standart ruxsatga qaytganini tekshiring.
Misol: getfacl da alice qatori yo'q.

Yechim

setfacl -b ~/lab/report.txt
getfacl ~/lab/report.txt
-b — barcha kengaytirilgan yozuvlarni olib tashlaydi. Bitta yozuv: setfacl -x u:alice file.