پیشگفتار :
امروزه در دنیایی متکی بر فناوری اطلاعات زندگی میکنیم که هر لحظه به خطر افتادن جریان اطلاعات منجر به بروز خسارتهای تجاری جبران ناپذیری خواهد شد. امروزه همه به دنبال یک سکوی (Platform) امنتر برای اجرای برنامههای کاربردی و سرویدهندهها هستند. لینوکس حرفهای زیادی برای گفتن در سمت امنیت دارد. بسیاری از قابلیتهای امنیتی که در ویندوز وجود ندارند و یا فقط با اضافه کردن نرمافزارهای اضافی قابل دسترسی میباشند، بطور درونی و پیشگزیده در لینوکس پیاده سازی شدهاند. لینوکس از ابتدا برای محیطهای شبکهای و چند کاربره طراحی شده است و همین باعث رعایت مسائل امنیتی از ابتدا در ان شده است، درحالی که ویندوز اینگونه نبوده و درحال حاضر نیز از نظر امنیتی دارای نقاط ضعف فراوانی است. مثلا یک برنامه مخرب با استفاده از همین ضعفهای امنیتی میتواند کل سیستمعامل را نابود کند، ولی در صورتی که مورد مشابهی در لینوکس وجود داشته باشد، حداکثر به دایرکتوری خانگی کاربر اجرا کننده آسیب خواهد رسید، نه کل سیستمعامل. [1]
مقدمه :
اینطور نیست که لینوکس فاقد هر گونه اشکال امنیتی باشد، خیر، ولی باز بودن کد منبع آن باعث میشود تا بسیاری از اشکالات امنیتی پیش از ایجاد خسارت و در مراحل توسعه و برنامه نویسی برنامه بر ملا شده و رفع شوند. در صورتی که اشکالی نیز در برنامههای منتشر شده یافت شود، بدلیل موجود بودن کد منبع سریعا برطرف میگردد. در صورتی که در سیستم عامل ویندوز شما باید منتظر مایکروسافت بمانید و بمانید و بمانید. سیستمعامل ویندوز دارای اشکالات امنیتی بسیاری است که به راحتی هم کشف نمیشوند و هنگامی کشف میشوند که خسارات جبران ناپذیری در اثر حمله از طریق آن ضعفهای امنیتی رخ دهد که امثال آنرا شاهد هستیم. [2]
میتوان ادعا کرد که تقریبا هیچ ویروسی برای لینوکس وجود ندارد و این درحالی است که سالیانه بیش از ۱۰۰۰ ویروس و کرم مختلف برای سیستمعامل ویندوز ایجاد میشود. این بخاطر عدم گسترده بودن لینوکس نیست (حدود ۷۰ درصد از سایتهای وب در جهان بر روی سیستمعامل لینوکس و سرویسدهنده وب آپاچی درحال اجرا هستند) بلکه بدلیل وجود حفرههای امنیتی متعدد ویندوز و سیاست انحصار گرایی مایکروسافت است. یعنی چه؟ مایکروسافت طوری رفتار و سیاست گذاری کرده است که مشتریان خود را تنها به محصولات خودش عادت دهد. بسیاری از کاربران ویندوز از اینترنت اکسپلورر و آتلوک برای مرور وب و پست الکترونیک استفاده میکنند. من به عنوان یک ویروس نویس، میدانم که اگر ویروسی را برای کاربران ویندوز بنویسم، بر روی کامپیوترهای ۹۰ درصد آنها اثر خواهد کرد. چون اکثرا از IE و Outlook استفاده میکنند. ولی در لینوکس چطور؟ در لینوکس شما طیف وسیعی از انتخاب و عدم اجبار دارید. من از مرورگر موزیلا استفاده میکنم. دوستی دارم که Konqueror را ترجیح میدهد. دیگری از Opera استفاده میکند. من از Kmail استفاده میکنم. دوستم از Evolution، دیگری از Pine و بعدی از Mutt و برادرم هم از Mozilla Mail. من فقط میتوانم برای یکی از اینها ویروس بنویسم چون روی بقیه کار نخواهد کرد و عملا میزان اثر آن انداک خواهد بود. ضمنا هیچیک از ویروسهایی که برای ویندوز نوشته شدهاند، بر روی لینوکس کار نمیکنند.
فصل اول
کلیات بحث
لینوکس : تعدد سکوهای اجرایی
لینوکس برخلاف ویندوز بر روی تعداد زیادی از سکوهای مختلف سختافزاری اجرا میشود و شما حتی قادرید آنرا برای کار بر روی سکوی مورد نظرتان تغییر دهید. این قابلیت، لینوکس را برای بکارگیری در سختافزارهای درونهای (Embedded) بسیار مناسب میسازد. هسته 2.6 لینوکس که بتازگی ارائه شده است، این امکان را فراهم میسازد تا لینوکس را بر روی دستگاههای بسیار کوچک و یا ابر رایانههای بسیار بزرگ اجرا نمایید. اصلا ویندوز میتواند؟
لینوکس : گستردهترین تنوع در کاربرد
لینوکس را میتوانید برای انجام وظایف بسیار متعددی بکار بگیرید. از دستگاه چک کردن اتصالات شبکه، دیوار آتش، مسیریاب (Router) شبکه، سرویسدهندههای مختلف مانند وب، بانک اطلاعاتی، فایل، چاپ و...، میزهای کار (Desktop)، ایستگاههای کاری (Workstations) و... سیستمعامل لینوکس حتی این امکان را دارد که از آن بتوان به صورت یک سیستم زنده و پرتابل استفاده کرد. به این معنی که کل سیستمعامل از روی یک دیسک CD اجرا شود و شما آنرا با خودتان جابجا کنید و میزکار و تنظیماتتان را همراه خودتان منتقل کنید. علاوه بر این، این قابلیت برای رفع اشکال و نمایش آن نیز بسیار مفید است. [3]
لینوکس : تنوع در انتخاب
بدلیل آزاد بودن سیستمعامل لینوکس، هر گروه یا موسسه تجاری، یک نسخه خاص از آن که به توزیع یا پخش (Distribution) معروف هستند، منتشر ساخته است. این توزیعهای مختلف همگی لینوکس هستند، ولی هریک معمولا برای یک یا چند امر خاص مانند سرویسدهنده، دیوار آتش، میزکار و... طراحی شدهاند و هریک قابلیتها و بهینه سازیها خاص خودشان را به کاربران ارائه میکنند. کاربران در این میان آزادی انتخاب زیادی داشته و میتوانند چیزی که کاملا نیازشان را برطرف میکند، انتخاب کنند. چیزی که در ویندوز نمیتوان مفهومی برای آن پیدا کرد.
لینوکس : سیستمعاملی حرفهای
لینوکس یک سیستمعامل حرفهای است. یعنی ممکن است یک کاربر کاملا غیر فنی برای مدیریت آن و انجام برخی از تنظیمات سختافزاری دچار مشکل شود و نتواند به راحتی این کار را انجام دهد. البته برخی از توزیعهای لینوکس این امور را بسیار راحت (و حتی راحتتر از ویندوز) کردهاند، ولی با این حال به طور کلی، لینوکس یک سیستمعامل حرفهای است که در عین سادگی، از پیچیدگیهای فنی زیادی برخوردار است. البته تمام کاربران لازم نیست این امور را بدانند. مثلا یک کارمند دفتری که اموری مانند تایپ و حسابداری را با کامپیوترش انجام میدهد، ممکن است از نظر فنی تفاوتی را احساس نکند، ولی لینوکس خوراکی ۴ ساله برای کاربران خوره فراهم میسازد! برخلاف ویندوز، نکات بیپایانی برای یادگیری در لینوکس وجود دارد. این سیستمعامل ۴ سال به راحتی شما را مشغول خواهد کرد و میتوانید مطمئن باشید پس از آن بازهم مطالب جدیدی برای یادگیری وجود خواهند داشت! پس خورههای کامپیوتری از آن لذت وافری خواهند برد و هرگز آنرا رها نخواهند کرد.
برخلاف ویندوز، در لینوکس راحتتر هستید تا بسیاری از کارهای پیکربندی و سیستمی را از خط فرمان بسیار قدرتمند و عالی آن انجام دهید. با اینکه برای بسیاری از امور مانند ویندوز ابزارهای گرافیکی طراحی شده است، یک کاربر حرفهای واقعا از خط فرمان لینوکس لذت خواهد برد. خط فرمان ویندوز را اصلا میتوان خط فرمان نامید؟
لینوکس : بهشت برنامه نویسان!
لینوکس را بهشت برنامه نویسان نامیدهاند. برخلاف ویندوز که اکثر ابزارهای برنامه نویسی روی آنرا باید جداگانه نصب و حتی خریداری نمایید، لینوکس به همراه تمامی ابزارهای برنامه نویسی مورد نیازتان و با هر زبانی که فکر کنید ارائه میشود. کافی است آنرا نصب کنید و کار برنامه نویسیتان را با ابزارهای دلخواهتان شروع کنید. [4]
لینوکس : یک جعبه ابزار کامل
لینوکس برای کاربران حرفهای، یک جعبه ابزار کامل به شما میرود که در آن تمامی ابزارهای مورد نیاز مانند برنامههای اینترنتی، ابزارهای امنیتی مانند ابزارهای آزمایش شبکه، ابزارهای برنامه نویسی، هزاران صفحه کتاب و راهنما در آن پیدا خواهید کرد. ابزارهایی که در اختیارتان قرار دارد چنان متنوع هستند که میتوانید ۹۰ درصد اطمینان داشته باشید که پس از نصب آن به چیز دیگری نیاز نخواهید داشت.
لینوکس : یکی از زیباترین دستاوردهای بشری
لینوکس در سایه همکاری و تبادلات علمی هزاران نفر در سرتاسر جهان ایجاد شده و توسعه یافته است. این همکاری چنان گسترده و زیبا بوده و هست، که به سیستمعامل لینوکس لقب «زیباترین دستاورد همکاری جمعی بشر» داده شده است. فرهنگ حاکم در جامعه لینوکس و بازمتن، فرهنگ کمک، اشتراک اطلاعات و تلاش برای بهبود هرچه بیشتر محصولات و «انجام هرکاری که از دستت برمیآید» است. هرکس که میخواهد با این سیستمعامل کار کند، باید تمامی دیدگاهها و عقاید قبلی خود را درباره نرمافزارها و سیستمعامل کنار گذاشته و با یک دیدگاه جدید و طرز فکر متحول شده وارد دنیای لینوکس شود، زیرا با فرهنگ حاکم متفاوتی روبرو خواهد بود. لینوکس نوید دهنده آزادی است...
پیش به سوی لینوکس
روز به روز شاهد گسترش سیستمعامل لینوکس و فناوریهای بازمتن (Open Source) در سرتاسر جهان هستیم. متاسفانه به دلیل اینکه کشور ما یک کشور مایکروسافتی است، تاکنون اقدامات کمی در رابطه با معرفی سیستمعامل لینوکس و فناوریهای بازمتن و مزایای آن انجام شده است.
درحالی که بسیاری از کشورهای جهان در حال انتقال سیستمهای خود به سیستمعامل لینوکس بوده، لینوکس را در مدارس خود گسترش داده و در حال تربیت نسلی آشنا با این سیستمعامل هستند، مسئولین یکی از بانکها با افتخار اعلام میکند که سیستمهای خود را به ویندوز ۲۰۰۰ منتقل نموده است و یا مسئولین آموزش و پرورش اعلام میکنند که تا وقتی مایکروسافت وجود دارد، ما از محصولات آن استفاده خواهیم کرد. شاید اکنون ما ویندوز و آفیس را به قیمت ۲۰۰۰ تومان خریداری میکنیم، ولی تا سال ۲۰۰۸ که به سازمان تجارت جهانی خواهیم پیوست، دیگر خبری از ویندوزهای ۲۰۰۰ تومانی نخواهد بود و آن هنگام است که پول نفت ما که متعلق به آیندگان بوده و باید صرف آبادانی این کشور شود، به جیب مایکروسافت سرازیر خواهد شد.
ما چه چیزی از پرو، برزیل، اسپانیا، چین، آلمان، ژاپن، نروژ، ویتنام و ... کم داریم؟ مگر آنها نتوانستند با این سیستم کار کنند؟ مگر این سیستم جواب خود را پس نداده و سیستمی است نا مطمئن که همه ما از آن فراری هستیم؟ به هیچ وجه اینگونه نیست. [5]
فصل دوم
پوسته فرمان
ظاهر پوسته فرمان
در صورتی که لینوکس شما فاقد محیط گرافیکی است و یا اکنون محیط گرافیکی آن در حال اجرا نیست، شما باید دستورات خود را از طریق پوسته فرمان به سیستم عامل ارسال کنید. نخستین چیزی که در پوسته فرمان مشاهده میکنید، اعلان فرمان است که بصورت علامت $ میباشد. اعلان فرمان برای کاربر ریشه بصورت # است. در بیشتر سیستمهای لینوکس قبل از اعلان فرمان نام کاربری شما و نام کامپیوترتان قرار میگیرد که بصورت زیر نشان داده میشود :
[alan@memphis home]$
امکان نمایش کاراکترای مورد نیازتان بجای کاراکترهای فوق وجود دارد. چگونگی این کار بعدا شرح داده خواهد شد. محیط پوسته فرمان امکانات زیادی دارد.
تایپ دستورات در محیط پوسته فرمان بسیار آسان میباشد. برای اینکه با محیط پوسته فرمان آشنا شوید، سعی کنید با دستوراتی که در زیر بررسی میشوند، تمرین کنید.
نکته: در صورتی که هنگام راه اندازی سیستم، بجای پوسته فرمان محیط گرافیکی لینوکس اجرا میشود، برای تایپ فرامین پوسته باید از Terminal یا Konsole استفاده کنید. میتوانید در منوی run، فرمان xterm را نیز تایپ کنید.
در مثالهای زیر علامتهای $ و # نشان دهنده اعلان فرمان میباشند. پس تایپ هر فرمان باید کلید Enter را فشار دهید و خروجی آن فرمان در خطوط پس از آن نمایش داده خواهد شد.
بررسی نشست ورود به سیستم
هنگامی که وارد سیستم لینوکس میشوید، برای سیستم دارای یک هویت خاص هستید. این هویت شامل نام کاربری شما، نام گروه شما، شماره کاربری شما و شماره گروه شماست. همچنین لینوکس اطلاعات زمان ورود به سیستم، مدت حضور، مدت بیکاری و محل ورود شما به سیستم را نگهداری میکند. (حواستان را جمع کنید!)
برای بدست آوردن اطلاعات در مورد هویت کاربری خودتان در جلوی اعلان فرمان دستور زیر را تایپ کنید. خروجی آن در زیر آن نشان داده شده است:
$ id
uid=500(Alan) gid=500(Alan) groups=500(Alan)
خروجی فرمان نشان میدهد که نام کاربر Alan بوده که عضو گروه Alan است و شماره های کاربری و گروه آن ۵۰۰ میباشد.
با استفاده از فرمان who میتوانید اطلاعاتی در مورد نشست جاری بدست آورید. در زیر این فرمان به همراه خروجی آن نشان داده شده است:
$ who
Alan :0 Apr 23 08:46
همچنان که می بینید، در خروجی نام کاربر جاری، زمان و تاریخ ورود به سیستم نمایش داده شده است.
بررسی دایرکتوری ها و مجوزهای فایلها
در لینوکس مسیر جاری به مسیری گفته میشود که کاربر در آن لحظه در آن قرار دارد. هنگامی که وارد سیستم میشوید، لینوکس شما را در دایرکتوری خانگی تان قرار میدهد. هنگامی که دستور باز کردن یا ذخیره کردن فایلی را صادر میکنید، لینوکس مسیر جاری را بعنوان محل آن فایل فرض کرده و از آنجا آنرا باز کرده و یا ذخیره میکند. ساختار سیستم فایل لینوکس بعدا شرح داده خواهد شد و لازم نیست نگران آن باشید. برای نمایش دایرکتوری جاری فرمان زیر را جلوی خط فرمان تایپ کنید. خروجی آن در زیر آن نمایش داده شده است:
$ pwd
/usr/bin
در مثال بالا مسیر جاری usr/bin است. برای یافتن مسیر دایرکتوری خانگی خود، فرمان زیر را تایپ کنید:
$ echo $HOME
/home/Alan
همچنان که در خروجی ملاحضه میکنید، مسیر دایرکتوری خانگی شما نمایش داده شده است. برای اینکه به دایرکتوری خانگی خود باز گردید، کافی است به سادگی فرمان زیر را تایپ کنید:
$ cd
این فرمان، شما را به دایرکتوری خانگی تان باز می گرداند. خوب بد نیست ببینیم که چه چیزهایی در دایرکتوری خانگی وجود دارد. برای نمایش محتویات یک دایرکتوری، باید از فرمان ls استفاده نمایید. در صورتی که در دایرکتوری خانگی خود قرار ندارید میتوانید مسیر کامل آنرا تایپ کنید. در صورتی که فرمان ls را بدون هرگونه دایرکتوری تایپ کنید، محتویات مسیر جاری نمایش داده خواهد شد. گزینه a تمام فایلهای مخفی را نمایش میدهد و گزینه l برای نمایش جزئیات کامل فایلها بکار میرود. هنگام تایپ یک فرمان میتوانید گزینه های متعدد آنرا کنار هم تایپ کنید.در زیر این دستور به همراه یک خروجی مثال نشان داده شده است:
[1] Greg KH 2009-07-19. "Linux 2.6.30.2". linux-kernel mailing list. http://lkml.org/lkml/2009/7/20/3. Retrieved on 2009-07-20
[2] Linus Torvalds 2009-07-22. "Linux 2.6.31-rc4". linux-kernel mailing list. http://lwn.net/Articles/343022/. Retrieved on 2009-07-23
[3] Lyons, Daniel. "Linux rules supercomputers". http://www.forbes.com/home/enterprisetech/2005/03/15/cz_dl_0315linux.html. Retrieved on 2007-02-22
[4] The Economist (December 2007). "Technology in 2008". http://www.economist.com/science/displaystory.cfm?story_id=10410912. Retrieved on 2008-04-01 (publicly available Dec 2007-May 2009, rendered members only in May 2009, quoted at http://web.ncf.ca/fn352/ubuntu.html#Economist)
[5] Weeks, Alex (2004). "1.1". Linux System Administrator's Guide (version 0.9 ed.). http://www.tldp.org/LDP/sag/html/sag.html#GNU-OR-NOT. Retrieved on 2007-01-18