آشنایی با 8 دستور خطرناک در سیستم عامل لینوکس!
استفاده از برخی دستورات و کدها، برای افراد مبتدی، مثل این است که کنترل بمب اتم را بدهیم دست کسی که تازه از دانشگاه فارغالتحصیل شده و هیچ تجربهای ندارد! همانقدر ریسکی و خطرناک!
در سیستمعامل لینوکس دستوراتی وجود دارند که اگر آنها را اجرا کنید، با دردسرهای زیادی مواجه میشوید. البته میزان خرابی آنها بهاندازه بمب اتم نیست؛ اما آنقدری مخرب هستند که سیستم شما را از کار بیندازند. این شما و این 8 تا از دستورات لینوکس که نباید سمتشان بروید.
تا پایان این مقاله همراه ما باشید، تا با این دستورات آشنا شده و از خرابیهای احتمالی پیشگیری کنید.
دستورات خطرناک لینوکس: 8 دستور حساس!
لینوکس یک سیستم عامل متنباز است؛ یعنی هرکسی میتواند تغییرات مدنظرش را در آن اعمال کند. انجام این تغییرات از طریق اجرای دستورات لینوکس در محیط خط فرمان ممکن است. اگر تخصص زیادی در زمینه کدنویسی ندارید، باید حواستان را خیلی بیشتر جمع کنید تا از این دستورات خطرناک لینوکس استفاده نکنید.
نکته: اگر میخواهید با این سیستمعامل کاملاً آشنا شوید، مقاله لینوکس چیست وبلاگ ما را بخوانید و برای آشنایی با نسخههای مختلف، سری به مقاله انواع توزیعهای لینوکس بزنید.
8 دستوری که در ادامه میآوریم جزو دستورات خطرناک لینوکس هستند که باید راهتان را از آنها جدا کنید.
۱) rm
rm -rf / cd /; rm -rf . rm -rf *
از دستورات rm برای پاک کردن فایلهای مختلف در سیستمعامل لینوکس استفاده میشود. دستوراتی مشابه دستور بالا! هرکدام از فرمانها، فرایند پاک کردن محتویات را بهشکل خاصی انجام میدهد.
- rm-rf/: این دستور همه محتویات فایل root را پاک میکند و همهچیز از بین میرود.
- rm-rf*: این دستور برای پاک کردن تمام محتویات فولدری است که در حال استفاده از آن هستید.
- rm-rf.: از این دستور برای پاک کردن تمام محتویات فولدر در حال استفاده و تمامی زیرفولدرهای آن استفاده میشود.
برای جلوگیری از اشتباهات احتمالی که منجر به پاک شدن اطلاعاتتان میشود، یک نام مستعار از دستور rm با عنوان rm-i در فایل bashrc. درست کنید. انجام این کار باعث میشود برای پاک کردن هرچیزی، نیاز به تائید شما وجود داشته باشد.
نکته: بهتر است دستور rm را با پارامتر r استفاده نکنید؛ مگر اینکه بخواهید یک فولدر را با زیرفولدرها پاک کنید. این دستور فولدر را بهصورت بازگشتی پاک میکند؛ یعنی این کار را بهصورت مداوم (تا همیشه) انجام میدهد، حتی اگر فولدر مورد بحث خالی باشد!
۲) دستور chmod
chmod 000 -Rf / cd /; chmod 000 -Rf
دستور chmod در لینوکس مجوز همه فایلها و دایرکتوریهای / را به صفر تغییر میدهد! در نتیجه بعد از اجرای این دستور، هیچ دستوری قابل اجرا نخواهد بود (حتی chmod). در ضمن امکان بازگردانی مجوز به حالت پیش فرض نیز وجود ندارد. خودتان با دست خودتان، اعمال هر تغییری را برای خود ناممکن میکنید!
۳) Fork Bomb
: () { :|: & };:
دستور بالا را ببینید. این اسکریپت به ظاهر عجیب یک دستور بازگشتی است که بعد از اجرا RAM و CPU سیستم شما را درگیر میکند. این دستور مدام خودش را در بکگراند و فورگراند تکرار میکند. انجام مداوم این عملیات باعث میشود سیستمتان هنگ کند! یا به قول خارجیها Freeze شود. تنها راه نجات سیستم شما از این دستور ریبوت سختافزاری است!
این دستور چگونه کار میکند؟
در این اسکریپت ابتدا یک تابع با نام : تعریف میکنیم.
: () { }
سپس درون این تابع، خود آن را فراخوانی میکنبم و خروجی را به تابع ارسال میکنیم!
: | :
در انتها بعد از تعریف تابع آن را اجرا میکنیم.
: ;
البته اگر دوست ندارید دستگاهتان هنگ کند، از امتحان کردن آن هم خودداری کنید.
۴) ارسال خروجی دستورات به هارد
همیشه یادتان باشد که ارسال نتیجه خروجی هر دستوری، به هارد دیسک یا پارتیشن خطرناک است و باعث پاک شدن اطلاعات روی هارد خواهد شد!
در ادامه چند دستور از این دسته را مشاهده خواهیم کرد:
cat file.txt > /dev/sda wget http://iranserver.com > /dev/sda ls -la / > /dev/sda
نکته: عموماً آدرسدهی اشتباه فایل log یا استفاده از space در نام فایل log، باعث بروز خطا میشود.
برای مثال به اسکریپت زیر توجه کنید:
find / -iname "*.php" > /dev/sda1/ log.txt
در مثال بالا دستور find پس از اجرا، خروجی خود را به جای فایل /dev/sda1/log.txt در /dev/sda1 دخیره میکند. این اشتباه به خاطر وجود Space اضافه بین / آخر و log.txt رخ میدهد در نتیجه این اشتباه، محتویات درایو sda1 حدف خواهند شد.
پیشنهاد میکنیم مقاله جستوجوی فایلها در لینوکس با دستور Find را بخوانید. این مطلب کمکتان میکند تا با کاربردهای این دستور بیشتر آشنا شوید.
۵) حذف بستهها
بستههای مختلف ممکن است به یکدیگر وابسته باشند. برای اجرای دستورات لینوکس که مربوط به پاک کردن این بستهها هستند باید نهایت دقت را داشته باشید. با توجه به این وابستگی، پاک کردن یک بسته میتواند منجر به پاک شدن دیگر بستههای حیاتی شود و عملکرد کل سیستمعامل را مختل کند.
yum remove linux* apt-get purge selinux apt-get remove linux-header
۶) دستور dd
dd جزو قدرتمندترین دستورات لینوکس است که میتواند در دسته دستورات خطرناک لینوکس هم قرار بگیرد! کاربرد این دستور برای انتقال فایلهای مختلف – در سطح پایین – است و اگر بهدرستی مورد استفاده قرار نگیرد، محتویات هارد را از بین میبرد.
برای مثال، دستور زیر اطلاعات درایو /dev/sda2 را به صورت کامل حذف میکند.
dd if=/dev/zero of=/dev/sda2 dd if=/dev/sda1 of=/dev/sda2 dd if=/dev/urandom of=/dev/sdb
در مثال بالا، عبارات مقابل if ورودی دستور هستند و عبارات مقابل of محلی است که میخواهید خروجی دستور به آن منتقل شود. همانطور که میبینید مقصد هارد دستگاه (sda2) است. به این ترتیب تمام محتویات هارد پاک میشوند و خروجی دستور جایگزین آنها میشود.
۷) دستور mv
دستور mv محتویات یک فایل یا دایرکتوری را به محلی مشخص منتقل میکند. این دستور زمانی خطرناک است که یک دایرکتوری را به /dev/null منتقل کنیم. در این صورت فایل یا دایرکتوری حذف میشود! درست مثل دستور ممنوعه اول یعنی rm.
mv /home /dev/null
۸) base64
هر دستوری که برای اجرا به base64 ارسال شود خطرناک است! برای مثال دستور زیر معادل rm -rf / است. (تنها دلیلی که یک برنامهنویس دستوری را به رمزگذاری میکند، محدود کردن یا صدمه زدن به شماست)
echo cm0gLXJmIH4vKg== | base64 -d
توصیه آخر: مواظب کدهای مشکوک باشید
اینترنت پر است از افرادی که نیت خوبی ندارند! لینوکس هم که متنباز است و هرکس میتواند تغییرات مدنظرش را در آن اعمال کند؛ پس اگر در محیطهای مختلف اینترنتی به افرادی برخوردید که استفاده از کدهایی ناشناخته و عجیبوغریب را تبلیغ میکنند، نه تعجب کنید و نه خام آنها شوید!
در عوض حواستان را بیشتر جمع کنید تا ضرر نکنید. در ضمن، همیشه این 8 دستور هم گوشه ذهنتان باشد!
برای جمعآوری این کدها، علاوه بر تجربیاتمان از مقالات سایتهای زیر هم استفاده کردیم:
اگر کد خطرناک دیگری میشناسید که نباید در خط فرمان لینوکس وارد شود، آن را در قسمت کامنتها بنویسید. با این کار هم به کامل شدن مقاله ما کمک میکنید و هم به دیگر خوانندهها کمک میکنید تا گرفتار این کدهای مخرب نشوند.