WikiDer > Setuid

Setuid

The Unix kirish huquqlari bayroqlari setuid va to'siq ("foydalanuvchi identifikatorini o'rnatish" va "guruh identifikatorini o'rnatish" uchun qisqacha)[1] foydalanuvchilarga bajariladigan bilan fayl tizimining ruxsatlari tegishli ravishda bajariladigan fayl egasi yoki guruhiga tegishli va kataloglardagi xatti-harakatlarini o'zgartirish. Ular ko'pincha ma'lum bir vazifani bajarish uchun kompyuter tizimidagi foydalanuvchilarga vaqtincha oshirilgan imtiyozlarga ega dasturlarni ishga tushirishga imkon berish uchun ishlatiladi. Taqdim etilgan foydalanuvchi identifikatori yoki guruh identifikatori imtiyozlari har doim ham ko'tarilmasa ham, hech bo'lmaganda ular o'ziga xosdir.

Bayroqlar,setuid va to'siq, foydalanuvchi odatda beriladigan narsadan farqli imtiyozlarni talab qiladigan vazifalar uchun zarur, masalan, tizim fayllari yoki ma'lumotlar bazalarini kirish parolini o'zgartirish uchun o'zgartirish qobiliyati.[2] Qo'shimcha imtiyozlarni talab qiladigan ba'zi vazifalar darhol aniq bo'lmasligi mumkin, ammo, masalan ping yuborish va tinglash kerak bo'lgan buyruq paketlarni boshqarish tarmoq interfeysida.

Effektlar

The setuid va to'siq bayroqlar faylga, katalogga yoki ikkilik bajariladigan yoki ikkilik bo'lmagan bajariladigan faylga qo'llanilishiga qarab har xil effektlarga ega. The setuid va to'siq bayroqlar faqat ikkilik bajariladigan fayllarga ta'sir qiladi. Ushbu bitlarni bash, perl yoki python kabi skriptlarga o'rnatish hech qanday ta'sir ko'rsatmaydi.[3]

Bajariladigan faylga o'rnatilganda

Qachon setuid yoki to'siq atributlari bajariladigan fayl, keyin faylni bajarishga qodir bo'lgan har qanday foydalanuvchilar avtomatik ravishda fayl egasining imtiyozlari bilan faylni bajaradi (odatda ildizBelgilangan bayroqlarga qarab) va / yoki fayl guruhi.[2] Bu tizim dizayneriga ishonchli dasturlarni ishga tushirishga ruxsat berishga imkon beradi, aks holda foydalanuvchi bajarishi taqiqlanadi. Bu har doim ham aniq bo'lmasligi mumkin. Masalan, ping oddiy foydalanuvchi foydalana olmaydigan buyruqqa tarmoq imtiyozlariga kirish kerak bo'lishi mumkin; shuning uchun setuid bayrog'i boshqa tizimga ping qo'yishi kerak bo'lgan foydalanuvchi buni amalga oshirishi mumkinligiga ishonch hosil qilish uchun berilishi mumkin, hatto o'z akkauntida paketlarni yuborish uchun kerakli imtiyoz mavjud bo'lmasa ham.

Xavfsizlik maqsadida chaqiruvchi foydalanuvchiga odatda tizim tomonidan yangi jarayonni har qanday tarzda o'zgartirish taqiqlanadi, masalan. iz, LD_LIBRARY_PATH yoki ko'tarilgan imtiyozdan foydalanish uchun unga signallarni yuborish, garchi terminaldan signallar qabul qilinsa ham.

The setuid va to'siq bitlar odatda buyruq bilan o'rnatiladi chmod uchun yuqori tartibli sakkizli raqamni 4 ga o'rnatib setuid yoki 2 uchun to'siq. "chmod 6711 fayl"ikkalasini ham o'rnatadi setuid va to'siq bit (4 + 2 = 6), faylni egasi uchun o'qish / yozish / bajarish (7) va guruh tomonidan bajarilishi (birinchi 1) va boshqalar (ikkinchi 1). Faylni egasidan boshqa foydalanuvchi bajarganida, jarayon egasi tomonidan o'rnatilgan foydalanuvchi va guruh ruxsatlari bilan ishlaydi. Masalan, agar fayl foydalanuvchiga tegishli bo'lsa ildiz va guruh g'ildirak, kabi ishlaydi ildiz: g'ildirak faylni kim bajarganidan qat'i nazar.

Ning eng ko'p qo'llanilishi chmod buyruq, shuningdek, ushbu bitlarni o'rnatish uchun aniqroq, ramziy dalillarni qo'llab-quvvatlaydi. Tarkibida nozik taneli rejim quyidagi namoyishlarda "chmod ug + s"

Xavfsizlikka ta'siri

