Bosh sahifa Wiki Discretionary Access Control

Discretionary Access Control

Discretionary Access Control — obyekt egasi yoki egaga vakolat berilgan administrator kimga qanday access berilishini boshqaradigan xavfsizlik modeli. Unix fayl owner, group va mode bitlari, POSIX ACL hamda ko‘plab application permissionlari DAC misollaridir. “Discretionary” so‘zi egaga ruxsatni boshqalarga berish ixtiyori mavjudligini anglatadi.

Unix mode bitlari

Faylda owner UID, group GID va owner/group/other uchun read, write, execute bitlari mavjud. Kernel caller credentialini owner bilan solishtiradi; mos bo‘lsa owner bitlari, aks holda tegishli group yoki other bitlari qo‘llanadi. Bitlar ketma-ket “eng yaxshi ruxsatni qidirish” tarzida birlashtirilmaydi.

Katalog uchun read nomlarni ko‘rish, write entry yaratish/o‘chirish, execute esa path bo‘ylab qidirish huquqini bildiradi. Faylni o‘chirish ko‘pincha faylning o‘z write bitiga emas, parent katalog ruxsatiga bog‘liq.

Maxsus bitlar

Set-user-ID executable’ga exec paytida file owner credentialini berishi mumkin. Set-group-ID katalogda yangi fayllar parent groupini meros oladi. Sticky bit umumiy writable katalogda entry’ni faqat owner, directory owner yoki privileged process o‘chirishini cheklaydi.

Setuid dastur ishonchsiz argument, environment va file descriptorlarni qat’iy tekshiradi. Scriptlarda setuid semantikasi ko‘p tizimda xavfsizlik sabab qo‘llanmaydi.

ACL

POSIX ACL nomlangan qo‘shimcha user va grouplarga alohida ruxsat beradi. Mask entry nomlangan userlardan tashqari group class uchun maksimal effective huquqni cheklaydi. ls -ldagi mode bitlari ACL mavjudligida to‘liq siyosatni ko‘rsatmaydi.

Default ACL katalogdagi yangi childlarga boshlang‘ich ACL beradi. umask va default ACL o‘zaro ta’siri platforma qoidalariga muvofiq hisoblanadi. Nusxalash vositasi ACLni saqlamasa access o‘zgaradi.

Credential

Process real, effective va saved UID/GID hamda supplementary groupsga ega. Permission tekshiruvida odatda filesystem/effective credential ishlatiladi. User namespace mapping ID ko‘rinishini o‘zgartirishi mumkin.

Root DAC override capability’lariga ega bo‘lishi mumkin, ammo mandatory access control uni baribir cheklaydi. DACdan o‘tish MACdan o‘tishni anglatmaydi.

Cheklovlar

Egasi maxfiy faylni world-readable qilishi yoki nusxasini boshqalarga berishi mumkin. MAC markaziy siyosat bilan bu ixtiyorni cheklaydi. DAC shuningdek dastur ichidagi business authorizationni o‘zi ifodalamaydi; database row access alohida model talab qiladi.

Auditda path bilan birga inode owner, group, mode, ACL, parent directory va caller group membership qayd etiladi. Symlink va rename race’lari descriptor-based API bilan kamaytiriladi. Permission muammosini chmod 777 bilan yashirish least privilege’ni buzadi.

Umask

Process umask qiymati yangi fayl yoki katalog yaratishda so‘ralgan mode’dan ayrim bitlarni olib tashlaydi. U mavjud fayl permissionini o‘zgartirmaydi. Library aniq mode so‘rasa ham umask yakuniy natijaga ta’sir qiladi; security-sensitive dastur yaratgandan keyin effective mode’ni tekshiradi. Temporary file uchun atomik exclusive create va tor mode ishlatiladi, keyin chmod qilish oralig‘idagi ochiq oynadan qochiladi.

NFS talqini

Remote filesystemda UID/GID server tomonda talqin qilinadi. Client va server identity mapping mos bo‘lmasa owner boshqa userga aylanadi. Root squashing client rootini imtiyozsiz identityga map qilib server fayllarini himoya qiladi. Clientdagi mode ko‘rinishi server ACL yoki export policy sabab yetarli bo‘lmasligi mumkin. Audit qarorni qaysi qatlam rad etganini ajratadi.

TOCTOU

Path permissionini access bilan tekshirib, keyin alohida open qilish orasida attacker symlink yoki rename orqali targetni almashtirishi mumkin. Kernel permissionni haqiqiy openda tekshiradi. Directory file descriptor, openat va no-follow flaglar trusted rootga nisbatan atomikroq resolution beradi. Temporary directory sticky bitga ega bo‘lsa ham predictable filename xavfsiz emas.

Bog‘liq tushunchalar

file permission, POSIX ACL, ownership, umask, sticky bit, mandatory access control