WikiDer > 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).
- 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. - faqat keyin yaratilgan yangi fayllar va kataloglarning guruh identifikatoriga ta'sir qiladi
to'siq
bit o'rnatilgan va mavjud bo'lganlarga qo'llanilmaydi. - 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
- ^ fon Xagen, Uilyam (2010-05-13). Ubuntu Linux Injili. 3-59 betlar. ISBN 9780470881804.
- ^ a b v Frisch, Elin (2009-02-09). Muhim tizim ma'muriyati. O'Rayli. p. 351. ISBN 9780596550493.
- ^ 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.
- ^ "Unix - tez-tez beriladigan savollar".
- ^ "chmod - fayl rejimlarini o'zgartirish". freebsd.org.
- ^ "ochish, ochish - o'qish, yozish yoki bajarish uchun faylni ochish yoki yaratish". freebsd.org.
- ^ Nil Braun (2010 yil 23-noyabr). "Unix o'tmishdagi arvohlar, 4-qism: Yuqori sifatli dizaynlar". LWN.net. Olingan 30 mart 2014.
- ^ Jeyk Edj (2010 yil 27 oktyabr). "Ikki glibc zaifligi". LWN.net. Olingan 30 mart 2014.
- ^ 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.
- ^ "Asosiy dasturiy ta'minot patentlarining qisqacha mazmuni".
Tashqi havolalar
- Chen, Xao; Vagner, Devid; va Dekan, Drew; Setuid Demistified (pdf)
- Tsafrir, Dan; Da Silva, Dilma; va Vagner, Devid; Jarayonning identifikatorini o'zgartirishning murakkab masalasi: Setuidni qayta ko'rib chiqish demistifikatsiya qilingan (pdf)
- Pollok, Ueyn; Unix fayli va katalogi Ruxsatlar va rejimlar