Da setuid xususiyati ko'p hollarda juda foydalidir, uni noto'g'ri ishlatish xavfsizlik xavfini keltirib chiqarishi mumkin[2] agar setuid atributi berilgan bajariladigan puxta ishlab chiqilmagan dasturlar. Mumkin bo'lgan xavfsizlik muammolari tufayli,[4] ko'plab operatsion tizimlar setuid bajariladigan dasturga qo'llanilganda atribut qobiq skriptlari.

Mavjudligi setuid bajariladigan fayllar nima uchun chroot tizim qo'ng'irog'i mavjud bo'lmaganlar uchun mavjud emasildiz Unix-dagi foydalanuvchilar. Qarang cheklovlar chroot batafsil ma'lumot uchun.

Katalogga o'rnatilganda

O'rnatish to'siq katalogdagi ruxsat (""chmod g + s") tarkibida yaratilgan yangi fayllar va kataloglarga sabab bo'ladi uning guruh identifikatorini meros qilib oling, faylni yaratgan foydalanuvchining asosiy guruh identifikatori o'rniga (egasining identifikatoriga hech qachon ta'sir qilmaydi, faqat guruh identifikatori).

  1. Yangi yaratilgan pastki kataloglar to'siq bit. Shunday qilib, bu guruh uchun umumiy ish joyini yangi fayllar yoki kataloglarni yaratishdan oldin guruh a'zolaridan hozirgi guruhini aniq o'zgartirishni talab qiladigan noqulayliklarsiz ta'minlaydi.
  2. faqat keyin yaratilgan yangi fayllar va kataloglarning guruh identifikatoriga ta'sir qiladi to'siq bit o'rnatilgan va mavjud bo'lganlarga qo'llanilmaydi.
  3. boshqa joyda yaratilgan va ko'rib chiqilayotgan katalogga ko'chirilgan fayllarning guruh identifikatoriga ta'sir qilmaydi. Fayl qachon va qayerda yaratilgan guruh identifikatorini olib yurishda davom etadi.

O'rnatish to'siq mavjud bo'lgan pastki kataloglarda bit buyrug'i bilan qo'lda bajarilishi kerak find / path / to / directory -type d -exec chmod g + s '{}' ;

The setuid katalogda o'rnatilgan ruxsat ko'p hollarda e'tiborga olinmaydi UNIX va Linux tizimlar.[iqtibos kerak] Ammo FreeBSD izohlash uchun sozlanishi mumkin setuid ga o'xshash tarzda to'siq, bu holda u katalogda yaratilgan barcha fayllar va pastki kataloglarni ushbu katalog egasiga tegishli bo'lishga majbur qiladi - bu oddiy meros shakli.[5] Bu, odatda olingan ko'plab tizimlarda kerak emas BSD, chunki sukut bo'yicha kataloglar xuddi ular kabi ko'rib chiqiladi to'siq bit har doim haqiqiy qiymatidan qat'i nazar o'rnatiladi. Aytilganidek ochiq (2), "Yangi fayl yaratilganda unga tarkibidagi katalog guruhi beriladi."[6]

Misollar

Ruxsatlarni tekshirish

Faylga ruxsatnomalarni sakkizli shaklda va / yoki alifbo shaklida buyruq satri vositasi yordamida tekshirish mumkin stat

[torvalds ~] $ stat -c "% a% A" ~ / test /1770 drwxrwx - T

SUID

4701 "root" va "root" guruhiga tegishli bo'lgan bajariladigan faylda

"Tompson" nomli foydalanuvchi faylni bajarishga urinmoqda. Barcha foydalanuvchilar uchun bajariladigan ruxsat berilgan ('1'), shuning uchun 'Thompson' faylni bajarishi mumkin. Fayl egasi "root" va SUIDga ruxsat berilgan ("4") - shuning uchun fayl "root" sifatida bajariladi.

Amalga oshiriladigan dasturning "ildiz" sifatida ishga tushirilishining sababi shundaki, u foydalanuvchiga odatda to'liq kirish huquqini bermasdan foydalanuvchi odatda ruxsat etilmagan ma'lum fayllarni o'zgartirishi mumkin.

Buning standart ishlatilishini / usr / bin / passwd ikkilik fayl. / usr / bin / passwd o'zgartirish kerak / etc / passwd va / etc / shadow barcha foydalanuvchilar uchun hisob ma'lumotlari va parollarni saqlashni saqlaydigan va ularni faqat "root" foydalanuvchisi o'zgartirishi mumkin.

[thompson ~] $ stat -c "% a% U:% G% n" / usr / bin / passwd4701 root: root / usr / bin / passwd[thompson ~] $ passwdpasswd: Tompson uchun parolni o'zgartirish

Jarayon egasi bajariladigan faylni boshqaruvchi foydalanuvchi emas, balki bajariladigan fayl egasi

SGID

2770 "root" foydalanuvchisi va "muhandislar" guruhiga tegishli "musiqa" nomli katalogda

"Torvalds" ismli foydalanuvchi asosan "torvalds" guruhiga, lekin ikkinchidan "muhandislar" guruhiga tegishli bo'lib, "musiqa" nomli katalog ostida "elektron" katalog yaratadi. "Elektron" deb nomlangan yangi katalogga guruh egalik huquqi "muhandislarni meros qilib oladi." Yangisini yaratishda ham xuddi shunday fayl "imagin.txt" deb nomlangan

SGIDsiz yangi katalog / faylga guruh egalik qilish "torvalds" bo'lar edi, chunki bu foydalanuvchi "torvalds" ning asosiy guruhidir.

[torvalds ~] $ torvalds guruhlaritorvalds: torvalds muhandislari[torvalds ~] $ stat -c "% a% U:% G% n" ./music/2770 root: muhandislar ./music/[torvalds ~] $ mkdir ~ / music / elektron[torvalds ~] $ stat -c "% U:% G% n" ./music/electronic/torvalds: muhandislar ./music/electronic/[torvalds ~] $ aks sado "YANGI FAYL" > ~ / music / imagine.txt[torvalds ~] $ stat -c "% U:% G% n" ./music/imagine.txttorvalds: muhandislar ./music/imagine.txt[torvalds ~] $ teginish ~ / sinov[torvalds ~] $ stat -c "% U:% G% n" ~ / testtorvalds: torvalds ~ / test

Yopishqoq bit

1770 "torvalds" foydalanuvchisi va "muhandislar" guruhiga tegishli bo'lgan "videogames" nomli katalogda.

'Torvalds' nomli foydalanuvchi 'videogames' katalogi ostida 'tekken' nomli fayl yaratadi. "Muhandislar" guruhining bir qismi bo'lgan "wozniak" ismli foydalanuvchi "tekken" nomli faylni o'chirishga urinadi, lekin u egasi emas.

"Wozniak" yopishqoq bitsiz faylni o'chirib tashlashi mumkin edi, chunki "videoo'yinlar" katalogi "muhandislar" tomonidan o'qish va yozishga imkon beradi. Buning standart ishlatilishini quyidagi manzilda ko'rish mumkin / tmp papka.

[torvalds / home / shared /] $ torvalds guruhlaritorvalds: torvalds muhandislari[torvalds / home / shared /] $ stat -c "% a% U:% G% n" ./video O'yinlar/1770 torvalds: muhandislar ./ ​​videogames/[torvalds / home / shared /] $ aks sado "YANGI FAYL" > videogames / tekken[torvalds / home / shared /] $ su - wozniakParol:[wozniak ~ /] $ wozniak guruhlariwozniak: wozniak muhandislari[wozniak ~ /] $ CD / home / shared / videogames[wozniak / home / shared / videogames /] $ rm tekkenrm: ‘tekken’ ni olib tashlab bo‘lmaydi: ishlashga ruxsat berilmagan

SGID bilan yopishqoq bit

3171 "muhandislar" guruhiga va "root" foydalanuvchisiga tegishli "blog" nomli katalogda

"Torvalds" nomli foydalanuvchi asosan "torvalds" guruhiga, lekin ikkinchidan "muhandislar" guruhiga tegishli bo'lib, "blog" katalogi ichida "fikrlar" nomli fayl yoki katalog yaratadi. "Muhandislar" guruhiga kiruvchi "wozniak" ismli foydalanuvchi "fikrlar" nomli fayl yoki katalogni o'chira olmaydi, nomini o'zgartira olmaydi yoki ko'chira olmaydi, chunki u egasi emas va yopishqoq bit o'rnatilgan. Ammo, agar "fikrlar" fayl bo'lsa, "wozniak" uni tahrirlashi mumkin.

Yakuniy qaror yopishqoq bitga ega. Agar yopishqoq bit va SGID o'rnatilmagan bo'lsa, "wozniak" foydalanuvchisi "fikrlar" nomli faylning nomini o'zgartirishi, ko'chirishi yoki o'chirishi mumkin edi, chunki "blog" katalogi guruhga ko'ra o'qish va yozish imkoniyatini beradi, va wozniak guruhga tegishli va sukut bo'yicha 0002 umask yangi fayllarni guruh tomonidan tahrirlashga imkon beradi. Yopishqoq bit va SGID faqat o'qish uchun mo'ljallangan umask yoki faqat qo'shimchalar xususiyati kabi narsalar bilan birlashtirilishi mumkin.

[torvalds / home / shared /] $ torvalds guruhlaritorvalds: torvalds muhandislari[torvalds / home / shared /] $ stat -c "% a% U:% G% n" ./blog/3171 root: muhandislar ./blog/[torvalds / home / shared /] $ aks sado "YANGI FAYL" > ./blog/thoughts[torvalds / home / shared /] $ su - wozniakParol:[wozniak ~ /] $ CD / home / shared / blog[wozniak / home / shared / blog /] $ wozniak guruhlariwozniak: wozniak muhandislari[wozniak / home / shared / blog /] $ stat -c "% a% U:% G% n" ./fikrlar664 torvalds: muhandislar. / Fikrlar[wozniak / home / shared / blog /] $ rm fikrlarirm: "fikrlarni" olib tashlay olmaydi: ishlashga ruxsat berilmaydi[wozniak / home / shared / blog /] $ mv fikrlari / uy / wozniak /mv: "fikrlarni" "/ home / wozniak / fikrlar" ga ko'chira olmaydi: ishlashga ruxsat berilmaydi[wozniak / home / shared / blog /] $ mv fikrlarmv: "fikrlarni" "o'ylash" ga o'zgartira olmaydi: ishlashga ruxsat berilmaydi[wozniak / home / shared / blog /] $ aks sado "YOZING!" > fikrlar[wozniak / home / shared / blog /] $ mushuk fikrlariYOZING!

Xavfsizlik

Ishlab chiquvchilar xavfsizlikning zaifliklarini oldini olish uchun ushbu bitni bajariladigan dasturlarda ehtiyotkorlik bilan ishlab chiqishi va amalga oshirishi kerak bufer ortiqcha va yo'l in'ektsiyasi. Zaif dasturlarga qarshi muvaffaqiyatli bufer hujumlari tajovuzkorga foydalanilgan jarayon huquqlari ostida o'zboshimchalik bilan kodni bajarishga imkon beradi. Agar zaif jarayon ishlatilsa setuid sifatida ishlatish uchun bit ildiz, kod root imtiyozlari bilan amalga oshiriladi, aslida tajovuzkorga zaif jarayon ishlaydigan tizimga kirish huquqini beradi.

A holatida alohida ahamiyatga ega setuid jarayon atrof-muhit jarayonning. Agar atrof-muhit imtiyozli jarayon bilan to'g'ri tozalanmagan bo'lsa, uning xatti-harakati uni boshlagan imtiyozsiz jarayon bilan o'zgarishi mumkin.[7] Masalan, GNU libc bir nuqtada himoyasiz edi ekspluatatsiya foydalanish setuid va atrof-muhit o'zgaruvchisi, bu kodni ishonchsizlardan bajarishga imkon beradi umumiy kutubxonalar.[8]

Tarix

The setuid bit tomonidan ixtiro qilingan Dennis Ritchi[9] va kiritilgan su.[9] Uning ish beruvchisi, keyin Qo'ng'iroq telefon laboratoriyalari, 1972 yilda patent olish uchun murojaat qilgan; patent 1979 yilda patent raqami sifatida berilgan AQSh 4135240  "Ma'lumotlar fayllari tarkibini himoya qilish". Keyinchalik patent patentga joylashtirildi jamoat mulki.[10]

Shuningdek qarang

Adabiyotlar

  1. ^ fon Xagen, Uilyam (2010-05-13). Ubuntu Linux Injili. 3-59 betlar. ISBN 9780470881804.
  2. ^ a b v Frisch, Elin (2009-02-09). Muhim tizim ma'muriyati. O'Rayli. p. 351. ISBN 9780596550493.
  3. ^ Billimoria, Kayvan N. (2018). Linux bilan amaliy dasturlash: Linux tizimining dasturiy interfeyslari, nazariyasi va amaliyotini o'rganing. Packt Publishing Ltd. p. 250. ISBN 978-1-78899-674-7.
  4. ^ "Unix - tez-tez beriladigan savollar".
  5. ^ "chmod - fayl rejimlarini o'zgartirish". freebsd.org.
  6. ^ "ochish, ochish - o'qish, yozish yoki bajarish uchun faylni ochish yoki yaratish". freebsd.org.
  7. ^ Nil Braun (2010 yil 23-noyabr). "Unix o'tmishdagi arvohlar, 4-qism: Yuqori sifatli dizaynlar". LWN.net. Olingan 30 mart 2014.
  8. ^ Jeyk Edj (2010 yil 27 oktyabr). "Ikki glibc zaifligi". LWN.net. Olingan 30 mart 2014.
  9. ^ a b Makilroy, M. Duglas (1987). Unix-ning tadqiqotchi o'quvchisi: 1971-1986 yillarda Dasturchi qo'llanmasidan izohli parchalar (PDF) (Texnik hisobot). CSTR. Bell laboratoriyalari. 139.
  10. ^ "Asosiy dasturiy ta'minot patentlarining qisqacha mazmuni".

Tashqi havolalar