په لینکس کې د فایل اجازه

سلام و ټولو ته. موږ په فعاله توګه کار ته ورسیږو او لا دمخه د جنوري په میاشت کې ډیری پیاوړي لانچونه چمتو کوو. د نورو په مینځ کې ، د هرچا د خوښې کورس نوي جریان لپاره نوم لیکنه اعلان شوې. "د لینکس مدیر". د پیل په تمه، موږ په دودیز ډول د ګټورو موادو ژباړې شریکوو.

په لینکس کې د فایل اجازه

د فایل اجازې د SUID اجرا کونکو لپاره خوندي بدیل وړاندیز کوي ، مګر په لومړي سر کې یو څه مغشوش ښکاري.


موږ ټول هغه بائنری پوهیږو SUID دي د امنیت له نظره ناسمه پریکړه. خوشبختانه، که ستاسو غوښتنلیک یو څه محدود امتیازاتو ته اړتیا ولري، دلته یو ډیر اغیزمنه لاره شتون لري د دوتنې اجازه.

زه به تاسو یو څه وخت خوندي کړم که تاسو غواړئ د پورتنۍ مقالې په تفصیل سره لوستلو څخه مخنیوی وکړئ: په لازمي ډول ، د فایل اجازې پروسې ته اجازه ورکوي چې د ریښې په توګه پرمخ ځي او له همدې امله اجازه لري چې د ځینې وړتیاو ساتلو لپاره یو څه وکړي ، محدود دا لیستکله چې دوی امتیازات پریږدي او د بې ګټې کارونکي لخوا پرمخ وړل کیږي. دا پدې مانا ده چې که یو برید کونکی د بفر اوور فلو یا نورو استحصال په کارولو سره د پروسې سره موافقت وکړي ، نو دوی به ونشي کولی د ځانګړي لږترلږه امتیازاتو پرته بل څه ګټه پورته کړي چې پروسه واقعیا ورته اړتیا لري.

اجازې د خدماتو لپاره عالي دي چې معمولا تل د روټ په توګه پرمخ ځي ، مګر د کمانډ لاین اسانتیاو په اړه څه؟ خوشبختانه ، دا هم ملاتړ کیږي پدې شرط چې تاسو سم اسانتیاوې نصب کړئ. که تاسو اوبنټو کاروئ ، نو تاسو به د مثال په توګه کڅوړې ته اړتیا ولرئ libcap2-bin. تاسو به د غیر لرغوني کرنل چلولو ته هم اړتیا ولرئ (له نسخې څخه 2.6.24).

دا فعالیتونه اجازه ورکوي چې د اجرا وړ فایلونو سره تړاو ولري، د SUID بټ ترتیب کولو په څیر، مګر یوازې د اجازې ځانګړي سیټ لپاره. افادیت setcap د فایل څخه اجازې اضافه کولو او لرې کولو لپاره کارول کیږي.

لومړی ګام دا دی چې هغه اجازې غوره کړئ چې تاسو ورته اړتیا لرئ. د دې مقالې لپاره، زه ګومان کوم چې د شبکې تشخیص وسیله شتون لري چې نوم یې دی tracewalk، کوم چې باید د کارولو وړ وي خام ساکټونه. دا معمولا غوښتنلیک ته اړتیا لري چې د روټ په توګه پرمخ بوځي، مګر کله چې لیدل کیږي لیست دا معلومه شوه چې یوازې اجازې ته اړتیا ده CAP_NET_RAW.

فرض کړئ چې تاسو په لارښود کې یاست چیرې چې بائنری موقعیت لري tracewalkتاسو کولی شئ دا اجازه په دې ډول اضافه کړئ:

sudo setcap cap_net_raw=eip tracewalk

د اوس لپاره ضمیمه په پام کې ونیسئ =eip د حل لپاره، زه به په څو ثانیو کې د هغې په اړه خبرې وکړم. په یاد ولرئ چې د اجازې نوم په کوچني حروف کې دی. تاسو اوس کولی شئ وګورئ چې ایا تاسو د دې سره سم سم تنظیم کړی دی:

setcap -v cap_new_raw=eip tracewalk

یا تاسو کولی شئ د ورکړل شوي اجرا وړ لپاره ټاکل شوي ټولې اجازې لیست کړئ:

getcap tracewalk

د حوالې لپاره، تاسو کولی شئ د اجرا وړ څخه ټول اجازې هم لرې کړئ:

setcap -r tracewalk

په دې وخت کې، تاسو باید وړتیا ولرئ چې اجرایوي د بې ګټې کاروونکي په توګه پرمخ بوځي، او دا باید د خام ساکټونو سره کار وکړي، مګر د نورو امتیازاتو څخه چې د روټ کاروونکي لري هیڅ شی نلري.

نو د دې عجیب ضمیمه معنی څه ده؟ =eip؟ دا د اجازې طبیعت یو څه پوهیدو ته اړتیا لري. هره پروسه د اجازې درې سیټونه لري - اغیزمن، میراثی او اجازه ورکړل شوی:

  • اغیزمن اجازه هغه څه دي چې تعریفوي چې پروسه واقعیا څه کولی شي. د مثال په توګه، دا د خام ساکټونو سره معامله نشي کولی که CAP_NET_RAW په مؤثره ټولګه کې نه دی.
  • شته اجازې هغه دي چې پروسې ته اجازه ورکول کیږي که چیرې دا د مناسب کال په کارولو سره غوښتنه وکړي. دوی د پروسې په حقیقت کې د هر څه کولو مخه نیسي پرته لدې چې دا په ځانګړي ډول د ورته اجازې غوښتنه کولو لپاره لیکل شوي وي. دا پروسو ته اجازه ورکوي چې لیکل شي یوازې د هغه مودې لپاره چې واقعیا ورته اړتیا وي اغیزمن سیټ ته مهمې اجازې اضافه کړي.
  • د میراث وړ اجازې هغه دي چې د زیږون شوي ماشوم پروسې د لاسرسي وړ سیټ کې میراث کیدی شي. د جراحۍ په جریان کې fork() او یا clone() د ماشوم پروسې ته تل د والدین پروسې اجازې یوه کاپي ورکول کیږي ځکه چې دا لاهم په ورته وخت کې د اجرا وړ کار کوي. د میراث وړ سیټ کارول کیږي کله چې exec() (یا مساوي) د بل سره د اجرا وړ فایل بدلولو لپاره ویل کیږي. پدې مرحله کې، د پروسې موجود سیټ د میراث وړ سیټ لخوا پوښل شوی ترڅو د لاسرسي وړ سیټ ترلاسه کړي چې د نوي پروسې لپاره به کارول کیږي.

نو افادیت setcap موږ ته اجازه راکوي چې د دې دریو سیټونو اجازې په خپلواکه توګه د ورکړل شوي اجرا وړ لپاره اضافه کړو. په یاد ولرئ چې د ډلو معنی د فایل اجازې لپاره یو څه توپیر لري:

  • شتون لري د فایل اجازې هغه دي چې تل د اجرا وړ فایل لپاره شتون لري، حتی که د اصلي پروسې چې دا یې ویلې وي دوی نه لري. دوی ته د "جبري" جواز ویل کیدل.
  • ميراثي د فایل اجازې یو اضافي ماسک تعریفوي چې د زنګ وهلو پروسې سیټ څخه د اجازې لرې کولو لپاره هم کارول کیدی شي. دوی د زنګ وهلو پروسې د میراث شوي سیټ سربیره غوښتنه کوي ، نو اجازه یوازې هغه وخت په میراث کیږي که چیرې دا په دواړو سیټونو کې شتون ولري.
  • اغیزمن د فایل اجازې په حقیقت کې یوازې یو واحد دی، نه یو سیټ، او که ټاکل شوی وي، دا پدې مانا ده چې ټول موجود سیټ هم د نوي پروسې اغیزمن سیټ کې کاپي شوي. دا هغه پروسو ته د اجازې اضافه کولو لپاره کارول کیدی شي چې په ځانګړي ډول د دوی غوښتنه کولو لپاره ندي لیکل شوي. څرنګه چې دا یو څه دی، که تاسو دا د کومې اجازې لپاره تنظیم کړئ، دا باید د ټولو اجازو لپاره تنظیم شي. تاسو کولی شئ دا د میراث بټ په توګه فکر وکړئ ځکه چې دا د غوښتنلیکونو لخوا د کارولو اجازه ورکولو لپاره کارول کیږي چې د دوی ملاتړ نه کوي.

