لینوکس یکی از منعطفترین سیستمعاملهای دنیا است، زیرا دقیقاً همان کاری را انجام میدهد که به آن میگویید؛ نه یک قدم بیشتر، نه یک قدم کمتر. همین ویژگی که لینوکس را برای برنامهنویسها و کاربران حرفهای جذاب کرده است، احتمالاً میتواند برای کاربران تازهکار به کابوس تبدیل شود. ترمینال لینوکس برخلاف ویندوز یا مک، سطل بازیافت ندارد و اکثر دستورات بدون هیچ هشداری اجرا میشوند. کافی است دستور اشتباهی را از سایت، انجمن گفتوگو یا حتی چتبات هوش مصنوعی کپی و در ترمینال اجرا کنید تا در چند ثانیه کل اطلاعات و سیستمعاملتان از بین برود.
در ادامه با ۷ دستور خطرناک لینوکس آشنا میشوید که هرگز نباید بدون آگاهی کامل اجرا کنید، و در پایان چند راهکار عملی برای جلوگیری از اجرای تصادفی چنین دستوراتی را بررسی میکنیم.
۱. دستور rm -rf که کل سیستم را پاک میکند
یکی از قدیمیترین شوخیهای اینترنتی این است که به کاربران تازهکار لینوکس گفته میشود برای حذف بستهی زبان فرانسه این دستور را اجرا کنند:
یا نسخهی مشابه آن:
این دستور هیچ ربطی به زبان فرانسه ندارد و در واقع تمام فایلهای سیستمعامل و هر درایوی که به آن متصل است را برای همیشه پاک میکند. بخش sudo دستور را با دسترسی مدیر سیستم اجرا و rm فایلها را بدون هیچ تأییدی حذف میکند، فلگهای f (اجباری) و r (بازگشتی) باعث میشوند حذف بهصورت بازگشتی از ریشهی سیستمفایل تا آخرین پوشه ادامه پیدا کند و /* هم به همهچیز داخل پوشهی ریشه اشاره دارد.
لینوکس بهطور پیشفرض نوعی مکانیزم امنیتی دارد که از حذف پوشهی روت جلوگیری میکند، اما فلگ no-preserve-root دقیقاً همین محافظ را دور میزند. جالب است بدانید حتی ابزار خلاصهساز هوش مصنوعی گوگل هم زمانی فریب این شوخی را خورد و آن را بهعنوان راهکار واقعی معرفی کرده بود.
۲. تغییر دسترسی تمام فایلها با chmod 777
دستور chmod برای تغییر سطح دسترسی فایلها و پوشهها در لینوکس استفاده میشود؛ اینکه یک فایل فقط خواندنی، قابل ویرایش یا قابل اجرا باشد. اما دستور زیر یک استثنا است:
دستور فوق بهصورت بازگشتی به همهی فایلها و پوشههای سیستم، از روت به بعد، دسترسی کامل خواندن، نوشتن و اجرا برای تمام کاربران و پردازشها میدهد.
نتیجهی فوری دستور کرش سیستم نیست، اما بسیاری از برنامههایی که به تنظیمات دسترسی مشخص وابستهاند از کار میافتند و امنیت سیستم کاملاً از بین میرود، چون هر برنامه یا کاربری میتواند فایلهای حساس مثل رمزهای عبور و فایلهای پیکربندی را ببیند و تغییر دهد. در بسیاری از موارد سیستم حتی دیگر بوت نمیشود و تنها راهحل، نصب دوبارهی سیستمعامل است.
۳. حذف همه Cron Jobها
لینوکس وظایف زمانبندیشده مثل پاکسازی فایلها، بهروزرسانیها و نگهداری سیستم را از طریق چیزی به نام Cron Job مدیریت میکند. دستور زیر کل این وظایف زمانبندیشده را از بین میبرد:
اجرای این دستور باعث میشود سرویسهایی که به اجرای خودکار و زمانبندیشده وابستهاند دیگر کار نکنند و بهخصوص در سرورها میتواند مشکلات جدی در نگهداری و امنیت سیستم ایجاد کند.
۴. بمب شاخهای یا Fork Bomb
دستور بمب شاخهای در نگاه اول شبیه یک رشته ایموجی عجیب است، اما اجرای آن کامپیوتر را در چند ثانیه از کار میاندازد:
بخش (): یک تابع تعریف میکند، علامت | باعث میشود این تابع بهصورت بازگشتی خودش را صدا بزند و علامتهای & و ; هم هر بار یک نمونه جدید از این پردازش را در پسزمینه اجرا میکنند تا نتوان آن را بهسادگی متوقف کرد.
نتیجهی چرخهی کد فوق، تولید میلیونها پردازش در چند ثانیه است که تمام منابع پردازنده و رم سیستم را اشغال میکند. سیستم یا کاملاً فریز یا خاموش میشود و معمولاً تنها راه بازگشت، ریاستارت سختافزاری است.
۵. پاکسازی غیرقابلبازگشت فایلها با shred
دستور shred با کلمهی find شروع میشود و در نگاه اول شبیه جستوجوی ساده بهنظر میرسد، اما یکی از مخربترین دستورات لینوکس است:
بخش find / -type f تمام فایلهای سیستم را از روت پیدا میکند و دستور shred روی هرکدام اجرا میشود. ابزار shred در لینوکس فایل را با دادههای تصادفی رونویسی میکند تا حتی با نرمافزارهای بازیابی اطلاعات هم قابلبازگشت نباشد؛ فلگهای n 5-، z- و u- هم این فرایند رونویسی را چند بار تکرار کرده است و ردی از عملیات باقی نمیگذارند. برخلاف حذف سادهی فایل، اینجا حتی بازیابی اطلاعات هم عملاً غیرممکن خواهد بود.
۶. نابودگر دیسک؛ dd
ابزار dd در لینوکس معمولاً برای کلون کردن دیسک یا ساخت فلش بوتیبل استفاده میشود. برخلاف دستورات معمول که با سیستمفایل کار میکنند، dd بهطور مستقیم با درایوها تعامل برقرار میکند و هیچ محافظتی هم ندارد؛ بههمین دلیل بین کاربران لینوکس به «نابودگر دیسک» معروف است. برای مثال دستور زیر تمام اطلاعات یک درایو را برای همیشه از بین میبرد:
بسیاری از کاربران مسیر ورودی یا خروجی این دستور را اشتباه وارد میکنند و بدون قصد قبلی، دیسک اصلی سیستم خود را پاک میکنند.
۷. فعالسازی Kernel Panic
لینوکس برای محافظت از فایلها و سختافزار در برابر خطاهای بحرانی، از مکانیزم ایمنی به نام Kernel Panic بهره میبرد که سیستم را فوراً خاموش میکند و شبیه صفحهی آبی مرگ یا BSOD در ویندوز است. دستور زیر میتواند این حالت را بهصورت دستی و آنی فعال کند:
دستور فوق با نوشتن حرف c در یک فایل حساس سیستمی، خطای غیرقابلبازگشتی ایجاد میکند که مستقیماً منجر به Kernel Panic و خاموشی سیستم میشود.
چطور از اجرای تصادفی دستورات خطرناک در لینوکس جلوگیری کنیم؟
نکتهی مشترک دستورات مرگبار لینوکس این است که در نگاه اول بیخطر یا حتی بامزه بهنظر میرسند. برای اینکه گرفتار چنین اشتباهاتی نشوید:
- هیچ دستوری که معنای دقیق آن را نمیدانید در ترمینال اجرا نکنید، حتی اگر از سایت معتبر، انجمن یا پاسخ چتبات هوش مصنوعی کپی شده باشد.
- قبل از اجرای هر دستوری که با sudo شروع میشود، چند لحظه مکث و به فلگهای آن (بهخصوص f-، r-، R- و 777) دقت کنید.
- بهطور مرتب از فایلها و تنظیمات مهم سیستم نسخهی پشتیبان تهیه کنید.
- بهجای استفادهی همیشگی از دسترسی sudo، فقط زمانی که واقعاً لازم است از آن استفاده کنید.
- برای دستور rm از فلگ i- (interactive) استفاده کنید تا سیستم قبل از حذف هر فایل از شما تأیید بگیرد.
- دستورات ناشناس یا مشکوک را ابتدا در ماشین مجازی (VM) یا کانتینر داکر تست کنید، نه روی سیستم اصلی خودتان.