تصور کنید شما یه رستوران دارید و تعدادی سینی غذای تمیز و یک سینی کرونایی
حالا یه مشتری شرور میاد و عمدا کلی غذا سفارش میده (Heap Sprying) که فقط سینی های تمیز رو اشغال کنه، به نظرتون چه اتفاقی میفته؟ مشتری بعدی که میاد غذا سفارش بده گارسون مجبوره توی سینی کرونایی غذا رو برای مشتری بیاره (Arbitrary Code Execution) و مشتری شرور به هدفش رسیده !
🐧 @Linuxor
حالا یه مشتری شرور میاد و عمدا کلی غذا سفارش میده (Heap Sprying) که فقط سینی های تمیز رو اشغال کنه، به نظرتون چه اتفاقی میفته؟ مشتری بعدی که میاد غذا سفارش بده گارسون مجبوره توی سینی کرونایی غذا رو برای مشتری بیاره (Arbitrary Code Execution) و مشتری شرور به هدفش رسیده !
🐧 @Linuxor
🤣51👍23😐13🗿8💅5
با این ریپو میتونین روی یه مرورگر توی لینوکستون هر ورژن از ویندوز رو داشته باشین !
https://github.com/dockur/windows
درواقع یه داکره که داره با KVM این کارو میکنه.
🐧 @Linuxor
https://github.com/dockur/windows
درواقع یه داکره که داره با KVM این کارو میکنه.
🐧 @Linuxor
👍55🗿10🤣2💩1👌1
فورک کردن پروسس یعنی چی ؟
توی سیستم عامل، فورک (Fork) یک فراخوان سیستمیه که برای ایجاد یه پروسس جدید (فرزند) از پروسس قبلی (پدر) استفاده میشه.
همه میدونیم که if و else همزمان نمیتونن باهم اجرا بشن ولی اینجا انگار باهم اجرا شده ...
در واقع از لاینی که ()fork رو فراخوندم به بعد پروسس به دو قسمت فرزند و پدر تقسیم شده و توی پروسس پدر فقط else اجرا میشه و توی فرزند فقط if
🐧 @Linuxor
توی سیستم عامل، فورک (Fork) یک فراخوان سیستمیه که برای ایجاد یه پروسس جدید (فرزند) از پروسس قبلی (پدر) استفاده میشه.
همه میدونیم که if و else همزمان نمیتونن باهم اجرا بشن ولی اینجا انگار باهم اجرا شده ...
در واقع از لاینی که ()fork رو فراخوندم به بعد پروسس به دو قسمت فرزند و پدر تقسیم شده و توی پروسس پدر فقط else اجرا میشه و توی فرزند فقط if
🐧 @Linuxor
🔥46👍22❤🔥3🤓3👎1
میدونید Backporting یعنی چی؟
فرض کنید توی درایور wi-fi کرنل v6 یه مشکل امنیتی رو پیدا شده و حل شده.
بعضی از یوزر ها دارن از کرنل v5 استفاده میکنن و همون مشکل رو دارن، برای حل این مشکل نخوان یا نتونن به کرنل v6 آپدیت کنن توی این سناریو Backporting یعنی انتقال رفع اشکال از ورژن v6 به v5 به طوری که توی کرنل v5 هم این مشکل حل شده باشه.
عملیات Backporting فقط مربوط به اشکال نیست و ممکنه انتقال یه ویژگی باشه و بخاطر تضاد با سایر تغییرات ممکنه پیچیده باشه ولی توی کرنل لینوکس یه اتفاق بسیار عادی محسوب میشه.
🐧 @Linuxor
فرض کنید توی درایور wi-fi کرنل v6 یه مشکل امنیتی رو پیدا شده و حل شده.
بعضی از یوزر ها دارن از کرنل v5 استفاده میکنن و همون مشکل رو دارن، برای حل این مشکل نخوان یا نتونن به کرنل v6 آپدیت کنن توی این سناریو Backporting یعنی انتقال رفع اشکال از ورژن v6 به v5 به طوری که توی کرنل v5 هم این مشکل حل شده باشه.
عملیات Backporting فقط مربوط به اشکال نیست و ممکنه انتقال یه ویژگی باشه و بخاطر تضاد با سایر تغییرات ممکنه پیچیده باشه ولی توی کرنل لینوکس یه اتفاق بسیار عادی محسوب میشه.
🐧 @Linuxor
👍66🔥9🗿7😐2🍓1
میدونستید توی لینوکس یه ابزاری هست به اسم KernelShark که باهاش میشه رفتار درواقع پروسس ها توی کرنل رو تجزیه و تحلیل کرد؟
نکته جالب اینجاست این ابزار یه فرانتند برای trace-cmd هستش که خود trace-cmd فرانتند برای ftrace هستش که خودش فیچر مخوف کرنله.
بعد بگید فرانتند کارا برنامه نویس نیستن
🐧 @Linuxor
نکته جالب اینجاست این ابزار یه فرانتند برای trace-cmd هستش که خود trace-cmd فرانتند برای ftrace هستش که خودش فیچر مخوف کرنله.
بعد بگید فرانتند کارا برنامه نویس نیستن
🐧 @Linuxor
🤣78👍22🗿5👎3🙏1
اگه رفتین مهمونی، سر غذا حواستون باشه یهو دستتون رو دراز نکنید دوغ رو از وسط میز بردارید ...
چون ممکنه یه نفر دیگه قبل از شما دوغ (Resource) رو بخاد و زود تر شما برش داره ! توی دنیای کامپیوتر یه الگوریتم جالبی برای حل این مشکل داریم به اسم Exponential backoff به این صورته که اگه دوغ میخای باید یه مجموعه به صورت زیر برای خودت داشته باشی
{1, 2, 4, 8 ,16 ,...}
که طول مجموعه برابر تعداد دفعاتیه که ناموفق شدی اون دوغ رو برداری، هر بار که دوغ میخای یه عدد رندوم از این لیست خودت برمیداری و به اندازه اون صبر میکنی (sleep) بعد سعی میکنی که دوغ رو برداری. اگه دوباره ناموفق شدی اون لیست یدونه بزرگ تر میشه، هرکی هم یه لیست مجزا برای خودش داره. و این الگوریتم رو مجزا برای خودش اجرا میکنه و اگه دوغ بخواد باید این کارو کنه.
با این الگوریتم هر تعداد نفر هم باشید به همتون با یه احتمال خوبی دوغ میرسه 😂
🐧 @Linuxor
چون ممکنه یه نفر دیگه قبل از شما دوغ (Resource) رو بخاد و زود تر شما برش داره ! توی دنیای کامپیوتر یه الگوریتم جالبی برای حل این مشکل داریم به اسم Exponential backoff به این صورته که اگه دوغ میخای باید یه مجموعه به صورت زیر برای خودت داشته باشی
{1, 2, 4, 8 ,16 ,...}
که طول مجموعه برابر تعداد دفعاتیه که ناموفق شدی اون دوغ رو برداری، هر بار که دوغ میخای یه عدد رندوم از این لیست خودت برمیداری و به اندازه اون صبر میکنی (sleep) بعد سعی میکنی که دوغ رو برداری. اگه دوباره ناموفق شدی اون لیست یدونه بزرگ تر میشه، هرکی هم یه لیست مجزا برای خودش داره. و این الگوریتم رو مجزا برای خودش اجرا میکنه و اگه دوغ بخواد باید این کارو کنه.
با این الگوریتم هر تعداد نفر هم باشید به همتون با یه احتمال خوبی دوغ میرسه 😂
🐧 @Linuxor
🤣114👍27🤝7🤔3❤2
میدونستین با دستور زیر میتونین Gateway خودتون رو پینگ کنید و ایپیشو بدست بیارین :
ping _gateway
🐧 @Linuxor ~ LinuxHandbook
ping _gateway
thatstraw : The functionality to resolve _gateway as a hostname to the default gateway's IP address is provided by systemd-resolved (Synthetic Records). It provides fake A/AAAA records pointing to your gateway. This service is part of the systemd suite, which is not available on systems that do not use systemd as the init system.
#linux
🐧 @Linuxor ~ LinuxHandbook
🔥39👍24👎3❤2⚡2
وقتی یه رفیق فاب داری که همه جوره کنارته !
گرِگ Greg یکی از توسعه دهنده های اصلی کرنل لینوکس، ابزار ها و فیچر هایی مثل udev و sysfs و ... هستش.
گرِگ از نویسندگان کتاب های افسانه ای
Linux Device Drivers
و
Linux Kernel in a Nutshell
هم هستش که خوندش برای علاقه مندان به کرنل بسیار توصیه میشه.
🐧 @Linuxor
گرِگ Greg یکی از توسعه دهنده های اصلی کرنل لینوکس، ابزار ها و فیچر هایی مثل udev و sysfs و ... هستش.
گرِگ از نویسندگان کتاب های افسانه ای
Linux Device Drivers
و
Linux Kernel in a Nutshell
هم هستش که خوندش برای علاقه مندان به کرنل بسیار توصیه میشه.
🐧 @Linuxor
👍70❤18🔥3💅3⚡1
چطوری کرنل لینوکس رو دستکاری کنیم ؟
کرنل لینوکس این اجازه رو به شما میده با ابزار sysctl پارامتر های اون رو مشاهده یا ریکانفیگور کنید :
مثلا میتونیم یه کاری کنیم PID حداکثر 2000 باشه
+ نگران نباشین کرنل الگوریتم wrap around داره و PID تموم شه میره از اول شروع میکنه و ثانیا سویچ w- بعد از ریبوت کانفیگ هارو بر میگردونه به حالت دیفالتش
مقدار جدید رو میتونید الان ببینید.
بریم یه حرکت دیگه بزنیم مثلا ما یه سرور خفن داریم و میخوایم یه کاری کنیم دیگه جواب ping رو به بقیه نده :
الان دیگه سیستممون هرکی صداش کنه جواب نمیده (مغرور کی بودی تو)😂😂
+ میتونید با سویچ a- بقیه پارامتر های قابل کانفیگ رو ببینید .
🐧 @Linuxor
کرنل لینوکس این اجازه رو به شما میده با ابزار sysctl پارامتر های اون رو مشاهده یا ریکانفیگور کنید :
مثلا میتونیم یه کاری کنیم PID حداکثر 2000 باشه
sysctl -w kernel.pid_max=2000+ نگران نباشین کرنل الگوریتم wrap around داره و PID تموم شه میره از اول شروع میکنه و ثانیا سویچ w- بعد از ریبوت کانفیگ هارو بر میگردونه به حالت دیفالتش
sysctl kernel.pid_max مقدار جدید رو میتونید الان ببینید.
بریم یه حرکت دیگه بزنیم مثلا ما یه سرور خفن داریم و میخوایم یه کاری کنیم دیگه جواب ping رو به بقیه نده :
sysctl -w net.ipv4.icmp_echo_ignore_all=1
الان دیگه سیستممون هرکی صداش کنه جواب نمیده (مغرور کی بودی تو)😂😂
+ میتونید با سویچ a- بقیه پارامتر های قابل کانفیگ رو ببینید .
🐧 @Linuxor
😁50👍17🤣6🔥4💅3