کله چې له لارې اجازې مشخص کړئ setcap درې توري e, i и p ته مراجعه وکړئ اغیزمن، میراثي او د لاسرسي وړ په ترتیب سره ټاکي. نو، پخوانی توضیحات:

sudo setcap cap_net_raw=eip tracewalk

... په ګوته کوي چې پریکړه CAP_NET_RAW باید موجود او میراثي سیټونو کې اضافه شي او دا چې اغیزمن بټ باید هم تنظیم شي. دا به په فایل کې کوم مخکیني ټاکل شوي اجازې له پامه غورځوي. په یوځل کې د ډیری اجازې تنظیم کولو لپاره ، د کوما لخوا جلا شوی لیست وکاروئ:

sudo setcap cap_net_admin,cap_net_raw=eip tracewalk

د اجازې لارښود د دې ټولو په اړه په ډیر تفصیل سره بحث کوي، مګر هیله مند یو چې دا پوسټ هغه څه روښانه کړي چې لږ څه تیریږي. د ذکر کولو لپاره یوازې یو څو احتیاطونه او چلونه پاتې دي.

لومړی، د فایل وړتیاوې د سیملنک سره کار نه کوي - تاسو باید دا پخپله بائنری فایل کې پلي کړئ (د بیلګې په توګه د سیمال هدف).

دوهم، دوی د تشریح شوي سکریپټونو سره کار نه کوي. د مثال په توګه، که تاسو د Python سکریپټ لرئ چې تاسو غواړئ اجازه ورکړئ، تاسو باید دا پخپله د Python ژباړونکي ته وټاکئ. په ښکاره ډول دا یو احتمالي امنیتي مسله ده ځکه چې بیا د دې ژباړونکي سره اجرا شوي ټول سکریپټونه به مشخص اجازه ولري ، که څه هم دا لاهم د SUID جوړولو په پرتله خورا ښه دی. ترټولو عام کار داسې بریښي چې په C یا مساوي کې جلا اجرا وړ ولیکئ چې کولی شي اړین عملیات ترسره کړي او له سکریپټ څخه یې زنګ ووهي. دا د Wireshark لخوا کارول شوي چلند ته ورته دی کوم چې بائنری کاروي /usr/bin/dumpcap د امتیازي عملیاتو ترسره کول:

$ getcap /usr/bin/dumpcap 
/usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip

دریم، د فایل اجازې غیر فعال دي که تاسو د چاپیریال متغیر کاروئ LD_LIBRARY_PATH د واضح امنیتي دلایلو لپاره(1). ورته تطبیق کیږي LD_PRELOAD، څومره چی زه پوهيږم.

1. ځکه چې برید کوونکی کولی شي په ښکاره ډول یو له معیاري کتابتونونو څخه ځای په ځای کړي او وکاروي LD_LIBRARY_PATHد دې لپاره چې کتابتون دې ته اړ کړي چې د سیسټم یو ته په لومړیتوب کې وبلل شي، او له همدې امله خپل خپل سري کوډ ولري د ورته امتیازاتو سره د زنګ وهلو غوښتنلیک په څیر اجرا شي.

بس نور څه نه. د کورس برنامه په اړه نور جزییات په کې موندل کیدی شي ویبینار، چې د جنوري په 24 به ترسره شي.

سرچینه: www.habr.com

Add a comment