Professional Documents
Culture Documents
آموزش مقدماتی لینوکس
آموزش مقدماتی لینوکس
جزوه آموزشی
مقدمه14 ..................................................................................................................................
کار با شبکه154.......................................................................................................................
این کتاب از توصیهوای متخصصان با دانش و تجربهی باال ،بهخصوص مهندس حاجیغالمعلی ،که
فردی باتجربهوای جهانی در این زمینه وستند ،استفاده شده اس که از این جه این کتاب را
متفاوت و کمنظیر میکند.
عالوه بر صفحات manخود لینوکس و توضیحاتی که در داخل خود سیستم وجود دارد،
با استفاده از اینترن وم میتوانید به منابع بسیاری دسترسی داشته باشید .مثالً در گوگل عبارت
زیر را جستجو کنید:
linux usb
ال
که اطالعات زیادی در مورد usbدر محیط سیستمعامل لینوکس برای شما برمیگرداند .یا مث ً
عبارت زیر را جستجو کنید:
linux usb command
که در مورد دستوراتی که در رابطه با usbدر سیستمعامل لینوکس موجود اس برای شما اطالعات
زیادی را برمیگرداند.
عالوه بر اینوا عضو شدن در گروهوایی که در رابطه با لینوکس وستند اطالعات شما را بهروز نگه
خواود داش و ومینطور درصورتیکه سؤالی داشته باشید بهراحتی میتوانید آنوا را مطرح کرده
و از افرا د با تجربه پاسخ خود را دریاف کنید .یکی از بهترین جوامع مجازی که به این منظور وجود
دارد linuxدر it.toolbox.comاس که اکید توصیه میکنیم بهعنوان یک متخصص لینوکس در
آن عضو شوید .به این منظور به آدرس زیر مراجعه نمایید:
http://linux.ittoolbox.com
1به جرئ میتوان گف ایشان جزو بهترین متخصصان سیستمعامل لینوکس در جهان وستند.
فصل 1معماری سیستم
در این فصل به بررسی قسم وای مختلف سیستمعامل لینوکس خواویم پرداخ .با بررسی
دایرکتوریوای مهم سیستم یاد خواویم گرف که در مورد سخ افزار سیستم و باال آمدن سیستم
به دانش خود بیفزاییم .قرض بر این اس که شما به یک کام یوتر که بر روی آن لینوکس نصبشده
اس دسترسی دارید و در shellیا terminalآن دستوراتی را که الزم باشد میتوانید وارد کنید و
خروجیوا را مشاوده نمایید.
موارد زیر موردبررسی قرار خواوند گرف :
تشخیص و پیکربندی تنظیمات سخ افزاری
باال آمدن ( )bootسیستم
تغییر runlevelوا و خاموش یا rebootکردن سیستم
پیکربندی سختافزار
ومهی سیستموای عامل بر روی سخ افزار اجرا میشوند و این سخ افزار بر روند اجرای
سیستمعامل تأثیر میگذارد .مثالً سخ افزار میتواند سریع یا کند ،قابل اتکا یا دچار مشکل باشد.
پس تمام کام یوتروا به ومراه مجموعهای از قطعات سخ افزاری روانهی بازار میشوند که حتم ًا
شامل مواردی چون پردازندهی مرکزی RAM ،1و وارد دیسک اس .در قلب بسیاری از این قطعات
سخ افزاری firmwareقرار دارد که ابزاروای پیکربندی را فراوم آورده و روند باال آمدن
سیستمعامل را نیز آغاز میکند .با مطالعهی دفترچهی راونمای بسیاری از قطعات سخ افزاری
میتوانید در مورد firmwareآنوا اطالعات زیادی کسب کنید ،اما به یاد داشته باشید که ومین
که سیستمعامل لینوکس باال آمد ،مدیری دستگاهوای سخ افزاری از طریق ابزاروایی خواود بود
که سیستمعامل لینوکس فراوم آورده اس .قسم وای کلیدی که توسط ( firmwareو بعد از اینکه
سیستمعامل باال آمد ،توسط لینوکس) مدیری میشوند عبارتند از :وقفهوا ،۲آدرسوای ورودی و
خروجی ،۳دسترسی مستقیم به حافظه ،۴ساع بالدرنگ ،۵و واسطوای ATA۶وارددیسکوا (که
خود بر دو نوع SATAو PATAوستند که اخیراً نوع SATAآن رایجتر شده اس ).
1CPU
۲ interrupts
۳ I/O addresses
۴ DMA access
۵ the real-time clock
۶ Advanced Technology Attachment
۷ motherboard
1۹ فصل 1معماری سیستم
را نیز دارند که در صورتی که قطعهای از قطعات سخ افزاری قدیمی باشد ،باز وم امکان کار با آن
وجود خواود داش .
1
در ادامه ابتدا به پیکربندی سخ افزار میپردازیم و بعد وم بهدق روند باال آمدن سیستم را بررسی
خواویم کرد.
توزیعوای جدید لینوکس به ومراه راهاندازوای USBارائه شدهاند و نیازی نیس که برای اتصال و
راهاندازی قطعات USBمعمولی کار خاصی انجام دوید .بنابراین اگر مثالً یک کیبورد USBرا به
کام یوترتان که بر روی آن لینوکس نصب شده اس وصل کنید ،لینوکس آن را خواود شناخ .
نکته :به خاطر داشته باشید که برای استفاده از USB 3.0باید نسخهی کرنل لینوکسی
که از آن استفاده میکنید 2.6.31یا باالتر باشد .برای دیدن نسخهی کرنل لینوکسی که دارید دستور
uname –rرا بزنید.
۲
در خط فرمان لینوکس دستور زیر را وارد کنید و س س کلید enterرا فشار دوید:
$ lsusb
خروجی آن به مشابه خروجی زیر خواود بود:
با توجه به خروجی این دستور متوجه میشویم که ۸بأس usbتشخیص داده شده اس (بزرگترین
شماره در ستون دوم 008اس ) .در مثال ما ویچ دستگاوی به پورتوای USBوصل نیس بنابراین
بعد از IDویچ شماره ای غیر از صفر و ویچ نامی نیامده اس .اگر دستگاوی به پورتوای USB
سیستمی که شما بر روی آن lsusbرا اجرا میکنید متصل باشد ،در خروجی دستور lsusbاطالعات
آنوا را مشاوده خواوید کرد .توصیه میکنیم که حتم ًا به صفحهی راونمای این دستور مراجعه
1 boot
۲ ومان صتتفحهی ستتیاوی که امکان وارد کردن دستتتورات را در آن دارید؛ تذکر :این terminalیا shell
یا
تو ضیحات و تو ضیحاتی از این د س ،یک بار در اینجا و برخی جاوای دیگر کتاب آمده ا س که خوانندهی
مبتدی وم بتواند بهخوبی مبحث را دنبال کند
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۲۰
نمایید .برای این کار دستور man lsusbرا بزنید .این دستور آرگومانوای زیادی را میپذیرد که
مهمترین آنوا در جدول زیر آمده اس :
توضیح آرگومان
در خروجی دستتتتور توضتتتیحات بیشتتتتری را -v
مینویسد.
در خروجی تن ها اطال عات مربوط به busو ]-s [[bus]:]devnum
devnumداده شده را چاپ میکند.
به ک مک این آرگو مان میتوان ید اطال عات ]-d [vendor]: [product
مربوط به محصتتول خاصتتی از تولید کنندهی
خاصی را ببینید.
اطالعتتات را در خروجی بتتهصتتتورت درختی -t
نمایش میدود ،به این ترتیب راح تر میتوان
تشخیص داد که چه دستگاوی به چه کنترلری
متصل شده اس .
عالوه بر دستتتتگاهوای ،USBقطعاتی داریم که بر روی باسوای PCI1کام یوتر قرار دارند .جه
مشاودهی پیکربندی دستگاهوای pciدستور زیر را بزنید:
$ lspci
مثالً فرض کنید که میخواویم پیکربندی pciکارت شبکه را مشاوده کنیم ،دستور زیر را وارد
میکنیم:
$ lspci | grep Eth
که بر روی سیستم ما خروجی زیر را تولید میکند:
)05:00.0 Ethernet controller: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 78
05:01.0 Ethernet controller: Sundance Technology Inc / IC Plus Corp IC Plus IP100A Integrated
)10/100 Ethernet MAC + PHY (rev 31
پس ما دو پورت شبکه بر روی سیستم داریم .آدرس 05:00.0برای کارت شبکهی اول به این
معناس که این کارت شبکه بر روی busبا شمارهی ،05اولین قطعه ( )00سخ افزاری اس
(معموالً اولین قطعه سرع بالقوهی باالتری دارد) ،و .0وم شمارهی functionآن را نمایش میدود.
پس 05:00.0بهصورت bus:device.functionاطالعات پیکربندی سخ افزاری را نمایش میدود.
یکی از نکات مهمی که باید به خاطر داشته باشید این اس که تا زمانی که محل اتصال قطعات
سخ افزاری را در داخل کام یوتر جابهجا نکرده باشید ،این اطالعات ثاب خواوند بود .بهخصوص
این مسئله برای کارتوای شبکه اومی خاصی دارد چون ممکن اس با ایجاد تغییرات نرمافزاری
نام آنوا عوض شود ،مثالً eth1تبدیل شود به eth4درحالیکه اطالعات پیکربندی سخ افزاری آن
تا زمانی که جابهجایی سخ افزاری صورت نداده باشید ،ثاب خواود بود (معموالً تغییرات نرمافزاری
بسیار بیشتر از تغییرات سخ افزاری اس ).
توصتتیه میکنیم که حتماً با اجرای دستتتور man lspciبه صتتفحهی راونمای این دستتتور مراجعه
نمایید.
قطعات سخ افزاری در لینوکس توسط راهاندازوای کرنل( 1وستهی سیستمعامل لینوکس) کنترل
میشوند .بسیاری از راهاندازوای کرنل به فرم ماژول وستند که فایلوای مستقلی وستند که معمو ًال
در مسیر /lib/modulesقرار دارند که میتوانند جه فراوم آوردن دسترسی به قطعات سخ افزاری
مرتبط با خودشان بارگذاری۲شوند ،یا جه غیرفعال کردن چنان دسترسی unload ،شوند .لینوکس
در ونگام باال آمدن ماژولوایی را که نیاز دارد ،را بارگذاری میکند .فقط درصورتیکه نیاز به
بارگذاری ماژول وای اضافی که خودتان نیاز دارید ،ممکن اس که الزم باشد که توانایی loadیا
unloadکردن ماژولوا را داشته باشید.
دستور زیر را وارد کنید:
$ lsmod
خروجی آن بهصورت زیر خواود بود:
Module Size Used by
ipt_MASQUERADE 7617 1
iptable_nat 10949 1
ip_nat 21229 2 ipt_MASQUERADE,iptable_nat
ip_conntrack 53665 3 ipt_MASQUERADE,iptable_nat,ip_nat
...
ستتتون اول نام تمام moduleوایی را که بارگذاری شتتدهاند نمایش میدود .برای کستتب اطالعات
بیشتر در مورد moduleخاصی میتوانید دستور modinfoو بعد نام آن ماژول را وارد کنید .ستون
دوم نمایشدوندهی بخشوایی اس که از آن ماژول استفاده میکنند.
به خاطر داشته باشید ،که خروجی دستور lspciممکن اس بر روی برخی سیستموا بسیار طوالنی
شود ،به ومین دلیل توصیه میکنیم که آن را بهصورت lsmod | lessاجرا کنید.
نکته مهم :ممکن اس شما دو کام یوتر داشته باشید که سخ افزاروای کامالً یکسانی دارند ولی
خروجی دستور lsmodبر روی آنوا متفاوت اس .یکی از دالیلی که میتواند باعث این مسئله شود
این اس که امکان compileکردن و چسباندن moduleبه خود وستهی لینوکس وجود دارد که
در این صورت دیگر نام آن در خروجی lsmodنخواود آمد ،زیرا که آن moduleدیگر بخشی از
وستهی سیستمعامل محسوب می شود و از ومان ابتدای کار که وسته بارگذاری میشود در
حافظهی اصلی حضور خواود داش .
ال بارگذاری نشده اس ،میتوانید از دو
برای بارگذاری moduleی که نیاز دارید ولی قب ً
دستور insmodو modprobeاستفاده کنید .بهعنوانمثال:
$ modprobe floppy
ومان کاری را انجام میدود که فرمان
$ insmod /lib/modules/2.6.26/kernel/drivers/block/floppy.ko
انجام خواود داد .معموالً روش اول توصیه میشود.
برای unloadکردن یک moduleکه قبالً بارگذاری شده اس میتواند از دستور modprobe
–rیا rmmodeاستفاده کنید.
تمرین عملی :صفحات manدستورات گفتهشده در باال را مطالعه کنید .مثالً دستور man modprobe
را وارد کنید و بعد آن را مطالعه کنید.
بررسی دایرکتوری/dev
. نمایش دستگاهوای متصل شده به سیستم اس این دایرکتوری شامل فایلوای ویژه جه
دستورات زیر را اجرا کنید:
$ cd /dev
$ ls -l | less
برای رفع ابهام ،در این قسم تنها یکبار بهصورت بسیار جزئی و ساده نحوهی نوشتن دستور باال
را توضیح میدویم:
توضیح دستور باال :بنویسید lsس س یک فاصله قرار دوید ،بعد عالم منها را بزنید و
بعد از آن ،بدون فا صله ،ال کوچک انگلی سی را تایپ کنید .حاال یک فا صله قرار دوید و
کلید شیف را نگه دارد و کلید \ را بر روی کیبورد خود فشار دوید تا کاراکتر | که به آن
Pipeمیگویند نوشتتته شتتود .حاال یک فاصتتله قرار دوید و بنویستتید .lessبعد از اجرای
دستور باال ،با فشار دادن فلشوای باال و پایین میتوانید در متن خروجی ،در صورتی که
بیش از یک صفحه باشد ،حرک کنید .برای خروج کلید qرا فشار دوید.
دستور باال ( )ls –l | lessسم راس ترین فیلد اسم فایل ،در کنارش تاریخ و ساع و مالک فایل و
س س مجوزوای دسترسی و استفاده از فایل اس .در لینوکس تقریب ًا ومهچیز یک نمایش بهصورت
فایل دارد ،بنابراین مثالً فلش درایو شما میتواند در آدرس /dev/sdbنمود فایلی داشته باشد.
تشخیص نوع هارددیسک و دستگاههای کامپیوتر از روی نام فایل در زیر :/dev
در زیر دایرکتوری /devفایلوایی وجود دارند که نمایندهی دستگاهوای سخ افزاری وستند.
فایلوای مربوط به وارددیسکوای IDEمعموالً بهصورت /dev/hdXاس که در آن Xیک حرف
اس ،مثالً hdaو در صورتی که این دیسک پارتیشن بندی شده باشد ،مواردی ومچون /dev/hda1
و /dev/hda2نیز خواویم داش (که مثالً دو عدد پارتیشن بر روی این وارددیسک پیکربندی شده
اس ) .در صورتی که وارددیسک از نوع SATAباشد بهصورت /dev/sdXنشان داده میشود.
درایووای فلش نیز بهصورت /dev/sdXنمایش داده میشوند CDROM .و DVDROMنیز بهصورت
/dev/scdXو /dev/srXنمود پیدا میکنند.
در سم چپ خروجی د ستور ( )ls –l | lessدر زیر دایرکتوری ،/devمجوزوای د ستر سی نو شته
شده اس .اولین حرف این مجوزوا ،معنای خاصی دارد:
نمایش دهندهی اولین حرف
دایرکتوری d
File خط تیره ()-
Block device b
Character device c
Pipe p
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۲۴
Socket s
پس bبرای دستگاهوای بلوکی و cبرای دستگاهوای کاراکتری اس .
تمرین عملی :تحقیق کنید که ور کدام از موارد اشاره شده در جدول باال در سیستمعامل لینوکس
چه کاربردی دارند.
عدد majorبه معنی اصلی اس که وستهی لینوکس ( )kernelبا استفاده از آن تعیین میکند که
چه device driverی را انتخاب کند و با آن کار کند .عدد دوّم را minorمیگوییم و با استفاده از
آن معلوم میشود که یک deviceچه مدلی دارد و ومچنین کدام یک از پرینتروای متصل به
کام یوتر اس type: c .نشاندوندهی نوع deviceاس که در اینجا با نوع دستگاه کاراکتری سر و
کار داریم.
پس برخی فایلوا در زیر دایرکتوری /devنشتتاندوندهی دستتتگاهوای characterی یا blockی
وستتتتند و برخالف فایل وای معمولی قد و حجم ندارند ،بلکه majorو minorدارند که major
شتتمارهی deviceاس ت و minorتعداد دستتتگاه با آن نوع را مشتتخص میکند .مثالً وقتی چند تا
وارددی سک به یک کام یوتر مت صل و ستند که از یک نوع driverا ستفاده میکنند برای ت شخیص
آنوا از یکدیگر کافی ا س که به عدد minorمراجعه شود .به این ترتیب با این دو عدد deviceوا
از وم تفکیک و شتتناخته میشتتوند .بادتان باشتتد که فقط rootاجازه ستتاخ فایلوای deviceرا
دارد ،و در واقع بهطور معمول این فایلوا را ما نمی سازیم و معموالً این خود سیستمعامل ا س که
بعد از متصتتتل شتتتدن دستتتتگاه به کام یوتر آن را تشتتتخیص میدود و نمود فایلی آن را در زیر
دایرکتوری /devمیآورد .بنابراین فایلوای زیر دایرکتوری devپویا وستتتتند و خود ستتتیستتتتم
deviceوایش را شناسایی میکند.
پس در این قسم یاد گرفتیم که فرمانی که امکان ساخ device fileرا میدود mknodاس و
البته فقط کاربر rootامکان استتتفاده از آن را دارد .برای مشتتاودهی صتتفحهی راونمای دستتتور
،mknodدستور زیر را اجرا کنید:
$ man mknod
حال بهعنوان rootدستور زیر را اجرا کنید:
$ cd /dev
$ sudo su
# mknod pardis b 250 44
majorو شمارهی بعدی minorاس .البته ما اجازه ساخ bیعنی block Deviceو شمارهی اول
نداریم چون در کام یوتر ما برای وستهی لینوکس دستگاوی با شمارهی ۲۵۰ majorوجود ندارد،
پس پیغام no such deviceرا مشاوده میکنیم .پس به جای اینکه بهطور تصادفی یک عدد major
بنویسیم به خروجی دستور زیر مراجعه میکنیم و متناسب با دستگاه مورد نظرمان شمارهی major
را انتخاب میکنیم:
$ cat /proc/devices
چپ دایرکتوری devحرفوای دیگری وم داریم مثل .pبه فرمانوای به جز ،b ،d ،cو – ما در سم
زیر توجه کنید:
$ mknod pardis p
$ ls -l
total 8
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۲۶
عالوه بر فرمان mknodدر لینوکس یک فرمان دیگر به نام (MAKEDEVبا حروف بزرگ) وجود
دارد و به منظور ایجاد فایل د ستگاهوا در زیر دایرکتوری devبه کار میرود (جه م شخص شدن
آخرین وضتتتعی دستتتتگاهوا و لیستتت کردن مجدد آنوا در زیر .)/devبا این فرمان دیگر نیازی
نداریم mknodرا به کار ببریم.
$ MAKEDEV
این دایرکتوری ،یک دایرکتوری خاصِ ساکن در حافظه و حاوی اطالعات مختلف درباره کاروای
درحال اجرا در سیستم لینوکس اس .در زیر دایرکتوری procمجموعهای از دایرکتوریوای عددی
و تعدادی فایل مرتبط با تجهیزات وجود دارد.
$ cd/proc
$ ls -l | less
دایرکتوری procفقط بهصورت logicalاس و موجودی مستقلی نیس و آیینهی تمامنما از
اطالعات kernelاس .با استفاده از دادهوای زیر دایرکتوری /procمیتوانید ببینید که کرنل چه
فایلوایی را openکرده و چند نفر loginوستند .به محض اینکه سیستم را downکنید دایرکتوری
procگم میشود و به محض اینکه upکنید ساخته میشود .در زیر این دایرکتوری به ازای ور
processی یک دایرکتوری داریم .وقتی فرمان زیر را در زیر دایرکتوری procمیزنیم به ما یک
عدد میدود ،که شماره پروسس (شل) مرتبط به شما میباشد.
$ cd /proc
$ echo $$
8827
دایرکتوری proc ور کاری که انجام دوید و ور فرمانی که بزنید adminاز طریق فایلوای زیر
میتواند ببیند که کجا وستید .تعداد دایرکتوریوایی که زیر دایرکتوری procوجود دارند ثاب
نیس و پیوسته در حال تغییر اس .
نکته :فرمانوای whoو wبرای اینکه لیس کاربران loginکرده را تهیه کنند از دادهوای
زیر دایرکتوری procاستفاده میکنند.
البته در زیر این دایرکتوری تعدادی فایل مرتبط با تجهیزات نیز داریم .فرمان زیر را اجرا کنید:
۲۷ فصل 1معماری سیستم
فایل interrupts
فایل بعدی که در زیر /procبررسی میکنیم interruptsاس .در این فایل شماره ور interruptو
تعداد تکرار آن را میبینیم.
$ cat interrupts
ور مادر بورد تشکیل یافته از تعدادی قطعه اس که به یک بورد اصلی (یا بهتر اس بگوییم یک
بورد اصلی و چند بورد دیگر) وصل اس .وقتی ور کدام از قطعهوا بخواوند با بورد مادر صحب
کنند interruptمیدوند .ومچنین دستگاوهایی وم که میخواوند با یکدیگر صحب کنند
interruptمیدود .مثالً کارت شبکه interruptشماره 1۸۵میدود.
timer interrupt
اگر فرمان vmstat -sرا بزنیم در انتهای خروجی آن به ما میگوید که context switchingچند بار
انجام شده اس context switching .به معنای واگذاری کنترل از یک processبه processدیگر
اس .
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۲۸
$ cd /proc/ide
$ ls -l
$ cd hda
$ ls -l
… cash capacity … model
$ cat model
maxtor 2f040l0
وقتی در دایرکتوری procوستتتیم با فرمان زیر میتوانیم مشتتاوده کنیم که وارد دیستتک ما چند
قسم شده اس :
$ cat partitions
مثال :اسکری تی بنویسید که با اجرای آن مدل cpuرا بدود.
پاسخ:
فایل سیستمی مجازی در زیر دایرکتوری /sysقرار دارد که با نام sysfsشناخته میشود .این فایل
سیستم محلی اس که ابزاروای در سطح کاربر (و نه وسته) اطالعاتشان را در مورد دستگاهوای
سیستم به دس میآورند .ومچنین به واسطهی این پوستهی ارائه شده میتوان تنظیمات مورد نظر
را بر دستگاهوای متصل به سیستم اعمال کرد (که البته معمو ًال نیازمند دانش عمیق و تخصصی در
ال بر روی سیستم ما ،ومانطور که قبالً دیدیم کارت شبکه مورد آن قطعهی سخ افزاری اس ) .مث ً
در آدرس PCIبا مقدار 05:00.0قرار داش .پس دستور زیر را اجرا میکنیم ،که به دایرکتوری که
حاوی فایلوای مربوط به آن اس وارد شویم:
$ cd /sys/bus/pci/devices/0000:05:00.0
حال فرض کنید که میخواوید بدانیم که شمارهی irqآن چند اس .بعد از دستور باال ،دستور زیر
را وارد میکنیم:
$ cat./irq
که در سیستم ما شمارهی 1۶۹را بر میگرداند.
که سخ افزار را زیر و رو اطالعات را از procمیخوانند .یکی از آنوا فرمان dmidecodeاس
میکند و اطالعات را از زیر procدر میآورد.
$ dmidecode | less
در خروجی دستور باال اطالعات مختلفی در مورد سخ افزار را مشاوده میکنید.
یک نکتهی مهم در مورد uuidیا "شتتناستتاگر یکتای جهانی" این استت که وقتی Hardرا فرم
میکنید uuidبه شما میدود .بهعنوانمثال uuidکام یوتر کالس عدد ۳۲رقمی وگزا 8.4.4.4.12
اس .برای اینکه این عدد یکتا باشد و تکراری نباشد ،اوّل Mac Addressکارت شبکه کام یوتر را
میگیرد و بعد از روی آن uuidرا می سازد .اگر کام یوتر شما کارت شبکه ندا شته با شد cupidرا
میگیرد .در صورتی که خودتان خواستید UUIDبسازید میتوانید از فرمان زیر استفاده کنید:
$ uuidgen
پس یادتان باشتتد اگر خواستتتید laptopبخرید چند فرمان را به یاد داشتتته باشتتید و CD Live
لینوکس را ببرید و اطالعات سخ افزاری آن را بررسی کنید.
عالوه بر فرمان dmidecodeفرمانوای و lshwنیز اطالعات مهمی در مورد سخ افزار سیستم
می دوند .برای مثال مشخصات کامل مادر بورد و باطری و موارد دیگر را در خروجی این دستورات
میبینید .ورچند خروجی دستور dmidecodeبسیار مفصل اس ،در برخی مواقع ،ورچند نادر،
اطالعات نادرستی را به نمایش میگذارد.
HAL Daemon
HALیا ومان ،Hardware Abstraction Layer Daemonیا haldیک برنامهی user-spaceاس
که در ومواره در حال اجراس و به برنامهوای user-spaceاطالعاتی در مورد قطعات سخ افزاری
موجود میدود.
D-Bus
Desktop Busومانند haldیک daemonاس و ومواره در حال اجراس D-Bus .این امکان را
فراوم میآورد تا پروسسوا با یکدیگر در ارتباط باشند ،ومچنین در مورد eventوا (مثل متصل
شدن یک قطعهی سخ افزاری جدید از )USBوم از طریق سایر processوا و وم از طریق
سخ افزار کسب اطالع کنند.
udev
از گذشته تا کنون لینوکس گرهوای مربوط به سخ افزار را در مسیر /devایجاد میکند .وجود
قطعات سخ افزاری Hotplugباعث به وجود آمدن udevشد :یک فایل سیستم مجازی که در
مسیر /devماون ( )mountمیشود و فایلوای پویای دستگاهوای سخ افزاری را ایجاد میکند.
تنظیمات udevاز مسیر /etc/udevانجام میشود .توجه داشته باشید که تنظیمات پیشفرض برای
قطعات سخ افزاری رایج ،کافی اس .
اما قطعات ستتخ افزاری قدیمیتر مثل آنوایی که از پورت RS-232یا parallelوصتتل میشتتوند
(مثالً ماوس یا کیبوردوای قدیمی یا چاپگروایی که از پورت موازی وصتتتل میشتتتوند)coldplug ،
و ستند و الزم ا س که برای ات صال یا جدا کردن آنوا کام یوتر را خاموش کنید .یادتان با شد که
اگر در موقع رو شن بودن سی ستم این کار را بکنید ممکن ا س به کام یوتر یا آن د ستگاه آ سیب
وارد شود.
۳1 فصل 1معماری سیستم
تذکر :ممکن اس شما در گذشته مانیتور را در حالتی که کام یوتر روشن اس جدا یا متصل کرده
باشیدو مشکلی پیش نیامده باشد ،اما توصیه میشود که مانیتور را وقتی که کام یوتر روشن اس
متصل یا جدا نکنید ،زیرا امکان آسیب دیدن کام یوتر یا مانیتور وجود دارد .توجه داشته باشید که
استاندارد VGAچیزی در مورد hotpluggableبودن آن نمیگوید .البته در قطعات سخ افزاری
جدید از دیودوای محافظ استفاده می شود ،که در این صورت در صورت وجود آسیب ،این دیودوا
خراب میشوند و قطعات داخلی سالم میمانند.
باال آمدن سیستم را اصطالحاً Bootشدن کام یوتر میگویند و نرمافزاری که سیستمعامل را وارد
حافظه مینماید اصتتتطالحاً Boot Loaderیا Boot Strapمیخوانند .به محض روشتتتن نمودن
کام یوتر فعالی وایی که انجام می شود تح عنوان ( post )power on self-testانجام می شود .به
این معنی که نرمافزار BIOSتس ساده انجام میدود و اگر failنکرد و مشکلی نبود (تس شامل
پردازنده ،حافظه و سایر قطعات میباشد) ،پس از پایان این تس سخ افزاری ،اطالعات موجود در
CMOSخوانده میشتتود که میبیند از چه چیزی یا از چه تکنولوژی این ستتیستتتم را باال بیاورد
(فالپی ،سیدی ،وارددیسک و .)...
ما فرض میکنیم که تکنولوژی ما دی سک ا س و سی ستم از طریق دی سک سخ باال خواود آمد.
سکتور صفر دی سک سخ خوانده می شود و بی شتر از این وم اطالعاتی ندارد و نمیتواند سکتور
1000را مثالً بخواند .وقتی این ستکتور خوانده شتد در وستط حافظه قرار میگیرد و در اوّل و آخر
حافظه قرار نمیدود .عل این استت که در باالی حافظه interruptستتکتور استت یعنی مثالً اگر
1۰۰۰بای را ۴بای ۴بای تقسیم کنیم ۲۵۷بای اینتراپ را handleمیکند .پس اوّل حافظه
خرج شده ا س .برای فایلوا و ساختاروای فایلی مختلف ISO 8859-1 ،مطرح و ت صویب شده
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۳۲
تمرین عملی :در مورد سه روش گفتهشده در باال در اینترن جستجو کنید و اطالعاتی را که کسب
کردهاید برای خود یادداش کنید تا بعداً بتوانید از آن استفادهی عملی بکنید.
پس تا اینجا یادگرفتیم که BIOSکاروای الزم را انجام میدود kernel ،در حافظه قرار میگیرد ،و
س س initاجرا می شود که اولین پروسسی 1اس که اجرا می شود .حاال initاز مدیر سرویسوای
مختلفی میتواند استفاده کند که یکی system Vو دیگری upstartاس .
تمرین عملی :در مورد ستتتتاختتتار Processدر ستتتیستتتتمعتتامتتل لینوکس مطتتالعتته کنیتتد.
راونمایی :عبارت linux process structureرا در اینترن جستجو کنید.
فایل /var/log/messages
منبع دیگر برای اطالعات logدر ستتتیستتتتم این فایل استتت که معموالً توستتتط deamonوای
واقعهنگاری ومچون syslogdیا syslogd-ngدر آن توضیحات الزم اضافه می شود .البته بسیاری از
برنامهوای دیگر که در سی ستم اجرا می شوند و امکانات loggingدر آنوا تعبیه شده ا س ،نیز
توانایی نوشتن logدر این فایل را دارند.
در برخی از توزیعوای لینوکس برخی از اطالعات مربوط به bootشدن سی ستم را میتوان در این
فا یل یا ف .الب ته عالوه بر این فا یل در برخی از توزیع وا فا یل /var/log/bootحاوی اطال عات
بسیاری در مورد روند باال آمدن سیستم اس .
نکته :به خاطر دا شته با شید که د ستر سی به فایلوای ذکر شده در باال نیازمند سطح د ستر سی
rootاس .
بعد از انجام فعالی وای الزم توسط BIOSو ومچنین فاز دوم startupو آماده شدن فایلسیستم
،rootپروسه initاز مسیر /sbin/initبا شمارهی شناسه PID=1اجرا ) (execمیشود .برنامه init
بهعنوان اولین برنامه فضای کاربر برای به اجرا درآوردن پروسهوای دیگر از طریق forkبه فایل
/etc/inittabمراجعه میکند .فایل inittabتعیین میکند که runlevelجاری (که سیستم با آن باال
میآید) چیس و initرا به مسیری دیگری برای اجرای برنامهوای مورد نظر ور runlevelودای
میکند ..بهعنوانمثال در فایلی که در بر روی سیستم ما موجود اس ،سطری
بهصورت :wait:/etc/rc.d/rc 5وجود دارد که باعث به اجرا درآمدن برنامهوایی در مسیر
/etc/rc.d/rc5.dمیشود که با Sشروع میشوند .نحوه رفتار برنامهوا توسط کلید واژهوای ،once
1 process
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۳۴
respawn ،waitو غیره قابل تعریف اس که در ادامهی ومین فصل بهطور کامل توضیح داده شده
اس .
تذکر :اگر در ور یک از بخشوای زیر دستوری بود که بر روی سیستم شما اجرا نشد ،معموالً به
این خاطر اس که سیستم شما مبتنی بر توزیعوای جدیدتر اس که مبتنی بر systemdوستند،
ولی شما بهعنوان مدیر سیستم باید با توزیعوای مختلف و سازوکاروای آنوا آشنا باشید.
symbolic یک یا چند سادگی :برای فعال یا غیرفعالکردن یک سرویس ،کافی اس
linkدر یک یا چند مسیر ایجاد و یا حذف شوند .حتی دستور chkconfigاین مسئله را
سادهتر نیز کرده اس ( .برای اطالعات بیشتر man chkconfigرا ببینید .در صورتی که
chkconfigبر روی سیستمتان نصب نیس با استفاده از apt-get install chkconfigیا
yum install chkconfigآن را نصب کنید.
تضمین اجرای برنامهها به ترتیب تعیین شده :بهعنوانمثال S10networkقطع ًا قبل
System از S55sshdاجرا میشود ،چون عدد 1۰کوجکتر از ۵۵اس .اگر سیستم شما از
Vاستفاده میکند آنگاه کافی اس به مسیر /etc/rc2.dیا /etc/rc?.dکه در آن? یک
عدد دلخواه کمتر از ۵اس ،مراجعه کنید.
تالشوایی صتتورت گرف که ستتیستتتمی طراحی شتتود که بهینهتر باشتتد .ستتیستتتم upstartدر
ن سخهوای جدید لینوکس ا ستفاده می شود که مبتنی بر رویداد ( )event-basedا س .به موازات
upstartستتتیستتتتم دیگری ،systemd ،نیز توستتتط تیم دیگری در حال توستتتعه بود که به ومراه
توزیعوای جدیدتر لینوکس نیز انتشار پیدا کرده اس .
نکته runlevel4 :روی pcوای intelمعنای خاصی ندارد ،ولی روی mainframeوا و solaris
و ...وجود دارد .پس بهتر اس برنامهوا جه cross-platformبودن روی runlevel4نباشند،
تا در صورت استفاده از ومان تنظیمات در سیستموای دیگر مشکلی پیش نیاید.
runlevel یکی از راهوای خاموش کردن سی ستم نو شتن فرمان init 0ا س که در آن سی ستم به
صفر که ومان shut downاس میرود .برای restartوم میتوانید از فرمان زیر استفاده کنید:
>> runlevel
نکته :در ور محیطی و یا در ور runlevelی میتوانیم محیط گرافیکال داشته باشیم که
یک فرمان داریم به نام startxکه مثالً در runlevel1میزنیم startxکه محیط گرافیکال
وم داشته باشیم .بنابراین کار کردن در خط فرمان و نداشتن محیط گرافیکی به معنای کار
کردن در runlevelخاصی نیس .
وقتی فایل روبهرو را باز کنیم اوّلین خطی که #Commentنیس ت ،شتتماره runlevelمیباشتتد .در
اصل این runlevelپیش فرض سیستم اس .
less/etc/inittab $
اگر ما 015بگذاریم یعنی runlevelی که میخواویم برویم 5اس اگر 013بگذاریم یعنی
.runlevel3اگر در فایل باال runlevelپیش فرض سیستم را بر روی 6تنظیم کنیم ،سیستم مدام
restartمیشود .تنها فقط زمانی که بخواویم یک کام یوتر را testکنیم ،چنین کاری انجام میدویم.
اگر فرمان initرا به ومراه یکی از شمارهوای runlevelوا بزنیم آن runlevelاجرا می شود .بهطور
مثال:
debian در نسخهی لینوکس ما در فایل runlevel ،inittabپیشفرض 5میباشد ولی در سیستم
runlevelپیشفرض دو اس .حال به بررسی دقیق خط مربوط به runlevelدر فایل inittab
میپردازیم:
id: 5: initdefault:
مثال :میخواویم نرمافزار رادار به نام mingertyدر سیستم طوری تنظیم شود و قرار داده
شود که ومواره یک نسخهی آن در حافظه باشد و به محض killشدن و از بین رفتن دوباره
داخل حافظه بیاید.
initیک فایلی دارد که میداند در چه runlevelی اس .وقتی بررسی initانجام می شود این خط
را میخواند و میفهمد در چه runlevelای باید باشد و میفهمد چه نرمافزاری را و با چه runlevel
ی در حافظه بیاورد .استتتم نرمافزار ما مثالً Testاستتت و میخواویم ومواره در ور runlevelکه
بودیم یک نستخه از آن در حافظه باشتد .اگر خط مربوط به اجرای یک برنامه در فرم inittabدر
قسم runlevelچیزی نبود و خالی بود یعنی در تمام runlevelوا اجرا شود.
initحال تنظیمات برنامهی ما تمام شد و آن را در فایل initقرار میدویم .یادتان باشد که برای
الوی معنایی ندارد و اینکه در کجای حافظه باشد .کرنل با الوی وا کار دارد و تشخیص میدود.
-در لینوکس اگر Ctrl+Alt+delبزنید initبیدار میشود و ۳ثانیه وق دارد و در تمام runlevelوا
اجرا میشود .بهطور پیش فرض این کلیدوا سیتسم را restartمیکنند.
$ less/etc/inittab
در فایل initمثالً مشخص شده اس که وقتی برق رف چند دقیقه بعد بهعنوانمثال خبری را برای
ومه کاربران از طرف Adminبه وسیله فرمان ( wallمخفّف )write allبنویسد و به ومه خبر دود.
به وسیله این فرمان برای ومه یک خبری میفرستید.
$ wall
news
Ctrl+d
x:5:respawn: /etc/X11/prefdm-nodaemon
میتوانیم به جای 5عدد 1را بگذاریم تا در runlevel1وم محیط گرافیکال داشته باشیم پس این
خیلی خیلی نکته مهمی اس که حتماً نباید در runlevel5باشیم تا محیط گرافیکال داشته باشیم.
فرمان دیگری به نام switch deskوجود دارد که امکان تعیین محیط گرافیکالی ( kde ،Gnomeو
)...که میخواویم در آن کار کنیم را مشخص میکند.
15:5:wait:/etc/rc.d/rc5
برای تغییر runlevelمیتوانیم یکی از روشهای زیر را به کار ببریم :اگر Manualاین دو را بخوانیم
ور دو یکی وستند.
به عالوه برای downیا Rebootنمودن سیستم میتوان یکی از دستورالعملوای زیر را اجرا نمود.
restartکردن shutdownکردن
init 6 init 0
reboot shutdown –h now
shutdown –r now power off
ctrl+alt+del halt
وقتی سیستمعامل میآید بررسی میکنند که آیا haltکار میکند .دستور haltمیتواند cpuرا نگه
دارد و یا متوقف کند .اگر haltکار نکند وقتی لینوکس داخل شود دیگر نمیتواند خارج شود .اگر
haltکار نکند پس چطور چک میکند که haltکار میکند؟ در LPI2خواویم گف .
نکته :فرمان kill -1 1نیز باعث میگردد که inittabتوسط initمجدداً خوانده شود.
ومچنان که گفتیم این یک برنامه /sbin/initبا طراحی متفاوت اس که بر مبنای رخداد کار میکند
و با system Vکه از inittabاستفاده میکند ،سازگاری دارد ..بهعنوانمثال:
$ exec /etc/rc.d/rc $RUNLEVEL
.ویژگی مثب دیگر upstartاین اس که نیازی معنا دارد و به ومان مدل system vارزشمند اس
به ارسال SIGHUPبه initبرای اعمال تغیرات فایلوای پیکربندی ندارد .در LPIC2در مورد signal
وا بیشتر خواویم آموخ .
میتوان گف که تمام نسخهوای مدرن و جدید لینوکس از upstartاستفاده میکنند .یادتان باشد
که بهعنوان یک مدیر سیستم ،باید توانایی کار با سیستموای موجود ( )legacy systemsرا داشته
باشتتید و ومچنین آمادگی الزم برای کار با ستیستتتموای جدید را نیز کستتب کنید .بنابراین وجود
upstartبه این معنا نیستت که کار با system vو runlevelوا برچیده شتتده استت .وماکنون در
ب سیاری از مراکز ب سیار مهم و جدی در سرتا سر دنیا از ن سخهوای لینوک سی ا ستفاده می شود که
مبتنی بر system vو inittabوستند و ومینطور در سیستموای جدیدتر شما upstartرا خواوید
دید.
انواع :job
( Task Jobیا بطور خالصه :)taskکاری (یا شغلی) که طول عمر و حال ◦
پایانی مشخصی داشته باشد .مثال delete :کردن یک فایل ،پشتیبان گیری ،و
...
( Service Jobیا :)daemonکاروایی که به مدت طوالنی باید در حال اجرا ◦
باشند .مانند سرویس نامهرسان ( ،vsftpd ،)sendmailو ...
توضیح وضعیت
حال اولیه Waiting
قرار اس startشود Starting
در حال اجرای قسم pre-start Pre-start
میخواود قسم scriptیا execرا اجرا کند Spawned
در حال اجرای قسم post-start Post-start
سرویس باال اس Running
در حال اجرای قسم pre-stop Pre-stop
در حال پایین آمدن Stopping
کشته شده اس job :Killed
در حال اجرای قسم post-stop Post-stop
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۴۲
توضیح مرحله
jobدر حال استراح stop/waiting
jobقصد دارد اجرا شود start/waiting
رخداد startupاین jobمنتشر میشود start/starting
بند pre-startفایل پیکربندی (در صورت وجود) اجرا start/pre-start
میشود
به جاب شماره PIDاختصاص مییابد start/spawned
بند post-startفایل پیکربندی (در صورت وجود) اجرا start/port-start
میشود
رخداد startedمنتشر میشود start/running
:stop/stopping
رخداد stoppingمنتشر میشود( .یعنی میتواند باعث آغاز و پایان jobوای ◦
مرتبط شود).
سیگنال مشخص شده در بند ” “kill signalبرای پایان دادن به پروسهوا ◦
استفاده میشود.
:stop/killed
:stop/post-stop
initctl
ومچنان که از نام آن مشخص اس initctl ،ابزار کنترلی Upstartاس .
initctlابزاری اس که مدیر سیستم توسط آن با initصحب میکند.
event
رویداد یا ومان ،eventعالم یا سیگنالی اس که توسط upstartبه jobوا یا eventوای دیگر
فرستاده میشود .با منتشر شدن ( )emitیک رخداد ،تمامی jobوای سیستمِ upstartتح تأثیر
قرار میگیرند .نکتهی مهمی که در مورد سیستم upstartوجود دارد این اس که نمیتوان کاری
کرد که یک ،Jobرخدادی را نبیند .پس در صورت وقوع یک رخداد ومهی jobوا آن را درک
خواوند کرد.
مثال :موقع روشن شدن سیستم upstart،یک رخداد به نام startupمنتشر میکند .از طرفی،
jobی به نام rcSبا پیکربندی زیر وجود دارد که نسب به این رخداد حساس اس :
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۴۴
start on startup
...
exec /etc/rc.d/rc.sysinit
...
انواع event
:signal event .1یک رخداد غیر ومزمان ( )asynchronousاس و منتشر کننده این رخداد،
برای دیدن نتیجه صبر نکرده و به کار خود ادامه میدود:
پرسش :در صورت منتشر شدن job ،event-Aوا به چه ترتیبی اجرا میشوند؟
پاسخ :معلوم نیس و نباید ترتیب آنوا مبنای چیزی قرار گیرد.
تمرین job :ی بهنام ajibبا پیکربندی زیر بسازید (:)/etc/init/ajib.conf
start on event-A
stop on event-A
script
sleep 30
end script
حاال در قدم بعدی ،با فرمان زیر ،رخداد event-Aرا منتشر کنید:
$ initctl log-priority debug
$ initctl emit event-A
پرسش :در صورت منتشر شدن رخداد ،event100کدام jobابتدا اجرا خواود شد؟
پاسخ :اول stopوا پردازش میشوند.
systemdچیست؟
ور دو مدیر سرویس در لینوکس ( system Vو )Upstartمبتنی بر initوستند و در حقیق تفاوت
پایهای با وم ندارند؛ initکه ومان پروسس شمارهی یک در سیستم اس .در سال ۲۰1۰سیستم
دیگری نیز در طراحی شد که جایگزین initاس .به عبارت دیگر در سیستموایی که از systemd
استفاده میکنند systemd ،اولین پروسسی اس که اجرا میشود و یک daemonبرای مدیری
سیستم اس .
در این سیستموایعامل systemdاولین daemonی اس که اجرا میشود و آخرین
daemonی اس که خاتمه مییابد .ودف از طراحی systemdایجاد یک مدیر سیستم بهینهتر از
initبوده اس .به خاطر تواناییوای این سیستم و بهینه بودن آن ،در سالوای ۲۰1۲و ۲۰1۳
توزیعوای عمده و اصلی لینوکس به سم استفاده از systemdرفتهاند .امکانات این سیستم در زیر
آمده اس :
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۴۶
توزیعوای ... ،openSUSE 12.1 ،Mandriva 11+ ،Fedora 15+و احتماالً RHEL7امکان
پشتیبانی از این سیستم را دارند.
که یک مدیر سیستم در حال حاضر توانایی کار با System Vو Upstartرا نکته :الزم اس
داشته باشد و در آیندهای نزدیک نیز تسلط به systemdضروری خواود بود.
بررسی دایرکتوری/
این دایرکتوری rootیا ریشه مبنای سیستم فایل لینوکس اس .از نظر منطقی کلیه دایرکتوریوا
و فایلوای لینوکس صرف نظر از محل فیزیکیشان در این دایرکتوری قرار دارند .یعنی ممکن اس
/homeشما بر روی یک وارددیسک باشد و /tmpنیز بر روی یک وارددیسک دیگر ،که این دیدگاه
فیزیکی اس ،ولی در دیدگاه منطقی ،آن چنان که در ساختار فایل سیستم و خروجی دستور ls /
نمایش داده میشود ،ومگی زیر دایرکتوری /وستند .پس وقتی cd /را میزنیم به ریشه اصلی
لینوکس میرویم جایی که ریشهی ومهی دایرکتوریوای دیگر زیر آن قرار دارند یعنی از باال به
لینوکس و دایرکتوریوا و فایلوای داخل آن نگاه میکنیم.
cd /$
ls -l$
drwxr-xr-x2root 4096 Aug 4 16:15 binمشخصات دایرکتوری ....
d چپترین مکان کاراکتر یادآوری :برای یک objectدر خروجی دستور ls –lاگر در سم
بود یعنی دایرکتوری اس .و اگر – منها بود یعنی این یک فایل اس .
این دایرکتوری شامل تعداد زیادی از utilityوای لینوکس اس .این utilityوا ،دستورات در
دسترس سیستمعامل لینوکس وستند .یعنی بسیاری از فرمانوایی که در لینوکس به کار میگیریم
زیر این دایرکتوری قرار دارند .این دستورات به فرم binaryوستند و به ومین دلیل نام این
دایرکتوری را binگذاشتهاند .بسیاری از فرمانهای لینوکس مانند cat,cp,ls,more,tarو ...در
این دایرکتوری قرار دارند .حاال میخواویم زیر دایرکتوری binبرویم و فایلوای زیر آن را بررسی
کنیم:
$ cd /bin
$ ls –l | less
فایلوای این دایرکتوری بهطور مفصل در این کتاب مطرحشده و بررسی میشوند.
و یا نه؟ اگر فقط typeرا بزنید کافی نیس نکته :اگر از شما پرسیدند یک فرمان builtinوس
یک -aکه مخفّف allبه معنی ومه میباشد وم باید بگذاریم که ومه را نمایش دود.
$ type-a cd
cd is a shell builtin
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۵۰
/bin/cd
(یعنی بخشی از shellباشد) بلکه ممکن اس در یک سیستم builtinو در cdحتماً builtinنیس
سیستم دیگری فرمان خارجی باشد.
GRUB boot این دایرکتوری حاوی وسته لینوکس و دیگر فایل وایی اس که مورد نیاز برنامه
Managerاس .این وسته و فایلوای دیگر میتوانند در ور دایرکتوری نیز قرار گیرند به این دلیل
که فایلوای زیر این دایرکتوری فقط یک ک ی از فایلوای اصلی اس ولی بهطور مرسوم آنوا را
در این دایرکتوری قرار میدوند.
حاال به سراغ دایرکتوری bootمیرویم:
$ cd /boot
-l $ ls
دایرکتوری bootدایرکتوری اس که فایلوایی که سیستمعامل را باال میآورند زیر آن قرار دارند.
در لینوکس وستهی اصلی و ومهکاره ( vmlinuzکه در خروجی دستور باال آن را میبینید) میباشد.
که تمام مدیری وا را انجام میدود ،این فایل executableاس و زیر این دایرکتوری قرار دارد.
برای مشاوده ی اطالعات بیشتر در مورد این فایل ،دستور زیر را اجرا کنید (توجه داشته باشید که
بعد از نوشتن file vmlinuzکلید tabرا فشار دوید تا بهطور اتوماتیک نام فایل کامل شود ،زیرا
ممکن اس نسخهی vmlinuzسیستم شما ،که ومان توزیع kernelشما اس ،متفاوت باشد و فایل
با نام زیر یاف نشود):
$ file vmlinuz-2.6,18-194.e15
Is executable file ….
راه دیگر برای اجرای فرمان باال ،استفاده از روش زیر اس :
)$ file /boot/vmlinuz-$(uname –r
فرمان unameبه ما اطالعات kernelرا میدود و چه تاریخی و چه ساعتی و اسم کام یوتر را به ما
میدود.
$ uname-a
فایل دیگری که داریم system.mapمیباشد که به شما میگوید kernelاز چه اجزایی تشکیلشده
اس .
نکته :پس یادمان باشد که زیر دایرکتوری bootنرمافزاروای مربوط به سیستمعامل قرار دارند.
اگر سیستمعامل باال نیامد ،یادمان باشد این فایلوا را باید بررسی کنیم.
بررسی فایلوای زیر دایرکتوری bootو نحوهی باال آمدن سیستم را بهطور کامل در lpic2بررسی
میکنیم.
۵1 فصل ۲ساختار لینوکس
محل قراردادی دایرکتوری خانگی کلیه کاربران .مانند دایرکتوری خانگی /home/hamid/برای
کاربری به نام hamid
$ cd /home
بهمحض اینکه شما userIdتعریف میکنید زیر دایرکتوری homeبرای آن user Idیک دایرکتوری
درس میشود.
$ ls -l
در زمان کار ور وق به ور دایرکتوری دیگری جز خانهی خودمان رفتیم برای اینکه به خانهی
خودمان برگردیم این فرمان را میزنیم.
$ cd
وقتی فرمان زیر را میزنیم به ما میگوید که کجا وستیم و مسیر جاری که ما در آن وستیم را به
ما میدود.
$ pwd
در فصل قبل در مورد نحوهی باال آمدن سیستم و ومچنین runlevelوا صحب کردیم .در اینجا
در مورد MBRکه اومی زیادی دارد صحب میکنیم .در ونگام باال آمدن سیستمMBR ،
کوچکترین برنامهای اس که در حافظه قرار میگیرد و تس مقدماتی را انجام میدود که اگر
ومهچیز درس باشد سکتور صفر را از active partitionمیخواند و این برنامه stage1را خوانده
س س stage2را وارد سیستم نموده و پس از آن سیستم باال میآید و بعدازآن وم بحث runlevel
وا مطرح اس که قبالً در موردش صحب کردیم .حال این فرمان را میزنیم و cdمیکنیم:
$ cd/boot/grub/
$ ls -l
نکته :در سیستم ما از grubنسخهی یک استفاده اس .در سیستم شما ممکن اس خروجی
متفاوت باشد.
ونگام روشن کردن کام یوتری که بر روی آن لینوکس و در ِ MBRآن grub legacyنصب شده با
صتتفحهی ستتیاوی روبهرو میشتتوید که چند گزینه برای انتخاب کردن دارد و اگر بر روی ومین
سی ستم ویندوز نیز ن صب شده با شد ،ویندوز نیز یکی از گزینهوا خواود بود که با انتخاب گزینهی
موردنظر و زدن کلید enterکام یوتر با آن سیستمعامل باال خواود آمد .اینکه timeoutاین صفحه
چه مقدار با شد و چند ثانیه در این صفحه منتظر بماند یا تنظیماتی ومچون ت صویر پ ش زمینه،
گزینهی پیشفرض انتخابشتتده ،و ...چه باشتتد در فایل /boot/grub/menu.lstقابل تنظیم است .
کافی اس که در این فایل تنظیمات خود را ذخیره کنید و خارج شوید.
توجه داشتتته باشتتید که درصتتورتیکه نستتخهی grubشتتما ۲باشتتد ،که در اکثر توزیعوای جدید
لینوکس ومین نسخه ا س ،فایل تنظیمات grubدر مسیر /etc/default/grubقرار دارد .در grub
2الزم اس که بعد از اعمال تغییرات دستور update-grubرا بزنید تا تغییرات اعمال شود.
درصورتیکه بر روی سیستم شما gurbنصب نشده باشد ،به کمک دستور grub-installمیتوانید
این کار را انجام دوید .توصیه میکنیم که قبل از انجام این کار حتماً ساختار پارتیشنوای خود را
بهخوبی بشناسید و ومچنین صفحهی manدستور grub-installرا بهخوبی مطالعه کنید.
در لینوکس کر نل kernelکار ز یادی ان جام نمید ود و وقتی باال میآ ید وظی فهی مدیر ی روی
منابع را دارد و یک معاون اجرایی به نام initدارد که ومهکاره اس و شماره پروسس آنیک اس .
initفعالی وای الزم برای اجرای برنامهوا و سرپا بودن سی ستم را انجام میدود و زمانی که بیکار
شد ،میخوابد و برای اجرای بقیه نرمافزاروا به فایل /etc/inittabمراجعه میکند .پس یادمان باشد
که شتتتماره processفایل initعدد یک 1استتت و اولین برنامهای که بعد از کرنل وارد حافظه
میشتتود ومین initمیباشتتد .اگر کرنل initرا پیدا نکند عمالً ستتیستتتم کار نمیکند و از شتتما
میخواود که یکی دیگر را معرفی کنید .یک فرمان بستتتیار مهم داریم که چارت ستتتازمانی میان
پروسسوا را نشان میدود و اینکه در ابتدا چه چیزی واردشده و زیر بخشوای ورکدام چیس :
$ pstree
سیستم را بهطور کامل نشان میدود (اگر با کاربر rootآن
بهعالوه فرمان زیر وضعی پروسسوای
را اجرا کنید) و شبیه process managerویندوز (یا )Ctrl+Alt+delاس .پس خروجی این دستور
ومان نرمافزاروای در حال اجرا داخل سیستم وستند
initوقتی باال میآید برای اینکه بفهمد چه برنامهوایی را باال بیاورد و چهکاروایی را انجام دود فایل
inittabرا میخواند و اجرا میکند.
این فایل خیلی خیلی مهم اس -در این فایل خطوایی که با #شروع میشوند توضیحات وستند.
پس inittabرا initمیخواند.
سی ستم وقتی crashمیکند fsck ،باید خوانده شود .از کجا این مو ضوع را متوجه می شود؟ وقتی
لینوکس باال میآ ید اولین فایلی که initمیخواند rc.sysinitاستتت .وقتی این فایل را میخواند
چک میکند که آیا فایلی به نام autofsckداریم یا نه؟
*$ less/.Autofsck
پس این فایل را باز میکند و میبیند که چه ساعتی upشده اس و وقتی shutdownکنیم این
فایل پاک میشود یعنی اگر درس shutdownکنیم پاک میشود و دوباره که upکنیم systemآن
را دوباره میسازد .ولی اگر درس shutdownنکنیم پاک نمیشود و در سیستم میماند .پس fsck
را صدا میزند و با ورود آن کار سنگینی انجام میدود .کارش این خواود بود که نوع فایل سیستم
را تشخیص میدود و نرمافزار مربوط را اجرا میکند .البته ومهی فایل سیستموا را چک نمیکند.
نکته fsck :ومهی فایل سیستموا را چک نمیکند ،بلکه ابتدا super blockرا میخواند ،س س
جمع objectوا را به دس می آورد و اینکه چقدر باید خالی باشد و پسازآن به سراغ
دایرکتوریوا میرود و فایلوای زیر آنوا را میخواند .پس وقتی سیستم crashمیکند در باال
آمدن بعدی fsckمیآید داخل حافظه تا مشکل را حل کند.
ما میتوانیم به fsckبگوییم درستت کار نکند در بعضتتی مواقع ممکن استت مشتتکالتی برای ما به
وجود آورد .در ب سیاری از زمانوا fsckخودش در س کار نمیکند و میتواند م شکل ایجاد کند.
مثالً میگوید فایل یک کاربر دیگر مال useridا ستاد ا س و میگوید من به یک تناقض ر سیدم و
promptمیدود .در چنین شتترایطی مستتئول ستتیستتتم خودش باید موضتتوع را دنبال کند .به ور
دلیلی یک وکر یا نرمافزار بد pointerوای فایل وا یا دایرکتوری وا را جابجا کرده و promptی که
میآید file system checkا س و خیلی خیلی خطرناک ا س و adminخودش باید د ستی این
مشکل را حل کند.
ولی اگر به تناقض نر سد و تعدادی فایل پیدا کند که بی صاحب ا س fsckمیبرد زیر دایرکتوری
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۵۴
فرض کنید ما یک شبکه بزرگ داریم و وزار نفر کاربر در حال انجام دادن فعالی وایشان وستند.
ناگهان برق میرود و وقتی برق میآید لینوکس باال میآید و fsckرا صدا میکند و نگاه میکند که
مثالً تعدادی فایل بیصاحب پیدا کرده اس و در lost+foundقرار میدود .حال میخواویم ور
فایل را در جای خودش بگذاریم.
باید ابتدا با فرمان stringمحتویات این فایلوا را بخوانیم و ببینیم به چه کستتی و کجا ربط دارد.
فرمان stringمحتویات یک فایل را میخواند و چیزوای قابل استتتتفاده آن را بیرون میکشتتتد و
نمایش میدود .حاال یک فایل را عمدی زیر lost+foundمیبریم و س س با طی مراحلی آن را سر
جای اولش برمیگردانیم .بهعنوانمثال فایل dateرا به زیر lost+foundانتقال میدویم.
)1ابتدا شماره inodeآن را پیدا میکنیم چون فایلی که زیر lost+foundدرس میکند ،بهصورت
عددی اس :
#2042244
توجه کنید که –iدر آرگومانوای lsموجب نشتتتان داده شتتتدن inodeفایل بر روی پارتیشتتتن
موردنظر در دیسک میشود.
adminحاال باید تشخیص دود ،جنس این فایل چیس ؟ چون باید سر جایش بگذاریم اولین کاری
که توصیهشده استفاده از فرمان fileاس .پس با فرمان fileجنس آن را پیدا کنیم:
فرمان string
یک راهحل وم این اس که وقتی سیستم و سرویسوا و packageوا و ...را نصب میکنیم و خوب
که تس کردیم و تحویل دادیم یکچیز دیگر وم به صاحب سیستم تحویل میدویم .کاری که
میکنیم این اس که این فرمان را میزنیم:
س س از آن پرین وم میگیریم .این فرمان کاری که میکند این اس که ومهی فایلوا را با
inodeوای آنوا sortشده نگه میدارد و زمانی که یکی از این فایلوا زیر lost+foundقرار گرف
خیلی راح بهوسیله شمارهشان میتوانیم سر جایش برگردانیم .توجه داشته باشید برای اینکه
زیردایرکتوریوا وم بهطور بازگشتی بازبینی شوند الزم اس که در آرگومانوای دستور lsدر باال
Rرا نیز اضافه کنیم .این روش درجاوایی جواب میدود که فایلوایشان staticاس و معمو ًال
کموزیاد نمیشود .ولی اگر فایلوا مرتباً کموزیاد شود و تغییر کند و پویا باشد ،این روش مناسب
نیس .مثالً در یک دانشگاه این روش کارایی چندانی ندارد ،فقط میتوان فایلوای اساسی را سر
جای خودشان برگرداند.
فرمان lsofکاربردوای بسیار زیادی دارد ،که مختصری از آنوا در جدول زیر آمده اس :
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۵۶
دستور توضیح
lsofنام فایل پروسسهایی که فایل مورد نظر را باز کردهاند
پروسسهایی که دایرکتوری یا mount point
losf +Dآدرس دایرکتوری موردنظر
موردنظر را استفاده میکنند (مفید برای امنیت و
)umount
lsof –uنام کاربر اطالعات و PIDمربوط به فایلهای باز توسط
کاربر موردنظر
این دایرکتوری حاوی فایلوای کتابخانه برای کلیه برنامهوای ذخیره شده در دایرکتوری
وای /sbin/و /bin/و از جمله ماژولوای قابل بارگذاری درایو که مورد نیاز راه اندازی لینوکس اس ،
میباشد.
$ cd /lib
$ ls –l
تعداد زیادی فایل میبینیم که در اکثر آنوا soداریم که soمخفّف shared objectاس که به
اشتراک گذاشته میشود و در اختیار ومه برنامهوا قرار میگیرد .که مترادف آن در ویندوز dllاس .
سؤالی که ممکن اس مطرح شود این اس که از کجا بفهمیم که مثالً فرمان dateچه library
وایی را استفاده میکند؟ این فرمان را میزنیم:
۵۷ فصل ۲ساختار لینوکس
جایگزینی برای پارتیشنبندی logical volume managementیا ومان LVMاس .جه داشتن
LVMیک یا چند پارتی شن م شخص را میکنیم و برای MBRآنوا کد 0x8eرا در نظر میگیریم
(یا مقدار معادل در سی ستموای جدید مبتنی بر .)GPTآنگاه تو سط مجموعهای از ابزاروا ومانند
،lvcreate ،vgcreate ،pvcreateو lvscanمیتوانیم آن وا را مدیر ی کنیم .در صتتتورتی که در
سی ستم شما LVMوجود دا شته با شد ،در م سیر /dev/mapperمیتوانید در مورد آنوا مطلع
1 binary
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۵۸
دایرکتوری /var
این دایرکتوری شتتامل فایلوای موق از انواع گوناگون استت ؛ فایلوای logستتیستتتم ،فایلوای
spoolپرین ،فایلوای mailو موارد مشتتتابه در این دایرکتوری قرار میگیرند .پس محتوای این
دایرکتوری ومواره تغییر میکند.
ومچنان که در این کتاب بیان شتتده استت kernel ring buffer ،در این دایرکتوری و در مستتیر
/var/log/dmesgقرار دارد.
از دیگر فایلوای مهم در این دایرکتوری /var/log/messagesاستتت که اطالعات logنرمافزاروای
گو ناگون را در خود دارد .ومچنین فا یل /var/log/syslogالگ وای ستتتیستتتتمی را در بر دارد.
ومچنین برخی از توزیع وای لینوکس اطالعات مربوط به زمان bootرا نیز در یک فایل جداگانه
در م سیر /var/log/bootنگه میدارند که تو سط bootlogdانجام می شود .ومچنان که ا شاره شد،
صتتف پرنی در مستتیر /var/log/cpusقرار میگیرد که درواقع فایلوایی وستتتند که برای پرین
کردن ارسالشدهاند که در سیستموایی که از cpusاستفاده میکنند ،وجود دارد.
فایل ب سیار مهم دیگری که در زیر این دایرکتوری قرار دارد wtmpا س که تمام loginو logout
وای سیستم را در خود نگه میدارد .این فایل در مسیر /var/log/wtmpقرار دارد .برخی دستورات
مثل lastو lastbاز اطالعاتی که در این فایل ثب شده اس ،برای گزارش دوی استفاده میکنند.
فصل 3مدیریت بستههای نرمافزاری
در این فصل با سیستم مدیری بستهوا در لینوکس آشنا خواوید شد .در ابتدا در مورد rpmکه در
Oracle Enterprise Linux ،RHEL ،CentOSو CERN Linuxاستفادهشده ،سخن به میان آمده
و س س به yumجه نصب بستهوا اشارهشده اس .در ادامه در مورد نکات امنیتی مرتبط با نصب
بستهوا نیز اشارهشده اس .
در ادامه در مورد apt-getو dpkgکه در توزیعوای Mint ،Ubuntu ،Debianو ومچنین
Xaminاستفادهشده اس ،بحث شده اس .
برای شروع فرض کنید یک نرمافزار به نام sinدارید و میخواویم به یک فرد دیگر وم این نرمافزار
را بدویم .در فصل قبل با توجه به معرفی shared objectوا فهمیدیم که ک ی نمیگیریم .آیا با
نرمافزار tarبک آپ بگیریم و آن را به فرد بدویم روی سیستم آن فرد مشکلی به وجود نمیآید؟
ممکن اس آن فرد وم یک نرمافزار sinداشته باشند و با وم conflictکند و ممکن اس با
سخ افزار سیستم سازگار نباشد .به عبارتی پس اگر خواستید حتّی یک فایل را وم backupبگیرید
و انتقال دوید بهتر اس از جنس packageباشد .در دنیا چندین package managerوجود دارد از
جمله آنوا rpmدر CentOSو dpkgدر debianوستند.
package تمرین :با جستجوی عبارت linux package managerدر Wikipediaدر مورد
managerوای مختلف مطالعه کنید.
)1یک راه قرار دادن بسته نرمافزاری بر روی سیستم و ترجمه برنامهوا و س س اجرای
ال محسوس اس .اسکری وای متعدد برای نصب که معموالً نیاز به تخصص باال کام ً
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۶۰
)۲راه دیگر انتخاب یک نرمافزار اس که بتواند بر روی بسته نرمافزاری مدیری نموده و به
تخصص کمتری برای نصب و ارتقا نیاز داشته باشد .در این بخش بر روی این روش تمرکز
خواویم کرد.
در بعضی از packageوا در قسم architectureداریم noarchکه یعنی به architectخا صّی نیاز
ندارد .برای نصب این packageاز طریق rpmبه این صورت عمل میکنیم:
پس ما اآلن متوجه شدیم که مثالً وقتی که میخواویم از اینترن packageدانلود کنیم و نصب
کنیم ۲تا راه حل داریم .یک راه این اس که rpmآن را بیاوریم و با یک فرمان ساده آن را نصب
کنیم .ولی این زیاد مد روز دنیا نیس چون نرمافزاروایی که در دنیا مینویسند با tarو zipشده
بیرون میدوند.
البته راه دیگر استتتفاده از دستتتور yumاستت که بهطور مستتتقیم به repositoryوای موجود در
اینترن متصل میشود و بستهوا را دانلود و نصب میکند .مثال:
با اجرای فرمان باال ،بستهی cmakeو بستهوای پیشنیاز آن از مخزنوای اینترنتی یا محلی که
۶1 فصل ۳مدیری بستهوای نرمافزاری
برای yumدر مسیر /etc/yum.repos.dتنظیم شده اس ،دانلود شده و بر روی سیستم نصب خواود
شود.
نکته :یادتان باشد که ممکن اس به خاطر مالحظات امنیتی کام یوتروایی که شما مسئول آن
وستید به اینترن متصل نباشد .بااینحال میتوانید مخزنوایی را برای بستهوای مختلف در
کام یوتروای محلی خاصی که به اینترن متصل وستند دانلود کنید و س س کام یوتروای
دیگری که به اینترن متصل نیستند ،از آنوا برای نصب بستهوا با استفاده از دستور yum
استفاده کنند .برای این کار الزم اس که آدرس مخزن محلی را برای آن سیستم در مسیر
/etc/yum.repos.dتنظیم کنید.
ابزار yumdownloader
تمرین عملی :درصورتیکه سیستم شما مبتنی بر RHELاس ،دستور man yumdownloaderرا
اجرا کنید و صفحهی راونمای آن را مطالعه نمایید.
این فایلی پیکربندی yumاس .دو بخش در این فایل وجود دارد main :و .repositoryقسم
Mainتمامی پیکربندیوای سراسری را مشخص میکند .قسم Mainتنها باید در یک جا
تعریفشده باشد .قسم Repositoryپیکربندی مربوط به ور سرور/مخزن را تعریف میکند .امکان
داشتن یک یا چند قسم repositoryوجود دارد.
در قسم mainامکان مشخص کردن دایرکتوری logfile ،cacheو موارد دیگر وجود دارد.
توصیه میکنم که حتماً صفحهی راونمای man yum.confرا مطالعه نمایید.
پس ما متوجه شدیم که اگر یک فایل 1kداشته باشیم کلّی اطالعات ابتدا و انتهای آن میآید .حاال
این فرمان را با وم میزنیم:
>> cd /var/lib/rpm
>> ls –l | less
ال game
بهعنوانمثال ناگهان یک فایل از بین میرود و با یک فرمان ساده میپرسیم که این فایل مث ً
و متعلق به کدام packageمیباشد rpm .در زمان نصب و ارتقاء و حذف بسته نرمافزاری فعالی
کنترلوای زیادی انجام میدود بهطور مثال:
فرمانی که برای نصب بسته نرمافزاری به کار میبریم به این صورت اس :
:iمخفّف install
--forceرا زمانی به کار میبریم که نتوانیم یک packageرا نصب کنیم و بخواویم حتماً نصب شود.
ولی ومیشه نباید --forceرا به کار ببریم --force .یعنی مجبور وستی که بعضی از خطاوا را نادیده
بگیری که ممکن اس مشکل ساز شود.
>> cd /all-rpms/
فرمان lessتا امروز فایل را برای ما صفحه به صفحه میخواند ولی lessمیتواند packageوا را وم
بخواند و اطالعاتش را برای ما نمایش دود.
وقتی فرمان باال را بزنیم اطالعات کامل این packageرا میبینیم و ومچنین اسم فایلوایی که بعد
از نصب این packageروی ور دایرکتوری میسازد را نمایش میدود .با این اطالعات میتوانیم
بفهمیم که بعد از نصب یک packageکجا میرود.
:eمخفّف erase
>> rpm -e talk
با این فرمان پاک کردن میبینیم که بستهی نرمافزاری موردنظر پاک میشود ولی جزوه آنکه posix
اس ،پاک نشد حاال دوباره نصب میکنیم:
>>man talk
*>> rpm-ivh talk
نکته :به شرطی یک packageرا installیا upgradeکنید که دلیل موجهی برای کارتان داشته
باشید.
۶۵ فصل ۳مدیری بستهوای نرمافزاری
دالیل upgradeکردن :شما به شرطی updateکنید که نیاز داشته باشید .دالیلی مثل:
upgrade :uکه این optionبا uبزرگ نوشته میشود upgrade .وم مثل installاس .اگر در زمان
upgradeآپشن –nodepsرا بزنید یعنی اینکه ویچ وابستگی را چک نکند .به وسیله ومین فرمان
rpmمیتوان اطالعات مختلفی راجع به بستهوای نرمافزاری نصب شده بدس آورد .که از جمله
میتوان به آپشن –qکه مخفف queryبه معنای پرسوجو میباشد اشاره کرد option –f.در این
مثال اختیاری اس :
نکته :اگر یک فایلی را اشتباواً پاک کردیم بهوسیله فرمان rpmبا آپشن –qو fمیتوانیم
بفهمیم که متعلق به چه packageای اس چون در databaseاطالعات را نگه میدارد.
اگر فایل passwdرا اشتباو ًا پاک کرده باشیم با این فرمان آن را پیدا کرده و packageآن را دوباره
نصب میکنیم.
نکته جالب اینکه در صورتی که استفاده از rpmرا فراموش کرده باشید ،از دستور cpioبرای
نصب میتوانید استفاده کنید.
نمایش مشخصات بسته نرمافزاری :مشخصه و توضیحات مختصری از بسته نرمافزاری که
با فرمان rpmنصب میگردند ،نمایش داده میشود.
نکته :اگر بخواویم تعداد کل packageوایی را که داریم بدس آوریم این فرمان را میزنیم:
اسامی فایلوای نصب شده در ور packageرا با فرمان زیر میتوانیم مشاوده کنیم (آرگومان lبه
معنای listکردن اس ):
حاال اگر بخواویم ببینیم چند تا فایل دارد (آرگومان lدر مقابل wcبه جه شمارش تعداد خطوط
اس ):
packageدیگری به نام portmapوجود دارد .این بسته شامل تعدادی فایل میباشد .شما میتوانید
اطالعات راجع به ور packageرا زیر این دایرکتوری پیدا کنید و بخوانید و اطالعات زیادی راجع به
۶۷ فصل ۳مدیری بستهوای نرمافزاری
>> cd /usr/share/doc
و اطالعات زیادی مثالً برای debug پس یادتان باشد که دایرکتوری /usr/share/docخیلی مهم اس
کردن آن دارد.
>> cd /all-rpms/
به عبارتی وقتی یک پکیج را نصب میکنید ۲تا shell scriptمیتواند داشته باشد و اگر بخواویم
یک packageرا removeکنیم وم یک preremoveو یک postremoveداریم .پس یک package
حداکثر ۴تا اسکری دارد .و البته حداقل میتواند ویچ اسکری تی نداشته باشد.
option –vجه بررسی سالم بودن بستهی نرمافزاری اس .در صورتی که مشکلی نباشد فرمان
باال چیزی در خروجی نمایش نمیدود و در صورتی که مشکلی باشد آن را مشخص میکند.
نکته :ور چقدر تعداد vوا را در آرگومان فرمان باال بیشتر کنید ،توضیحاتی که در خروجی
نمایش میدود بیشتر خواود بود.
نکته :فرمان ls –lبه ما میگوید ،فایل talkمتعلق به چه سالی اس .
>> ls –l file-name
در فرمان rpmآپشن verifyگاوی اوقات برای debuggingاستفاده میشود و بهعنوانمثال یکی از
کاربردوای آن در ادامه آمده اس .با viفایل talkرا تغییر میدویم (مثالً چند کاراکتر در آخر آن
مینویسیم) و س س rpm –v file-nameرا میزنیم ،یعنی عمداً فایل talkرا تغییر میدویم و س س
بسته را با فرمان rpm –v file-nameکنترل میکنیم.
>> vi./talk
(این تکنیک در قلب سیستم verify یکی از راهوای بررسی صح فایلوا ،استفاده از md5sumاس
فرمان rpmنهفته اس ) md5sum .یک checksumمحاسبه میکند و اگر این مقدار با مقدار محاسبه
شدهی اصلی تفاوت داشته باشد error ،میگیریم .در خروجی دستور rpmوم در verifyکردن برای
خطا دو دلیل ممکن اس وجود داشته باشد؛ یکی اینکه این فایل اندازهاش عوض شده اس و یکی
دیگر اینکه md5آن عوض شده اس .بنابراین میبینیم که آرگومان -vچقدر مهم اس و اگر فایل
تغییری کند به ما اطالع میدود .مناسب اس که adminوا ور چند روز یک بار برای اینکه مطمئن
شوند فایلی دس کاری یا خراب نشده اس این فرمان را روی فایلوای packageوا اجرا کنند.
844412345676
>> vi passwd
۶۹ فصل ۳مدیری بستهوای نرمافزاری
8444567897887
که این وم مسئله بسیار مهمی برای میبینید که به ما میگوید permissionوا عوض شده اس
فایلوای مهم اس که باید توسط یک adminبررسی شود.
توجه داشته باشید با دستور lsattrمیتوانید attributeوای یک فایل را مشاوده کنید .مثال:
>> lsattr /etc/passwd
و دستور touchبخشی از attributeوای فایل را میتواند تغییر دود .اجرای این فرمان با یک
آرگومان ،نام فایل ،در صورتی که فایل موجود نباشد آن را میسازد و درصورتیکه وجود داشته باشد
تاریخ دسترسی فایل و برخی از attributeوای آن را تغییر میدود .توجه کنید که با مراجعه به
صفحهی man touchمیتوانید با دادن آرگومانوا مختلف رفتار آن را تغییر دوید .مثالً با دادن
آرگومانی میتوان گف که در صورتی که فایل وجود نداش آن را نسازد.
نکتهای که باید توجه داش این اس که تغییر در attributeوا به واسطهی اجرای دستوراتی مثل
touchاثری بر روی checksumوای محاسبهشده و verifyوای انجامشده توسط rpmندارد.
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۷۰
در توزیع Debianو دنبالهرو آن Ubuntuو چند توزیع دیگر تعدادی ابزار برای مدیری بستتتهوای
نرمافزاری داریم .تعدادی از این ابزاروا را بهطور مختصر بررسی میکنیم:
apt-get ابزاری برای مدیری بستهوای نرمافزار صورت command-lineاس ،که البته
واسطوای کاربری گرافیکی نیز برای آن طراحیشده اس ،و برای فعالی وای زیر کاربرد دارد:
.1نصب و مدیری بستهوای نرمافزاری
.۲بهروزرسانی بستهوای نرمافزاری
.۳اعمال کردن patchوای امنیتی
.۴به روز نگه داشتن سیستم
.۵دانلود کردن فایلوای sourceمربوط به بستهوا
جستجوی بستهها
قبل از اینکه بخواوید بسته ای را نصب کنید ممکن اس بخواوید در مورد آن اطالعات کسب کنید
یا حتی نام کامل و دقیق آن را بدانید .به این منظور دستور apt-cacheتعبیهشده اس .بهعنوانمثال
دستور:
$ apt-cache search mysql
تمام بستهوایی را که مرتبط با کلمهی mysqlوستند را برای شما لیس خواود کرد .اگر بخواوید
در مورد بستهی خاصی که در repositoryآنالین قرار دارد و ونوز نصب نشده اس ،بدون نصب
کردن اطالعات کسب کنید دستور apt-cache show PackageNameرا وارد کنید که در آن
PackageNameنام بستهی موردنظر شماس که به کمک دستور قبلی آن را یافتهاید.
dpkgنرمافزاری اس برای مدیری بستهوا که برای نصب یا مدیری packageوای مجزا استفاده
میشود .این فرمان بهطور مستقیم باید به بسته نرمافزاری دسترسی داشته باشد یعنی ابتدا دانلود
نمایید و س س توسط این فرمان آن را نصب کنید .این فرمان با بستهوای نرم افزاری ،debکه در
توزیعوای Mint ،Ubuntu ،Debianو Xaminوستند ،کار میکند.
}dpkg -P {package
مثال:
dpkg -P zip
دستور aptitude
عالوه بر دستورات باال ،در توزیعوای مبتنی بر ،debianواسط سطح باالی دیگری به واسطهی دستور
aptitudeفراوم شده اس .توصیه میکنیم که به صفحهی manاین دستور را مطالعه نمایید.
فصل 4دستورات لینوکس
در این فصل به موارد زیر خواویم پرداخ :
کار با خط فرمان
کار با فایلوای متنی
مدیری فایلوا
مدیری اجرای پروسسوا
مدیری اولوی پروسسوا
جستجو در فایلوا
استفاده از viو vim
در این فصل فرمان وای متعددی را در لینوکس بررسی خواویم کرد که برای ور یک مثالوای و
سؤالوای خوبی مطرح شده اس .بعدازآن نحوهی تعریف متغیر و تابع در خط فرمان را خواویم
گف و درنهای به بحث بسیار مهم سیگنالوا خواویم رسید .این فصل یکی از فصلوای مهم برای
تبدیلشدن به یک adminخبره اس .
برای شتتتروع کار فرمانی به نام abcdرا وارد میکنیم که خطا میدود و پیغام command not
foundرا bashبه شما میدود که فرمانی با این نام ندارد به عبارتی خود گار سن ما آنالیز میکند
و به ما جواب میدود که اصالً چنین چیزی در منو نداریم!
$ abcd
-bash: abcd: command not found
در لینوکس تعاریفی مثل فرمان داخلی و خارجی وجود دارد .حاال یک سؤال مطرح اس .
سؤال :فرمانهای داخلی و خارجی را تعریف کنید؟
در مایکروساف ویندوز فرمان داخلی به فرمانی گفته می شود که مثالً در رستوران وقتی از گارسن
نمک میخواوید از میز کناری به شما نمک را میدود .دقیقاً یعنی اینکه اگر گارسن خودش فرمان
را اجرا ک ند میگوییم فر مان داخلی استتت .مثالً در وی ندوز cmdو Windows PowerShellرا
۷۵ فصل ۴دستورات لینوکس
بهعنوان گارستتتن داریم .در ویندوز فرمانوایی مثل dirیا cdیا clsفرمانوای داخلی وستتتتند و
توسط گارسن انجام میشود.
فرمان خارجی فرمانوایی وستتتند که بر روی تجهیزات خارجی قرار دارند و توستتط نرم افزار اجرا
میشوند .فرمان خارجی فرمانی اس که نمیتواند خود گارسن انجام دود بلکه میبرد پش صحنه
و عوامل ذیربط آماده میکنند .مثل دستور formatکه روی hardاس و گارسن بلد نیس .
برای اینکه بفهمیم چه فرمانی داخلی و چه فرمانی خارجی استت در لینوکس فرمانی داریم به نام
typeکه به ما میگوید چه فرمانی داخلی و چه فرمانی خارجی اس .
$ type cd
cd is a shell builtin
shellبه معنی پوسته و بیرونیترین الیه نرم افزاری اس که با شما صحب میکند و به شما جواب
میدود و درواقع ومان گارسن ما اس .از طریق گارسن و یا shellفعالی موردنظر ما و در پش
صحنه انجام میگیرد و البته حتماً مدیری وس و توسط مدیر چک میشود .آیا این فرمان را داریم
یا نداریم و یا میشود و یا نمیشود و بررسیوای مشابه را انجام میدود و جواب سرویس مورد نظر
ما را میدود.
$ type date
date is /bin/date
با زدن فرمان باال به ما میگوید که dateزیر دایرکتوری /binقرار دارد.
حاال دو بار فرمان dateرا بزنید که تاریخ را به شما کامل نشان میدود .بعد از اینکه فلش باال (را
بزنید و دوباره type dateرا بزنید میبینید عالوه بر جملهای که در باال به ما گف یک کلمه دیگر
وم به نام hashمینویسد.
سؤال :این hashبه چه معنی اس ؟
$ date
$ date
$ type date
)date is hashed (/bin/date
در لینوکس اگر شما یک فرمان را چند بار استفاده کنید ،سیستم جای آن را به خاطر میس ارد و
در دفعات بعدی به دنبال آن نمیگردد و این بار میگوید من میدانم جای آن کجاس ؛ پس hashed
به این معنی اس که بعد از یکبار صدا زدن فرمان در دفعات بعدی جای آن را به خاطر میس ارد
و در دفعات بعدی به دنبال آن نمیگردد به عبارتی آدرس آن در حافظه مستقر ( )residentمیشود.
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۷۶
فرمانهای لینوکس
فرمان history
فرمان historyتمام فرمان وایی را که شما زدید با تاریخ و ساع در یک پایگاه داده نگه میدارد.
لینوکس از نظر امنیتی در سطح باالیی قرار دارد که به مرور در کالس مطرح خواویم کرد.
$ history
فرمان who
به وسیله فرمان whoیا wمیتوانیم بفهمیم که چه user Idوایی loginبه اضافه آدرس Ipور
userIdوستند.
$ who
یا
$w
در ادامه این فرمانوا را بهدق بررسی خواویم کرد.
فرمان bash
با اجرای این فرمان داخل terminalفعلی که وستند یک bashدیگر اجرا میشود که میشود bash
داخل .bashمیتوانید این فرمان را به تعداد زیاد اجرا کنید ،ولی در این صورت الزم خواود شد که
به ومان تعداد وم exitکنید تا تمام bashوا بسته شوند و به خط فرمان اولیه برگردید.
فرمان apropos
فرمان دیگری به نام aproposوجود دارد که کار searchرا انجام میدود .در س مثل ج ستجویی
که شتتما در Googleانجام میدوید؛ این فرمان بر روی ستترور کالس به دنبال فرمانی که بهعنوان
آرگومان به آن دادهاید ،میگردد .در سی ستم خودتان ج ستجو میکند و ور مطلب موجود را که با
رشتهای که جستجو کردهاید ،وماونگی داشته باشد؛ برای شما نمایش میدود:
$ apropos useradd
با زدن فرمان باال Manualمربوط بهفرمان dateرا دیدید .در باالی صفحه عدد یک داخل پرانتز در
جلوی فرمان Dateدر Manualآن نشاندونده ی این اس که این فرمان را ومه میتوانند اجرا
کنند و یک فرمان عمومی میباشد .حاال فرمان زیر را میزنیم:
$ man useradd
مشاوده میکنیم که در باالی Manualداخل پرانتز عدد ۸نوشتهشده ( )۸که این ۸نشان میدود
این فرمان مخصوص adminمیباشد و بهطور کلی فرمانوایی که در Manualآنوا ۸نوشته شده
باشد فقط و فقط توسط rootاجرا میشوند؛ بهجز در مواردی که از طرف rootبه یک کاربر معمولی
وم permissionداده باشیم .برای اطالعات بیشتر در مورد اعدادی که در باالی صفحهی manual
وا نوشته میشود ،فرمان زیر را اجرا میکنیم:
$ man man
صفحهی manباال حاوی اطالعات مهمی اس که یک adminخوب حتماً باید با آن آشنا باشد.
حاال اگر Manualمربوط به فرمان sinکه برای محا سبهی sinبه کار میرود را بزنید ،در صفحهی
راونمای آن داخل پرانتز عدد ( )۳نو شته شده ا س .با مراجعه به ( man manصفحهی راونمای
،)manمتوجه میشویم که عدد ۳مربوط به توابع میباشد.
$ man sin
و اگر در Manualیک فرمان عدد ( )۵داخل پرانتز بود مختص فایل پیکربندی اس .عدد ( )۶برای
بازیوا ( )Gameاس .عدد ( )۲برای system callمیباشد.
بهجز manualما helpوم داریم:
$ help cd
و فرمانوای داخلی helpدارند و Manualخاصی ندارند .پس Manبرای cdیک فرمان داخلی اس
فرمانوای خارجی اس .فرمانوای داخلی Manualندارند بلکه helpدارند .در لینوکس فرمان
دیگری به نام infoداریم که میشود گف با Manualحدود ۹۰%مشترک اس .
پس یاد گرفتیم که در لینوکس باوجود امکاناتی مثل Manulو helpو infoنیازی به کتاب و
یادداش و جستجو در صفحات وب نداریم و در ضمن اگر شما اشتباوی انجام دوید خود لینوکس
وم به شما کمک میکند که آن را رفع کنید .بهعنوانمثال فرمان cpرا بهتنهایی وارد کنیم:
$ cp
به شما نمیگوید که چنین چیزی نداریم بلکه میگوید باید بگویید که چه چیزی را میخواوید
ال
copyکنید .در لینوکس ما فرمان داریم و دُم فرمان یا ومان آرگومانوا ( )argumentsکه وقتی مث ً
فقط cpبزنید فرمان را ناقص وارد کردید و دُم فرمان را ندادهاید .اگر کسی فرمان را اشتباه و یا
ناقص وارد کرد ،اول دعوایش می کند و س س درستش را به فرد آموزش میدود و راونماییاش
میکند.
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۷۸
فرمان read
برای خواندن اطالعات در لینوکس فرمان readرا داریم که بهوسیلهی فرمان typeمیفهمیم که
یک دستور builtinمیباشد:
$ type read
read is a shell builtin.
وقتی فرمان readو س س نام متغیر را وارد مینمایید.
$ read NAME
س س منتظر میماند تا شما اطالعاتی را وارد کنید و بهعنوانمثال zahraرا وارد میکنیم .وقتی
echoکنیم میبینیم که مقدار متغیر را برای ما مینویسد( .توصیه میشود اسامی متغیروا را بزرگ
بنویسید):
$ echo $NAME
zahra
اطالعات بیشتر از فرمان readرا میتوان با فرمان help readمشاوده نمود .فرمانوای builtinفقط
helpدارند.
$ help read
مثال :با توجه به helpفرمان ،readکاری کنید اگر فرمان readبعد از ۵ثانیه جواب نداد یک
time outبدود و خارج شود:
روش اول:
$ read -p "ENTER UR NAME:" -t 7 -n3 NAME; echo $NAME |cut -c1
ENTER UP NAME: pardis
p
روش دوّم:
;/tmp/a -c1 echo $NAME > /tmp/a; cut $ read –p "ENTER NAME:" –t 7 -n 14 NAME
ولی توصیه میشود ورگز از این روش استفاده نکنید و current directoryخود را با فایلوای متفرقه
پر نکنید.
مثال :برنامهای بنویسید که اسمی را بخواند و حرف آخر آن را چاپ کند؟
فرمان alias
فرمان دیگری که داریم و به منظور تعیین اسم مستعار به کار میرود aliasاس .
$ alias z = date
حاال اگر zرا بزنیم میبینیم که تاریخ را نمایش میدود.
$z
تا اینجا متوجه شدیم که ما با یک shellیا پوستهای روبهرو وستیم که وم فرمانوای داخلی را
متوجه و وم فرمانوای خارجی را میشود .میتوان به آن aliasداد و functionوم تعریف کرد.
پس ما متوجه شدیم که میتوانیم گارسن را با نظر خودمان ودای کنیم.
Command completion
در لینوکس ما command completionداریم ،یعنی اگر شما یک حرف و یا چند حرف اول یک
فرمان را بزنید و س س کلید tabرا فشار دوید ،تمامی فرمانوایی که با آن حروف شروع میشوند
را میبینید.
بهعنوانمثال فقط بزنید dو کلید Tabرا فشار دوید میبینید تمام فرمانوایی که با حرف ( dکلید
)d+Tabشروع می شوند را برای شما میآورد و به شما میگوید مثالً من 1۸۴فرمان دارم که با
حرف dشروع می شوند ،اگر yesرا بزنیم اسم فرمانوا را میدود .کاربرد اینزمانی اس که فرمان
خیلی طوالنی باشد.
مثال :یک تابع با نام طوالنی تعریف میکنیم:
)( $ zzzzzTTTzzzzz
{
date
}
۸1 فصل ۴دستورات لینوکس
فرمان cal
فرمان دیگری نیز داریم به نام calکه تاریخ و تقویم را به ما میدود و البته man calبه ما تاریخ را
وم درس میدود و در مورد جزئیات این فرمان مفصل صحب کرده اس .
$ man cal
فرمان env
به کمک این فرمان میتوانید متغیروای محیطی را مشاوده کنید و ومچنین آنوا را تغییر دوید و
برنامهی مورد نظرتان را در محیط تغییر یافته اجرا کنید .بهعنوانمثال فرمان زیر را وارد کنید و
خروجی را مشاوده نمایید:
$ env
فرمان w
فرمان زیر را اجرا کنید:
$ man w
این فرمان ساع و تعداد کاربرانی که در شبکه وستند و loginکردهاند را به ما نمایش میدود و
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۸۲
بیشتر Adminاز آن استفاده میکند .فرمان whoنیز بسیار شبیه به wاس و عالوه بر آن ومچنین
میگوید که سرور چه زمانی upشده اس .
$ who-b
و برای اینکه ببینیم چه user Idوایی loginوستند:
$ who -q
میزنیم و اگر بزنیم who -mاطالعات خودمان را میدود که چه زمانی loginکردهایم و اطالعات
دیگری از این دس را که مربوط به userما میشود را نشان خواود داد pts .در خروجی وم به
معنای pseudo terminal streamمیباشد که ایستگاه پایانهی ساختگی میباشد و اگر فرمان ttyرا
بزنیم به ما میگوید که شماره ptsما چند اس .
نکته :وقتی پش یک کام یوتر نشسته باشید و در ترمینال واقعی آن کار کنید ttyدارید ،ولی
در ارتباطات از طریق telnetیا sshترمینالوای ساختگی خواوید داش .
فرمان id
فرمان بعدی وم که کار میکنیم idاس که اطالعاتی راجع به اینکه در کدام گروه عضو وستید و
چه شماره idایی دارید را به شما میدود.
$ id
uid=506(n.pardis) gid=502 groups=502
فرمان finger
فرمان بعدی fingerنیز مانند idاس که اطالعاتی راجع به useridبه شما نشان میدود و برای
تغییر دادن یا واردکردن اطالعات خودتان فرمان chfnرا بزنید.
$ finger
$ chfn
در این قسم قصد داریم که با انجام یک تمرین و کار روی یک فایل فرمانوای جدید را یاد بگیریم.
فرمان copy
برای شروع کار فرمان copyرا از روی manآن یاد میگیریم:
$man cp
فرمان ک ی cpفایل مورد نظر ما را در مقصد ک ی میکند:
$ cp /tmp/namef ~/
که در واقع بهصورت زیر اس :
مقصد/مبدأ$ cp/
با این فرمان یک فایل به نام namefرا ک ی کرده و به خانهی خود بردهاید و اگر فرمان lsرا بزنیم،
میبینیدکه در لیس فایلوای شما در خانهی خودتان اضافهشده اس .
~$ ls/
۸۳ فصل ۴دستورات لینوکس
فرمان cat
فرمان دیگری که داریم catاس که محتویات فایل را نشان میدود:
$ cat namef
میبینیم که این فایل شامل سه فیلد اطالعاتی اس :
name last name score
فایل :عبارت اس از تعدادی رکورد و رکورد عبارت اس از تعدادی فیلد و جدول تعدادی سطر دارد
و سطر تعدادی فیلد دارد.
فرمان cut
$ man cut
قبالً وم گفتیم که خود فرمان را داریم و ومچنین دم فرمان را و اگر در صفحهی manخصوصیاتی
درون عالم [] بود یعنی اختیاری وستند.
$ cut -c1-10 namef
از کاراکتر 1تا 1۰فایل namefرا به ما میدود .اگر بین c1و 1۰فاصله بگذاریم دم جدا میشود و
اشکال پیش میآید چون دو تا دم میشود .حاال اگر enterبزنیم نام را میبینیم c .در اینجا مخفف
characterبه معنی ستون میباشد که ور ستون جای یک کاراکتر میباشد .بنابراین از سم چپ
میشمارد به تعدادی که مشخص کردیم.
فرمان mail
فرمان بعدی که درس میدویم و برای ادامه تمرین نیاز داریم فرمان mailاس .فرمان mailاز ما
سه چیز را برای ارسال یک نامه که مقصد ،موضوع و محتوا اس ،میخواود.
برای ارسال یک نامه به Adminاین فرمان را میزنیم.
$ mail root
… subject hi
…content
ctrl+d
cc:
میپرسد آیا میخواوی ک ی از نامه را به کسی بدوی؟ بهعنوانمثال user idخودتان را وارد کنید و
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۸۴
اگر وم نه که خالی رد کنید .حاال اگر فرمان mailرا بزنیم میبینیم اگر ایمیلی داشته باشیم نمایش
میدود.
$ mail
Pipe file
در ادامه از pipe fileاستفاده میکنیم که standard inputرا به standard outputمیبرد .بهطور
کلی ما زمانی از pipeاستفاده میکنیم که بخواویم خروجی استاندارد را از طریق لوله که pipeاین
نقش را برای ما اجرا میکند به جای نمایش روی مانیتور به یک فرمان دیگر بفرستیم.
مثال :حاال میخواویم ومین اسموا را جدا کنیم و ایمیل کنیم .یعنی به جای اینکه روی
صفحه نمایش دویم ،از طریق pipeبه فرمان mailمیفرستیم:
فرمان sort
این فرمان ومان طور که از اسمش مشخص اس برای ما sortمیکند و اگر خروجی یک فرمان را
به این فرمان بدویم ،آن را sortخواود کرد.
$ man sort
در ادامهی این تمرین ،از یک فرمان دیگر به نام uniqوم استفاده میکنیم که کار واحدسازی را
انجام میدود و اسموای شبیه وم را از ور کدام یکی میشمارد.
مثال :حاال میخواویم این اطالعات را sortکنیم و ایمیل کنیم.
االن میخواویم بهطور مثال historyخودمان را برای ومه کسانی که وم اکنون به سیستم متصل
وستند ارسال نماییم:
`$ history | mail –s my-hist `users
که با این کار usersرا بهعنوان یک اسم میبینید که usersرا درون back tickیعنی قرار میدویم
در نظر نمیگیرد بلکه مقدار آن یعنی useridکل کاربران را در نظر میگیرد .راه دیگر اجرای فرمان
باال استفاده از روش زیر اس :
)$ history | mail –s my-hist $(users
نیز ومانند روش استفاده از backtickاول دستور usersاجرا میشود و بعد خروجی که در این حال
آن مورد استفاده قرار میگیرد.
پس تا اینجا sortو uniqرا یاد گرفتیم .حاال میخواویم این فایل را بر اساس نمره sortکنیم و
نمایش دویم:
$ sort -k3 -r -n namef
آپشن –k3یعنی بر اساس کلید سوم sortکن و –rیعنی reversمرتب کن و –nیعنی کلید سوم
از نوع numericمیباشد و بر اساس نوع داده numericدر نظر بگیر و مرتب کن.
فرمان tac
ومان طور که قبالً گفتیم فرمان catمحتویات یک فایل را نمایش میدود:
$ cat namef
و فرمان tacکه عکس فرمان catاس معکوس فایل را نمایش میدود:
$ tac file-name
$ tac namef
فرمان rev
این فرمان وم فیلدوا و محتویات داخل آنوا را برعکس میکند:
$ rev namef
: این فرمان وم کاری نمیکند ،فقط معکوسِ معکوس اس
$ rev namef |rev
فرمان less
$ man less
فرمان catاطالعات را نمایش می دود ولی در صورتی که اطالعات بیش از یک صفحه باشد ،چون
scrollمیشود ومه اطالعات را نمیتوانیم در یک صفحه ببینیم .میتوانیم از lessاستفاده نماییم.
$ less nemef
فرمان moreو mostو lessکاری که انجام می دوند عبارت اس از اینکه صفحه به صفحه نمایش
ال از lessاستفاده
میدوند و در لینوکس بیشتر از lessاستفاده میشود .حتی دستور manعم ً
می کند تا صفحات راونما را نشان دود .خصوصی مهم lessاین اس که امکان searchرا به ما
میدود .وقتی فایل نمایش داده شد با زدن /و نوشتن کلمه مورد نظر آن را پیدا کنیم .خصوصیات
lessبسیار شبیه به ویرایشگر متن vimو viاس ،که در ادامه به آن خواویم پرداخ .
$ less file-name
و اگر رشته مورد نظر را پیدا نکرد پیغام Pattern not foundرا میدود.
دستور زیر کلماتی که ۲تا ooندارند را نمایش دود.
$ less namef
/!oo
فرمان watch
که میتواند یک فرمان داده شده را مرتب فرمان دیگری که بررسی میکنیم فرمان watchاس
۸۷ فصل ۴دستورات لینوکس
اجرا کند:
$ watch-n1 -d cat /proc/interrupts
یک بار فایل /proc/interruptsخوانده شده و روی مانیتور نمایش با اجرای دستور باال ور یک ثانیه
داده میشود .وقتی این فرمان را اجرا کنید تغییرات ور deviceیعنی اینکه چند تا وقفه ایجاد شده
را نشان میدود .آرگومان –dتفاوت خروجیوا را در وربار اجرای دستور با حال قبل highlight
میکند .برای خاتمهی این دستور کافی اس کلیدوای control + cرا فشار دوید.
فرمان grep
این فرمان یک رشته را در یک فایل پیدا میکند:
$ grep cpu /proc/cpuinfo
و فایلی که در آن جستجو انجام میشود در دستور باال کلمهی مورد جستجو cpuاس
/proc/cpuinfoاس .
مثال :صفحهی راونمای دستور grepرا بخوانید و بگویید که چطور میتوان کاری کرد که
وقتی رشته را پیدا کرد آن را رنگ بزند.
پاسخ:
ساخت دایرکتوری
برای ساختن دایرکتوری در لینوکس از فرمان mkdirاستفاده میکنیم .البته ساخ دایرکتوری در
لینوکس یک محدودی دارد و آن این اس که بیشتر از ۳۳۰۰تا دایرکتوری زیر وم نمیتوانیم
بسازیم و البته در فایل سیستم وای جدید این محدودی وم از بین رفته اس .برای اینکه ببینیم
helpداریم یا manualچک میکنیم:
$ type mkdir
برای ساخ دایرکتوری این فرمان را میزنیم:
$ mkdir test
ومچنین با یک فرمان mkdirمیتوانیم چند دایرکتوری در کنار وم بسازیم:
$ mkdir a1 a2 a
نکته :یک دایرکتوری بهطور پیش فرض حجمش ۴kاس .
مثال :فقط و فقط با یک فرمان پنج دایرکتوری زیر وم ایجاد کنید.
ساخت فایل
< و بعد از آن اسم فایل را مینویسیم و روش دوم استفاده فایل عالم در روش اول برای ساخ
از فرمان touchاس :
$ >file
$ touch file
وقتی یک فایل میسازیم بهطور پیش فرض سایز آن صفر اس .
نکته :در لینوکس میتوانیم به جز /ور کاراکتری دیگری را در اسم فایل داشته باشیم.
بهعنوانمثال اسم یک فایل میتواند بهصورت زیر دو تا spaceو مواردی از این قبیل باشد:
"">$
"">$
$ ls -l
total 42212
-rw-r--r-- 1 n.pardis 502 0 May 23 18:47
-rw-r--r-- 1 n.pardis 502 0 May 23 18:47
۸۹ فصل ۴دستورات لینوکس
ومچنین بهعنوانمثال میتوانیم یک فایل بسازیم و ومزمان یک فرمان را وم اجرا کنیم و خروجی
آن را در آن فایل قرار دویم:
$ > np1 date
$ cat np1
Mon May 23 18:49:57 IRDT 2011
دارد؟ راونمایی از man setیا help set تمرین :توضیح دوید که فرمان setیا unsetچه کاربردی
استفاده نمایید و خروجی ور کدام را بررسی کنید.
فرمان exec
ورگاه بخواویم فرمانی را اجرا کنیم که جایگزین پروسس فعلی شود از این فرمان استفاده میکند.
مثالً میخواویم یک دایرکتوری به نام abcdدر مسیر جاری بسازیم و تمام و دیگر با shellکاری
نداریم .در این صورت میزنیم $ exec mkdir abcdکه به جای پروسس shellکه در حال حاضر در
حال اجرا اس و ما می توانیم در آن دستورات خود را وارد کنیم ،پروسسی را جایگزین خواود کرد
که دستور mkdir abcdرا اجرا کند .دستور mkdir abcdوم بعد از مدت کوتاوی خاتمه مییابد و
در نتیجه ویچ اثری از پروسس shellو ومینطور پروسس mkdir abcdبعد از مدتی نخواود بود،
البته یک دایرکتوری با نام abcdدر صورتی که در میسر مورد نظر حق ایجاد دایرکتوری را داشته
باشید ،ساخته خواود شود.
sabtارسال کنیم.
$ cut -f1 -d: /etc/ passwd |mail -s uid sabt
آرگومان –dمخفف delimiterبه معنی جداکننده میباشد و در این فایل جداکننده دو نقطه:
میباشد.
فرض کنید میخواویم این فایل را sortکرده و ایمیل کنیم:
$ cut -f1 -d: /etc/passwd |sort| mail-s uid sabt
میخواویم فیلد اوّل و پنجم آن را جدا کنیم:
$ cut -f1,5 -d: /etc/passwd |sort| mail-s uid sabt
اگر بخواویم historyخودمان را mailکنیم به این صورت عمل میکنیم:
$ history |mail-s myhis sabt
برای ومه ایمیل کنیم به جای اینکه استتم ومه useridوا را بنویستتیم از اگر بخواویم historyمان
usersاستفاده میکنیم.
`$ history | mail-s my hist `users
بررسی سیگنالها
یک برنامه وقتی میآید در حافظه باید آنقدر محکم باشد که از بین نرود .یکی از عالئمی که یک
برنامه را متوقف میکند و یا میکشد ترکیب کلیدوای ctrl+cاس ( .البته این کلیدوا در محیط
گرافیکال معادل cutوستند ،ولی در خط فرمان معنای خاص خود را دارد) که وقتی به یک نرمافزار
میرسد آن را از بین میبرد و میکشد.
به ومین دلیل اس که وقتی second passرا میخواود ctrl+cمیزنیم که آن را میکشد
و وارد میشود .به ctrl+cسیگنال میگوییم .ما سیگنالوای مختلفی داریم .که سه تا عکسالعمل
میتوانیم در مقابل ور سیگنال داشته باشیم:
action )1
ignore )۲
default )۳
دو سیگنال معروفی که داریم یکی ctrl+cو دیگری ( Hang upشماره ( )1ارتباط مخاطب با پروسس
قطع شده) اس .حاال این فرمان را میزنیم تا ببینیم چند تا سیگنال داریم:
>> kill -l
Hangupاس و ما ۶۴سیگنال داریم که لینوکس ومه را supportمیکند .که یکی از آنوا
( interruptشماره )۲ومان ctrl+cاس vim .را نمیتوان با ctrl+cکش .ور سیگنال یک کد دارد.
ما به وسیلهی trapیعنی فرمان trapبرای سیگنال میتوانیم تله بگذاریم و جلوی اجرا شدنش را
بگیریم trap .یکی از فرمانوای داخلی bashاس میتوان به وسیله آن عکسالعمل مناسب را در
مقابل سیگنال اتخاذ نمود و توصیه میشود ،دستور trapرا در ابتدای scriptگذاش .با این فرمان
میگوییم ور وق
۹1 فصل ۴دستورات لینوکس
مرجع فرمانها
در این قسم فرمانوای پرکاربرد و مهم لینوکس را آوردهایم .ورجا فرمانی برای شما تازه بود کافی
ال برای فرمان lsبزنید .man lsجه یادگیری بهتر اس که به صفحهی manآن مراجعه کنید ،مث ً
فرمانوا و استفاده از صفحات راونمای لینوکس سعی کنید که با صفحات manبیشتر آشنا شوید
و از آنوا بیشتر استفاده کنید و کمتر به صفحات وب و اینترن مراجعه کنید .توجه داشته باشید
ال جدید باشد ،کهکه این قسم حال مرجع دارد و ممکن اس برخی از فرمانوا برای شما کام ً
فرص را برای یادگیری بیشتر شما فراوم میآورد .ممکن اس برخی از فرمانوای زیر بر روی
سیستم شما نصب نباشد که در این صورت باید آنوا را نصب کنید (فرمانوای yum installو apt-
get installرا در قبالً یاد گرفتهاید).
اطالعات سیستم
توضیحات فرمان
اطالع از زمان و تاریخ و ومچنین تنظیم آن date
تقویم ماه جاری را نشان میدود cal
uptimeفعلی سیستم ،تعداد کاربران و ومچنین
uptime
load averageرا نشان میدود
لیس کاربرانی که بر روی سیستم در حال کار
وستند و برخی اطالعات مربوط به آنوا را نشان w
میدود.
نام کاربری که با آن loginکردهاید را نشان میدود. whoami
نام کاربری ،مشخصات ترمینال ،تاریخ و ساعتی را که who am i
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۹۲
توضیحات فرمان
loginکردهاید نشان میدود.
اطالعاتی را در بارهی userنشان میدود. finger user
اطالعات مربوط به کرنل سیستم را نشان میدود.
برای مشاودهی اطالعات releaseاز دستور uname –a
uname –rاستفاده کنید.
اطالعات مربوط به CPUرا نشان میدود .برای
اینکه متوجه شوید CPUکام یوترتان از چه
مجموعه دستورالعملوایی ()instruction set cat /proc/cpuinfo
پشتیبانی میکند فرمان زیر را وارد کنید:
grep flags /proc/cpuinfo
اطالعات مربوط به RAMرا نشان میدود. cat /proc/meminfo
اطالعات مربوط به مصرف memoryو swapرا
free
نشان میدود.
1 shortcuts
۹۳ فصل ۴دستورات لینوکس
توضیح کلید
استفاده از کلیدوای shiftو فلش سر باال و ومچنین shiftو فلش سر
پایین میتوانید در صفحهی lessبه باال یا پایین scrollکنید .برای
خروج نیز کلید qرا فشار دوید .مثالls –alR /home | less :
آخرین فرمان اجرا شده در خط فرمان را تکرار میکند .این کار با استفاده !!
از امکانات historyانجام میشود.
آخرین آرگومان فرمان قبلی را تکرار میکند. command!$
آخرین آرگومان فرمان قبلی را وارد میکند که به شما امکان ویرایش آن )Escape +. (a period
را قبل از اجرا کردن را فراوم میکند.
به ابتدای خطی که در حال نوشتن فرمان در آن وستید میرود. Ctrl + A
به انتهای خطی که در آن در حال نوشتن فرمان وستید میرود. Ctrl + E
از sessionفعلی log outمیکند .مشابه exit Ctrl + D
کلمه یا آرگومانی را که در سم چپ cursorقرار دارد را delete Ctrl + W
میکند.
جستجو
میگردد.
بهطور بازگ شتی در می سر دایرکتوری داده شده به دنبال grep –r pattern dir
الگو ( )patternداده شده میگردد.
به دنبال الگوی داده شده در خروجی فرمان command command | grep pattern
میگردد.
تمام نمونه وای مربوط به فایل را در پایگاه داده موجود از locate file
فایلوا جستتتجو میکند .برای به روز رستتانی پایگاهدادهی
آن از فرمان updatedاستفاده کنید.
با شروع از دایرکتوری rootبه دنبال فایل با نام داده شده find / -name filename
میگردد.
با شتتروع از دایرکتوری rootبه دنبال فایلی که در نام آن ”*find / -name “*filename
رشتهی داده شده وجود دارد ،میگردد.
پتتایگتتاهدادهی مربوط بتته فتتایتتلوتتای موجود در تمتتام updated
فایلستتتیستتتتموای الحاق شتتتده به به دایرکتوری root
لینوکس را ایجاد به به روزرسانی میکند.
توضیح فرمان
جه حذف فایل داده شده از ور تالشی استفاده میکند. rm –f file
برای اطالعات بیشتر به صفحهی man rmمراجعه کنید.
به تذکر فرمان rm nameمراجعه نمایید.
تالش جه حذف کامل یک دایرکتوری و تمام rm –rf dir
زیردایرکتوریوا و فایلوای درون آنوا.
به تذکر فرمان rm nameمراجعه نمایید.
file1را به file2ک ی میکند .یعنی فایل با نام file1را cp file1 file2
ک ی میکند و آن را با نام paste ،file2میکند.
دایرکتوری dir1را به dir2ک ی میکند .در صورتی که cp –r dir1 dir2
dir2وجود نداشته باشد ،آن را میسازد.
فایل داده شده را به مسیر داده شده ک ی میکند. cp –i file /home/dirname
فایل داده شده را به مسیر داده شده انتقال میدود. mv –i file /home/dirname
یک لینک نرم به فایل داده شده ایجاد میکند (مشابه ln –s file link
shortcutدر ویندوز).
فایل با نام داده شده را در صورتی که وجود نداشته باشد، touch file
ایجاد میکند ،و در صورتی که باشد attribute ،وایش را
به روز میکند .میتوانید با دستور attribute ،chattrوای
فایل را مشاوده کنید.
ورودی استاندارد را به فایل با نام داده شده مینویسد. cat > file
محتویات فایل با نام داده شده نمایش میدود. cat file
محتویات فایل با نام داده شده را بهصورت صفحه به less file
صفحه و با امکان scrollکردن نمایش میدود.
1۰خط اول فایل را نشان میدود. head file
بیس خط اول فایل را نشان میدود. head -20 file
1۰خط آخر فایل را نشان میدود. tail file
بیس خط آخر فایل را نشان میدود. tail -20 file
1۰خط آخر فایل را نشان میدود با این تفاوت که به tail –f file
ازای خطوط تازهای که افزوده میشود ،آنوا را نمایش
میدود .در واقع فایل را followمیکند.
تبدیل کردن tabبه space جه expand
برای تبدیل spaceوا به tab unexpand
ابزاری برای قالب بندی و فرم کردن پاراگرافوا در fmt
فایلوای متنی
امکانی شبیه queryپایگاهدادهوا جه اتصال محتویات join
دو فایل بر اساس فیلدوای مشترک
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۹۶
توضیح فرمان
جه ادغام کردن خطوط فایلوا paste
شمارهگذاری خطوط فایلوا nl
آماده کردن فایلوای متنی برای پرین و چاپ pr
یکی از قویترین دستوروا برای ویرایش متن .حتماً man sed
sedرا مشاوده کنید.
تکهتکه کردن یک فایل به چند قطعه split
جایگزینی یا حذف کاراکتروای یک رشته ،فایل یا tr
stream
تعداد خطوط ،کلمات و کاراکتروا را در یک فایل wc
میشمارد.
از ورودی استاندارد خوانده و در فایلوا و خروجی tee
استاندارد مینویسد .حتماً man teeرا مشاوده کنید.
دستوراتی را از روی جریان ورودی اجرا میکند .حتماً xargs
man xargsرا مشاوده نمایید.
فشردهسازی و پشتیبانگیری
توضیح فرمان
یک فایل با نام file.rarاز روی مجموع فایلوای داده tar cf file.tar files
شده میسازد .برای اطالعات بیشتر به man tarمراجعه
کنید.
فایل داده شده را extractمیکند. tar xf file.rar
از روی فایلوای داده شده یک فایل فشرده شده با tar czvf file.tar.gz files
استفاده از Gzipبا نام file.tar.gzمیسازد.
فایل file.tar.gzرا با extractمیکند. tar xzvf file.tar.gz
فایل داده شده را فشرده میکند و نام آن را به file.gz gzip file
تغییر میدود.
فایل فشرده را باز میکند و نام آن را به fileتغییر gzip –d file.gz
میدود.
شبکه
توضیح فرمان
لیس آدرسوای IPتمام دستگاهوای ماشین محلی را نمایش میدود. ifconfig
eth0را downمیکند .مشابه فرمان ifconfig eth0 down
ifdown eth0
عمل میکند .البته استفاده از
ifconfig eth0 downارحج اس .
eth0را upمیکند .مشابه فرمان ifconfig eth0 up
ifdown eth0
اس .البته استفاده از
ifconfig eth0 up
ارجح اس .
hostداده شده را pingمیکند و خروجی را نمایش میدود .جه بررسی ping host
متصل بودن اینترن یا روشن بودن hostمورد نظر یا درس کار کردن
سیستم ،dnsومچنین تأخیر شبکه کاربرد دارد.
اطالعات whoisمربوط به دامین داده شده را نمایش میدود. whois domain
اطالعات DNSدامین داده شده را نمایش میدود. dig domain
عمل reverse lookupرا برای hostداده شده انجام میدود. dig –x host
جه دانلود فایل به کار میرود .در قسم fileباید URLداده شود. wget file
دانلود متوقف شده را ادامه میدود. wget –c file
جه دانلود در پش صحنه به کار میرود .در صورتی که بهصورت remoteبه wget –b file
یک hostمتصل وستید ،با اجرای این دستور ،با بسته شدن consoleشما
دانلودتان متوقف نمیشود.
جزوه آموزشی لینوکس مقدماتی ) (LPIC-1 ۹۸
SSH
توضیح فرمان
مورد نظر با نام کاربری داده شده. اتصال به واس ssh user@host
اتصال به واس داده شده با نام کاربری و پورت مشخص ssh –p port user@host
اضافه نمودن کلید خودتان به hostداده شده ،جه ورود با ssh-copy-id user@host
استفاده از کلید و بدون رمز عبور.
ال اگر اتصال شما
دستورات را بدون وقفه و قطعی اجرا میکند (مث ً nohup
dial-upباشد با قطع شدن اینترن ،به کمک این دستور ،فرمان بر
روی سرور دوردس ادامه خواود یاف ) .خروجی را در یک فایل
مینویسد.
مدیریت کاربران
توضیح فرمان
ایجاد یک کاربر جدید با نام کاربری داده شده adduser accontname
تغییر پسورد کاربر داده شده .در صورتی که نام ویچ passwd accountname
کاربری وارد نشود ،کاربر فعلی در نظر گرفته میشود
(ومان نام کاربری که با آن loginکردهاید).
ورود بهعنوان superuserاز loginفعلی su
خروج از loginفعلی exit
مدیریت processها
توضیح فرمان
پروسسوای فعال بر روی سیستم را نمایش میدود. ps
اگر این فرمان را با shellکاربر rootاجرا کنید ،تمام پروسسوای فعال بر روی ps –aef
سیستم را به شما نمایش میدود .فرض کنید میخواوید ببینید که چند
ویرایشگر vimباز اس :
ps –aef | grep vim
پروسسوای فعال بر روی سیستم را نمایش میدود و بر اساس فاکتوروای top
مختلف آنوا را مرتب میکند.
نسخهی توسعه یافتهی دستور topاس . htop
پروسس با pidداده شده را killمیکند .در استفاده از این دستور بسیار دق kill -9 pid
کنید.
بررسی میکند که آیا پروسسی با pidداده شده بر روی سیستم وجود دارد یا kill -0 pid
خیر .ویچ تغییری بر روی آن پروسس اعمال نمیکند.
تمام پروسسوایی که نامشان procاس را killمیکند .در استفاده از این killall proc
دستور بسیار دق کنید.
۹۹ فصل ۴دستورات لینوکس
توضیح فرمان
jobوای متوقف شده یا موجود در backgroundرا نمایش میدود؛ ومچنین bg
jobمتوقف شده را در backgroundادامه میدود و به حال resumeدر
میآورد.
در صورتی که خروجی فرمان jobsخالی نباشد job ،اخیر را به foreground fg
میآورد.
jobبا شمارهی nرا به foregroundمیآورد .در صورتی که خروجی دستور fg n
jobsبیش از یک jobباشد استفاده از این فرمان مفید اس .
امکان تعیین اولوی پردازهی مورد نظر به کمک این دستور در ونگام اجرای nice
برنامه وجود دارد .وضعی به روز شده را به کمک دستور psمیتوانید مشاوده
کنید.
ومانند ،niceولی بعد از اجرای آن امکان تعیین اولوی وجود دارد. renice
توقف و راهاندازی
توضیح فرمان
جه خاموش کردن ( shutdownو )haltسیستم به کار میرود. shutdown –h now
ومانند دستور قبلی. halt
بعد از ۵دقیقه سیستم را rebootمیکند. shutdown –r 5
سیستم را بالفاصله rebootمیکند. shutdown –r now
ومانند دستور قبلی. reboot
در صورتی که سیستم گرافیکی Xبر روی ماشین نصب باشد آن را اجرا و فعال میکند. startx
فصل 5فشردهسازی و backupگیری
اهداف فصل:
آشنایی با روشهای فشرده سازی و دالیل آن
استفاده از gzip o
استفاده از zip o
استفاده از bzip2 o
توانایی backupگیری
درک دالیل تهیهی پشتیبان
تسلط بر استفاده از فرمان tar
تسلط بر استفاده از فرمان cpio
فشردهسازی و تهیهی پشتیبان (یا ومان backupگیری) دو مسالهی بسیار مهم در حفاظ و
نگهداری اطالعات اس .یک مدیر سیستم خبره توانایی پشتیبانگیری از فایلوا و پارتیشنوا را ،با
روشوای مناسب ،میداند و به عالوه از روشوای فشردهسازی جه استفادهی بهینه از فضای
دیسک بهره میبرد .در این فصل چندین روش تهیهی فایلپشتیبان ( )backupو ومچنین
فشردهسازی را با وم دنبال خواویم کرد.
روشهای فشردهسازی
ابتدا یک فایل بزرگ به نام largeرا ومه ک ی میکنیم که روی آن عملیات فشردهسازی را تس
کنیم.
>> dd if=/dev/zero of=/tmp/large bs=1M count=1024
>> ls -alh large
1۰1 فصل ۵فشردهسازی و backupگیری
hمخفف human readableاس و واحدوای حجم فایلوا را به شکل خواناتری نمایش میدود.
دالیل فشردهسازی:
)1فضای کمتری روی دیسک میگیرد.
)۲انتقال اطالعات سریعتر اس .
دومین روشzip:
>> zip large.zip large
اسم فایل بعد از اینکه zipشد large.zip ،میشود:
>> file large.zip
دالیل backupگیری
Backupگیری میتواند دادهوا را در برابر عوامل مختلفی محافظ کند یا کاربردوای مختلفی داشته
باشد .در زیر به مهمترین دالیل اشاره شده اس :
.1خرابی و معیوب شدن تجهیزات به ور دلیلی
.۲کم توجهی مسئول نگهداری اطالعات
.۳از بین رفتن اطالعات به دلیل حملهی خودی و غیرخودی
.۴انتقال اطالعات از یک کام یوتر به کام یوتر دیگر
.۵ارائه اطالعات به سازمانوای زیرربط و محاکم قضایی
حاال ومه این فرمان را در home directoryخودتان بزنید (فایل namefومان فایلی اس که برای
تمرینوای قبلی ک ی کردیم و فرقی نمیکند .میتوانید به جای namefور فایل دیگری را در نظر
بگیرید):
>> stat namef
این فرمان اطالعات کامل این فایل ،یعنی شناسنامهی فایل ،Backupرا به ما میدود .پس کاری
1۰۳ فصل ۵فشردهسازی و backupگیری
فرمان tar
اکثر کدوای سورسوای لینوکس با این فرم نگهداشته میشوندBackup .گیری قانون و استراتژی
دارد ،یعنی اینکه در چه ساعتی backupبگیریم و کجا بگذاریم و باید تاریخ و ساع backupگیری
را روی آن بنویسیم و با توجه به حساسی فایل backupگیری شده آن را در جایی امن و مطمئن
قرار دویم.
حاال فرمان زیر را بزنید .میبینیم که دعوا میکند و میگوید باید optionرا مشخص میکردی.
>> tar
حاال فرمان روبهرو را میزنیم که باز وم دعوا میکند و میگوید به من نگفتی که back upرا کجا
createکنیم.
>> tar c
فرمان tarیکی از فرمانوایی اس که optionوای آن نیازی به – ندارند .تعداد محدودی از این
فرمانها داریم .به این قالب از آرگومان گرفتن اصطالحاً BSD styleمیگویند .حاال فرمان روبهرو را
میزنیم:
>> tar cf all.
c :create
:allروی این فایل back upدرس کن.
) .نقطه(یعنی از current Directoryاش back upبگیرد.
اعتراضتتی میکند و میگوید من فایل allرا که خودش back upاس ت از خودش نمیتوانم back
upبگیرم .وقتی فرمان روبهرو را میزنید به شما میگوید که فایل allا ستانداردی از جنس posix
و archiveای از جنس tarاس .
>> file all
اآلن از آنوا back up شتتما وقتی الگین میکنید تعدادی فایل برایتان ستتاخته میشتتود که ما
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۰۴
گرفتیم وقتی ls –lبزنیم ومه را میبینیم all .که فایل backupا س و از دایرکتوری جاری گرفته
شد حجمش از کل فایلوا بیشتر اس .چرا؟
به دلیل اینکه در backupتعدادی headerو trailerاضتتتافه کردهایم .حاال اگر در فرمانی که زدیم
یک آپ شن دیگر وم به نام vکه مخفّف verboseمیبا شد ،ا ضافه کنیم که به معنی با خود زمزمه
کردن میباشد.
>> tar cvf all.
و به حال verbose حاال اگر enterبزنیم میبینیم که یک چیزوایی را که تا اآلن نمیگف را گف
رف و فایلوای نقطهدار را که تا اآلن نشان نمیداد ،نشان میدود و از آنوا backupگرفته اس .
حاال اگر به جای ،allفالپی یا flashمینوشتید فایل را میتوانستید مثالً به شیراز بفرستید و وقتی
به مقصد رسید به راحتی recoveryمیکنید و به راحتی از آن فایل استفاده میکنید .در
backupگیری باید خیلی دقّ کنیم چون ممکن اس به درستی back upنگیریم و بعداً برنگردد.
یک آپشن مهم دیگر برای فرمان tarآپشن tاس t :مخفّف tableمیباشد .این فرمان چک میکند
که backupما خوب اس یا نه؟ اگر backupخراب باشد یا مشکلی داشته باشد برای ما یک پیغام
مینویسد.
>> tar tf all.
اگر یک vوم در وسط این آپشن بگذاریم خروجی خیلی تمیزی به ما میدود .پس backupکه
گرفتیم با این فرمان آن را تس میکنیم f .یعنی فایلی که جلوی آن نوشتیم وقتی فرمان روبهرو
را میزنیم اعتراض میکند و میگوید که به نظر نمیآید که این فایل یک back upباشد.
>> tar tvf namef
سؤال :چرا ما در بکآپگیری change directoryمیکنیم؟ absolute pathیعنی چه؟
چون اگر ما backupرا با فرمان روبهرو tar cvf All/home/pardis/بگیریم در مقصد که میخواویم
از backupاستتتفاده کنیم و آن را برگردانیم امکان دارد فایلی به نام pardisدر ومان مستتیر وجود
داشتته باشتد و برود به جای آنوا قرار گیرد و آن فایل را از بین ببرد .به این میگویند Absolute
pathکه با /شتتتروع میشتتتود .و اگر با /شتتتروع نشتتتود به آن relativeمیگویند .مثالً اگر بزنید
/bin/dateمیشود absoluteو اگر dateخالی بزنید باید برود بگردد و relativeمیشود.
در بکآپگیری اگر از absolute pathخواستیم بکآپ بگیریم ،اشکالی ندارد به شرط اینکه سورس
و targetرا بدانیم absolute path .خیلی سریعتر اس ؛ اجرای فرمانها در absolute pathسریعتر
اس بدلیل اینکه دیگر shellنیازی به جستجو کردن ندارد .زیرا در این حال به shellمیگویید
برو و از اینجا اجرا کن و اگر خالی بزنید باید بگردد.
آپشن برگرداندن فایل از x :backup
c: create
v: verbase
f: File
1۰۵ فصل ۵فشردهسازی و backupگیری
نکته :فرمان backupبه سیستمعامل (ور سیستمعاملی) میگوید میخواوم بنویسم روی
device ،tapeس س سیستمعامل میآید به device driverآن میگوید که بنویس .آنگاه
driver tapeوم مینویسد .ومیشه به این صورت اس که device driverبه deviceفرمان
میدود و جواب فرمان که آمد ،آن را آنالیز میکند .پس برای اینکه به tapeبگوید بنویس و
interruptمیدود و tapeکه این کار را انجام داد interruptانجام کار میدود و میگوید من
این کار را کردم .حاال اگر tapeپاره شده باشد یا چروک شده باشد و کابل مشکل داشته باشد
و tapeکثیف باشد یا headکثیف باشد deviceبه device driverمیگوید که من در نوشتن
مشکل دارم ،اوّل سیستمعامل میآید روی کنسول و log Fileپیغام را مینویسد و روی کنسول
مینویسد tapeپاره شده یا headکثیف اس و موارد مشابه دیگر و بعد به فرمان tarمیگوید
که کار قبلی تان را نتوانستید انجام دوید .پس یادتان باشد که اگر سخ افزار خراب باشد دو
دسته خطا ظاور خواود شد.
device driver error .1
archive is incompleted unexpected : پیغام errorی که خیلی زیاد دیده میشود این اس .۲
و میگوید توقع نداشتم این قدر زود آخر end of Fileکه میگوید back upکامل نیس
فایل را ببینیم.
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۰۶
خطای دوم میتواند به دلیل برق رفتن در حین backupگیری باشد .پس backupگیری با این که
ساده اس ولی خیلی مهم اس و نیاز به استراتژی و سیاس گذاری دارد.
فرمان rsh
CNNوصل میشود و میگوید Dateرا اجرا کن. بهعنوان مثاال فرمان rshبه سای
فرمان cpio
cpioمخفّف copy input outputمیباشتتتد و یکی دیگر از روشوای backupگیری استتت .حاال
فرمان روبرو را میزنیم که اعتراض میکند چون آرگومانوای آن کامل نیس :
>> cpio
>> cpio-i
cpio –iرا که میزنیم منتظر ورودی میماند .حاال با cpioبکآپ میگیریم:
>> rm all
cpioمثل tarنی س که فقط بگوییم از دایرکتوری من یعنی( .نقطه) و قبول کند بلکه میگوید به
من اسم فایل بدوید .حاال این فرمان را میزنیم:
>> find. | cpio -o > all
فرمان findتمام objectوای موجود در دایرکتوری خودمان را نشان میدود و چون ما نمیخواویم
خروجی را ببینیم آن را به cpioپایپ میکنیم و این فرمان را میزنیم
>> find. |cpio -o >all
من استتتم فایل نمیدانم خودت backupرا در cpioآپشتتتن ایجاد فایل oاستتت و cpioمیگوید
redirectکن جایی که دوستتت داری cpio .مثل tarو ِدِر و اطالعات دارد و در پایانش عالم
کنترلی میگذارد .وقتی این فرمان را میزنیم باز وم اعتراض میکند و میگوید این فایل اندازهاش
در حال تغییر اس و من از این فایل back upنمیگیرم.
1۰۷ فصل ۵فشردهسازی و backupگیری
نکته :فرمان cpioبا روش استاندارد ،فشرده نمیکند بلکه فایلوا در یک مخزن storeمیشوند.
تمرین :کاری کنید که backupی که از cpioمیگیریم فشرده باشد؟ چرا دستورات زیر به
درستی فعالی مورد نظر ما را انجام نمیدوند؟
سؤال :در ابتدای ِودِر فایل tarو cpioچه چیزی داریم؟
طبق ISO 8859-1ور فایل شناخته شدهای در دنیا ،بای وای ابتدایش ن شاندوندهی جنس فایل
استت ،که به آن اصتتطالحاً magic numberمیگویند .با این فرمان میتوانیم لیستتتی از magic
numberوای شناخته شده را ببینیم:
>> less /usr/share/magic
cpioبگردید) magic numberآن ۰۷۰۷۰۷اس . میبینیم که اگر /cpioبزنید (یعنی به دنبال
نکته :کاربرد –pدر فرمان cpioچیس ؟
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۰۸
اهداف فصل:
آشنایی با ویرایشگر :vim
تسلط به حاالت مختلف آن o
تسلط به کلیدهای میانبر در این ویرایشگر o
تعریف abbreviationو استفاده از آن o
ما تا اینجا تعدادی فرمان یاد گرفتیم ،ولی گاوی اوقات شما نیاز دارید یک فایل را تغییر دوید و یا
تنظیماتی که مد نظرتان اس را اعمال کنید .توانایی استفاده از یک ویرایشگر مناسب برای راهاندازی
سرویسوای مختلفی مثل dns ،web server ،ftpو موارد دیگر بسیار مهم اس .بنابراین ضروری
اس که به یک ویرایشگر 1خوب مسلط باشید ..ویرایشگری که در این قسم با آن کار میکنیم
ویرایشگر vimمیباشد .این ویرایشگر در بین خبرهوای لینوکس طرفداران بسیار زیادی دارد.
ویرایشگر vim
>> man vim
این فرمان جزوهی کاملی وم دارد که با اجرای فرمان باال آن را مشتتاوده میکنید .برای اینکه یک
فایل را ویرایش کنیم ،این فرمان را میزنیم:
>> vim fileName
در صتتورتی که نتوانیم فایلی را تغییر دویم ،خود ویرایشتتگر vimدر خط آخر اعتراض میکند و با
خط قرمز اعتراضش را نشان میدود .در واقع در چنین حالتی فایل را در حال readonlyمیتواند
باز کند vim .محدودیتی ندارد و اگر فایل مورد نظر باینری وم باشتتتد ،میتواند آن را باز کند و
1 editor
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 11۰
command از این به بعد ورجا عالم :را قبل از یک دستتتتور دیدیم ،یعنی اینکه آن را در حال
modeوارد میکنیم .در حالتی که د ستوری را بدون عالم :بنوی سیم یعنی اینکه آن را در حال
normalوارد کردهایم و اگر د ستوری در حال insert modeوارد شود ،حتماً ذکر میکنیم .برای
خروج از حالت insertو برگ شتن به normal modeکافی ا ست که کلید escapeرا ف شار
دهیم.
مثال :با استفاده از shellو اسکریپ نویسی لینوکس ،برنامهای بنویسید که یک اسم را بخواند
و حرف اولش را چاپ کند.
یعنی میخواویم این برنامه را به صورت یک فرمان در لینوکس در بیاوریم .شروع کار به صورت زیر
اس و فایلی با نام test1میسازد:
>> vim test1
برای وارد کردن دستورات و یا تغییرات در فایل کلید iدر صفحه کلید را فشار میدویم و تغییراتی
را که میخواویم اعمال میکنیم.
برای ذخیره و خارج شتدن از محیط ویرایشتگر ابتدا کلید escapeرا فشتار میدویم و ست س :xرا
میزنیم .حاال ls –lکه بزنیم مشخصات فایلی که ساخته شده اس را میبینیم و اگر اسم فایل را
بزنیم اجرا میشود.
>> test1
میبینیم که اجرا نشد و به ما پیغام command not foundرا میدود که این به این دلیل اس که
لینوکس ،برخالف ویندوز مایکرو ساف ،به خاطر م سائل امنیتی current directoryرا نمیگردد و
از دایرکتوریوای م شخص شده از قبل در بیرون ،میخواود د ستور را بیاورد (م سائل امنیتی این
اس که ممکن اس فرمانی مثل dateدر دایرکتوری جاری دستکاری شده باشد و اگر ما dateرا
از دایرکتوری جاری اجرا کنیم مثالً formatیا deleteرا انجام دود به ومین دلیل استتت که از
دایرکتوری جاری نمی خواند) .حاال اگر خودمان مشتتخص کنیم که از دایرکتوری جاری بخوان باید
بهصورت زیر بزنیم
>>./test1
Permission denied
که حاال اجرا می شود ولی ممکن اس پیغام permission deniedوم بگیرید .اگر چنین شد فرمان
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 11۲
مثال :در ادامهی کار بر روی فایل مثال قبل میخواویم کار با microوا را نیز تمرین کنیم.
میخواویم در انتهای ور کلمهی helloعالم ; را قرار دویم.
فایلی را که در مثال قبل ساختیم باز میکنیم ،به این منظور فرمان زیر را میزنیم:
>> vim vimTemp
qرا میزنیم و بعد کلید aراحاال کلید 0را میزنیم تا cursorبه ابتدای خط برود و ستتت س کلید
میزنیم .به این ترتیب vimدر حال ذخیره کردن ماکرو بر روی حافظهی با نام aاس .حاال کلید
fرا میزنیم و بعد oرا فشتتتار میدویم .به این ترتیب اولین حرف oکه بعد از cursorبود پیدا
میشتتتود و cursorبر روی آن قرار میگیرد .حاال کلید aرا فشتتتار میدویم و بعد; را میزنیم تا;
نو شته شود .کافی ا س escapeرا ف شار دویم و بعد کلید qرا میزنیم تا کار ذخیرهی ماکرو نیز
انجام شود .کاری که میخوا ستیم برای یک helloانجام شد برای اینکه برای hello۹۹۸دیگر نیز
انجام شود ،ابتدا از روی کیبورد ۹۹۸را میزنیم و بعد shiftرا نگه دا شته و کلید 2را میزنیم (که
ومان عالم @ میشتتود) و س ت س aرا فشتتار میدویم .به این ترتیب این کار برای ۹۹۸کلمهی
helloی دیگر نیز انجام میشتتود .در نهای :xرا فشتتار میدویم تا فایل ما ذخیره گردد و از vim
خارج شویم.
در زیر مجموعه دستتتوراتی vimبه ومراه حالتی ( )modeکه در آن میتوان از آنوا استتتفاده کرد
آمده اس .
فرمان در چه modeی این کلید را توضیحات
فشار دهم؟
i normal mode جه نوشتتتن متن یا دستتتور .با این کار در ومان جایی که
cursorقرار دارد وارد حال insertمیشود و منتظر گرفتن
ورودی میماند.
a normal mode ولی در نقطهی بعد از مکاننما شتتتروع به ومانند iاستتت
نوشتن میکند.
A normal mode اگر میخواوید در انتهای سطر چیزی بنویسید این فرمان را
بزنید.
J normal mode اتصال دوسطر (خط) به یکدیگر
dd normal mode حذف یک سطر
D normal mode حذف حروف از مکاننما تا انتهای سطر
x normal mode حذف یک حرف
r normal mode تعویض ( )replaceیک حرف
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 11۴
مثال :13,34s/hello/salam/g:سطر 13الی سطر 34جستجو شده و ورجا helloدیده شود به
جای آن salamقرار داده میشود.
مثال :34,76d:سطر 34الی سطر 76حذف خواوند شد.
نکته $ :به سطر آخر و یا به انتهای یک سطر اشاره و عالم ^ به ابتدای خط اشاره میکند.
مثال :12,$d:از سطر 12الی آخرین سطر حذف میگردد.
M,NtOیک ک ی از سطر Mالی سطر Nبه زیر سطر Oک ی میگردد.
مثال :12,64t98:سطور 12الی 64به بعد از سطر 98ک ی میگردند.
M,NmOسطور Mالی Nبه بعد از سطر Oمنتقل خواوند شد.
مثال :67,123m500:سطور 67الی 123به بعد از خط 500منتقل خواود شد.
تعریف abbreviation
ما در vimمیتوانیم abbreviationتعریف کنیم به این صورت:
:abbr p pardis
دویم pardisرا insert modeحرف pرا بزنیم و ستتت س کلید spaceرا فشتتتار حاال اگرد حال
مینویسد:
p + space
فصل 7دستگاهها ،فایل سیستمها و استاندارد سلسله مراتب
فایلسیستم
افزاری Hard Disk فرض کنید که یک وارد دیسک جدید تهیه کردهایم .پس باید بعد از نصب سخ
در ماشین ،آن را از جه نرمافزاری وم پیکربندی کنیم ..در این قسم ما روی یک flash memory
که تکنولوژی آن شبیه به واردوای SCSI1اس این کار را انجام میدویم .اولین فرمانی که میزنیم
این فرمان اس :
sdیعنی یا وارد SCSIاس یا .۲SATAحاال فرمان mرا میزنیم که به ما میگوید برای انجام ور
کاری چه فرمانی بزنیم )help( .فرمان pرا که بزنیم به ما اطالعاتی راجع به فلش که وصل کردیم و
میخواویم آن را پارتیشنبندی کنیم ،میدود .در خروجی اطالعاتی در مورد تعداد سیلندروا (برای
وارددیسکوا) ،تعداد سکتوروا و تعداد بایتهای آن را نشان میدود و اینکه چه تعداد پارتیشن روی
flash memoryوجود دارد.
حاال اگر فرمان dرا بزنیم میتوانیم آن پارتیشتتن را پاک کنیم و چون ما یک پارتیشتتن داشتتتیم
بدون پرستتیدن آن را deleteمیکند ،اگر بیشتتتر از یک پارتیشتتن بر روی فلش درایوی که وصتتل
کردیم بود ،از ما شتتمارهی آن را میپرستتید .حاال nرا میزنیم که کار اضتتافه کردن یک پارتیشتتن
جدید را انجام میدود که بعد تعیین میکنیم primaryیا extendedباشتتتد .پس اینکه از کجا
شروع شود که به صورت defaultاز اوّل میبا شد و س س سایز آن مثالً 100mbمیگذاریم که
M( +100Mرا بهصورت حرف بزرگ مینویسیم).
1 Small Computer System Interface
۲ )Serial ATA (Advanced Technology Attachment
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 11۸
مسئله :میخواویم این flashرا به سه پارتیشن تقسیم کنیم به این صورت:
نکته :اگر قصد خروج از fdiskبدون اعمال تنظیمات جدید را دارید کلید qرا بزنید.
device فرمان )Input Output Control( ioctlکه ب سیار مهم میبا شد در صورتی که بخواویم با
مستتتقیماً صتتحب کنیم این فرمان را میزنیم .اگر بخواوید مثالً یک نرمافزار بنویستتید که درجه
حرارت دیستتتک را به شتتتما بگوید IOCTLمیزنیم و از Controlerدیستتتک درجه حرارتش را
میپرسیم( .شاید قبلش باید با دیسک احوالپرسی وم بکنید!) .حاال که تمام شد این را میزنیم:
تا اینجا فقط پارتی شن ساختهایم ولی این به تنهایی فایده ندارد؛ مثل این ا س که سه تکه زمین
داریم ولی نه ویال و نه آپارتمانی در آن نساختهایم.
تا اینجا گام اوّل بود .حاال به ستتراغ گام دوّم میرویم که با فرمان mkfsشتتروع میشتتود :که این
11۹ فصل ۷دستگاهوا ،فایل سیستموا و استاندارد سلسله مراتب فایلسیستم
mountو unmountsکردن
صورت sdX وقتی که فلش درایو خود را به کام یوتر مت صل میکنید در م سیر /dev/یک فایل به
ایجاد می شود که Xمیتواند یکی از حروف الفبا با شد .مثالً در کام یوتر ما ،وقتی یک فلش و صل
میکنم به صورت /dev/sdbظاور می شود که ن شان دوندهی کل فلش ا س .چون بر روی فل شی
که من دارم یک پارتیشتتن fatتعریف شتتده استت ،پس یک فایل بهصتتورت /dev/sdb1نیز دیده
خواود شتتد .در صتتورتی که دو تا پارتیشتتن بر روی فلش داشتتتم ،یک فایل دیگر نیز بهصتتورت
/dev/sdb2نیز ظاور میشتتتد .نام فلش درایو من بهصتتتورت FILESاستتت که در مستتتیر
/media/hamid/FILESظاور میشتتتود .با فرمان زیر لیستتت فایلوای موجود در آن را مشتتتاوده
میکنیم:
>> ls /media/hamid/FILES
mountشده اس ،باید اول آن را
حاال میخواویم ،فلش را از کام یوتر جدا کنیم .ازآنجاکه فلش
unmountکنیم تا فایلوای موجود در آن آسیب نبیند .یادتان باشد قبل از unmountکردن،
فایلوایی را که از فلش باز کردهاید ،حتماً ببندید .فرمان زیر را میزنیم:
#>> umount /media/hamid/FILES
صتتتورتی که ب عد از unmountکردن دو باره حاال می توانیم فلش را از کام یوتر جدا کنیم .در
خواستیم ،فلش را mountکنیم ،کافی اس فرمان زیر را بزنیم:
#>> mount/dev/sdb1/mnt
به این ترتیب فایلوای موجود در فلش در مسیر /mntقابل دسترسی اس .
در ا صل کاری که این فرمان mountانجام میدود عبارت از دوختن یا و صل کردن یک پارتی شن
به یک دایرکتوری ا س ،یعنی ا سم یک پارتی شن ا سم یک دایرکتوری می شود .اینجا می شود یک
دایرکتوری را به آن اختصتتاص داد و ور کس change dirکند به فلش میرود که در پارتیشتتن 1
اس .
$cd /
$ mkdir /flash
$ mount/dev/sda/mnt/1 /flash
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۲۰
$ cd/flash
$ ls -l
میبینیم که خالی اس و چیزی در آن نیس .
حاال پارتی شن دوّم را mountمیکنیم .یادمان با شد که ما نگفتیم که جنس این پارتی شن چی س
( ext3یا fatیا ext2یا ،)...ولی خود سیستم متوجه شد که ext3وس .از کجا فهمید؟ از اطالعات
ابتدای دیسک .حاال این فرمان را میزنیم:
$ mount /dev/sda2
$ ls –l /mnt
در صورتی که بخواوید ونگام باال آمدن سی ستم پارتی شن خا صی mountشود کافی ا س که
تغییرات الزم را در فایل /etc/fstabانجام دوید .در صورتی که ونگام رو شن بودن سی ستم در این
فایل تغییراتی را اعمال کردید ،میتوانید با د ستور mount –aاثر آن تغییرات را بر سی ستم اعمال
کنید و نیازی به restartکردن نیس .
نکته :م سیر /mediaحاوی زیردایرکتوریوایی ا س که ممکن ا س جه mountکردن floppy
یا cdromبه کار رود .این مسیر شباو زیادی به مسیر /mntدارد.
سؤال :وقتی فرمان باال را میزنیم ،میبینیم که خالی نیس .یک فایل به نام lost+foundدر
آن اس .این فایل از کجا آمده اس ؟
پاستتخ :در لینوکس وقتی یک پارتیشتتن برایش درستت میکنیم یک دایرکتوری به اجبار با اندازه
نسبتاً بزرگ به نام lost+foundرا درس میکند و این دایرکتوری زیرش خالی اس .
موقعی که لینوکس را ن صب میکنیم یک دایرکتوری به ومین نام در س میکند که اگر سی ستم
crashکرد objectوایی که نا شناخته ا س را میبرد و در اینجا قرار میدود .یادمان با شد در زیر
این دایرکتوری استتم فایل را نمیبینیم .فقط شتتماره فایل را میبینید که شتتماره indexآن فایل
اس .این دایرکتوری خیلی بزرگ اس و موقع نصب لینوکس تعداد زیادی فایل درس میکند و
پاک میکند تا اندازهاش بیش از حد بزرگ شتتود که اگر فایلی پاک شتتد ،اینجا جا باشتتد که قرار
دود .در صورتی که دی سک fullبا شد ،چنین فایلی دور ریخته می شود و ممکن ا س اطالعات از
دس برود.
در گام بعدی میتوانیم برای پارتیشن مورد نظرمان labelدویم که البته این اختیاری اس .
با اجرای فرمان dumpe2fsمیتوانیم اطالعات بیشتری راجع به فایل سیستمی که تولید نمودهایم
مشاوده کنیم.
$ dumpe2fs /dev/sda
نکته :یادتان باشد که خروجی دستور باال و ومچنین خروجی دستور fdisk –lرا printبگیرید
و در اتاق کام یوتر نصب کنید که بدانید چه تعداد بکآپ از super blockداریم .به عالوه در
1۲1 فصل ۷دستگاهوا ،فایل سیستموا و استاندارد سلسله مراتب فایلسیستم
صورت داشتن اطالعات این دو دستور در صورتی که وارددیسکی خراب شود امکان بازیابی
اطالعات توسط تیموای خبرهی بازیابی اطالعات در صورتی که خروجی دو دستور باال را داشته
باشید ،بسیار بیشتر خواود بود.
پشتتتیبانی ( )backupکه از super blockمیگیریم نباید خیلی بزرگ شتتود زیرا اگر بزرگ شتتود و
تعداد زیادی back upدا شته با شد ف ضای دی سک پر می شود عموماً ور ۳ثانیه یکبار باید تعداد
زیادی را updateکند ولی فایدهای که دارد این اس که اگر سیستم crashکند در جاوای مختلف
نسخهی پشتیبان از super blockخواوید داش .
فضای swap
در ونگام نصب لینوکس اگر دق کنید ،امکان تعریف و داشتن فضای swapوجود دارد .بعد از نصب
وم به کمک ابزاروای مختلف ،مثل partedو ،gpartedامکان تعریف آن وس .
یکی از کاربردوای مهم فضای swapدر وقتی اس که فضای RAMدر حال پرشدن اس ،در این
صورت لینوکس از فضای swapبرای کمک به RAMاستفاده میکند .اما این تنها استفادهی فضای
swapنیس .اگر سیستمعامل دچار مشکل شود ،در این صورت coreفایل تولید میکند و ومینطور
اطالعات مهمی در فضای swapنوشته میشود که بعداً میتواند برای رفع اشکال سیستم استفاده شود.
بنابراین داشتن فضای swapحتی به اندازهی چند ده مگابای میتواند در مواقع حساس فوقالعاده
کاربرد داشته باشد .پس باال آوردن لینوکس بدون swapتوصیه نمیشود.
شتترایطی ممکن است پیش آید که در آن فضتتای swapدر نظر گرفته شتتده نیز کافی نباشتتد .در
چنین شتتترایطی یکی از راهوا استتتتفاده از فایل بهعنوان swapاستتت .یک فایل صتتتد مگابایتی
میسازیم:
#$ dd if=/dev/zero of=/tmp/newswap bs=1M count=100
ساخته شد ،فقط باید rootبه آن دسترسی داشته باشد: بعد از آنکه فایل
#$ chmod 600/tmp/newswap
حاال که فایل ساخته باید آن را تبدیل کنیم به ،swapفرمان زیر را میزنیم:
#$ mkswap/tmp/newswap
و با زدن فرمان زیر آن را فعال میکنیم:
#$ swapon /tmp/newswap
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۲۲
توضیح فرمان
مجوزوای فایل داده شده را به عدد مبنای وش وارد شده تغییر
میدود .که به ترتیب rwxیعنی write ،readو execute
را نشان میدود .مثالً برای اینکه فایلی ali.jpgتوسط دیگران
chmod octal file
قابل خواندن باشد و توسط صاحب آن قابل خواندن و نوشتن
فرمان chmod 644 ali.jpgرا میزنیم .برای اطالعات
بیشتر به صفحهی man chmodمراجعه کنید.
مالکی فایل یا دایرکتوری داده شده را به نام کاربری داده شده
تغییر میدود .برای اطالعات بیشتر به man chownمراجعه chown ownerName file
نمایید.
سطحدسترسی به فایل در ونگام ساخته شدن آنman .
umask
umaskرا مطالعه کنید.
تغییر گرووی که فایل متعلق به آن اس . chgrp
ساختن لینک
در لینوکس ما میتوانیم به یک فایل تا ۲۵۵تا اسم بدویم (با استفاده از .)hard linkفرمان lnکه
مخفف linkمیباشد در لینوکس برای دادن چندین اسم به یک فایل به کار میرود .ابتدا یک فایل
میسازیم با فرمان ls –lمشخصات آن را میبینیم که اندازهی آن صفر اس .
>> > F1
>> ls-l
اگر بخواویم دو تا اسم دویم از فرمان lnاستفاده میکنیم .خوب اس که manualآن را ببینیم:
>> man ln
>>ln F1 F2
>>ln F1 F3
حاال F1سه تا اسم دارد .پس فرمان lnکه مخفف linkاس و چندین کاربرد دارد:
.1فایلوای با نام طوالنی را میتوانیم یک اسم کوتاه بدویم.
.۲به یک فایل میتوانیم چندین نام به زبانوای مختلف بدویم.
.۳تغییرات در ور چند فایل بهصورت ومزمان اعمال میشود.
.۴با پاک شدن یکی از فایلوا در صورت وجود نام دیگر بهطور کامل نابود نمیشود ،چون ۲تا اسم
دارد از روی دیسک پاک نمیشود..
ابزارهای جستجو
اگر در لینوکس بخواویم یک فایل را جستتتتجو کنیم مثالً فایلی با نام مشتتتخص که میدانیم چند
حرفی و یا با یک حرف مشخصی شروع می شود و یا با عدد شروع می شوند و یا ...به روشوای زیر
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۲۶
با شروع از دایرکتوری rootبه دنبال فایل با نام داده شده میگردد.
find / -name
filename
با شروع از دایرکتوری rootبه دنبال فایلی که در نام آن رشتهی داده شده وجود find / -name
دارد ،میگردد. ”*“*filename
پایگاهدادهی مربوط به فایلوای موجود در تمام فایلسیستموای الحاق شده به به
دایرکتوری rootلینوکس را ایجاد به بهروزرسانی میکند .فایل تنظیمات مربوط به updated
آن در مسیر /etc/updated.confقرار دارد.
محل قرار گرفتن ،binaryکد منبع ،و صفحهی راونمای مربوط به یک دستور
whereis
لینوکس را نمایش میدود .مثالً بزنید whereis ls
محل قرار گرفتن فایل binaryدستور مورد نظر را نشان میدود .مثالً بزنید: which
1۲۷ فصل ۷دستگاهوا ،فایل سیستموا و استاندارد سلسله مراتب فایلسیستم
Quotaچیست؟
در مفهوم فارسی به نام سهمیهبندی کردن چیزی شناخته میشود .در دنیای کام یوتر Quotaبه
مفهوم فضای از دیسک که اس که در اختیار کاربر قرار داده میشود و به adminاین امکان را
میدود که قبل از اینکه کاربر بیش از اندازه از پارتیشن و فضای دیسک بطور کامل استفاده کند
مطلع شود .که به آن Disk quotaگفته میشودDisk quota .میتواند بر روی فضای اختصاص داده
شده Diskکنترل داشته باشد که به آن Blockگفته میشود
فعال کردنQuota
نکته :1فعال کردن Quotaتنها با سطح دسترسی rootقابل انجام میباشد.
نکته : ۲قبل از فعال کردن Quotaالزم ا س تا ف ضای دی سک مورد نظر آماده شود برای محقق
شدن این مورد .مراحل زیر باید انجام شود.
:1بررسی دیسکوای موجود بر روی سیستم توسط دستورfdisk –l
:۲ساختن فضای مناسب ،درصورت موجود بودن تنها کنترل شود.
oساختن پارتیشن الزم
oفرم کردن پارتیشن ساخته شده
برای فعال کردن Quotaالزم اس تا فایل fstabدر مسیر /etc/ویرایش شود .قبالً در مورد فایل
fstabدر این کتاب صحب شده اس .برای یادآوری fstab ،فایلی اس که اطالعات الزم در مورد
فایل سیستموایی که قرار اس سیستم عامل در موقع روشن شدن به منظور mountکردن فایل
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۲۸
سیستموا از آن استفاده کند وجود دارد که داری ۶قسم میباشد .برای فعال کردن Quotaالزم
اس توسط ویرایشگر viو یا vimفایل fstabرا از مسیر etc/fstab /به شکل زیر ویرایش شود که در
قسم چهارم از فایل fstabدو گزینه با نام usrquotaو qrpquotaاضافه گردد .این دو اصطالح جه
فعال کردن Quotaضروری بوده و بسته به اینکه محدودی در سطح کاربر میباشد و یا گروه اضافه
میشود.
ایجاد دیتابیسQuota
ایجاد دیتابیس Quotaباید از دستور زیر استفاده شود. در جه
quotacheck [-gubcfinvdMmR] [-F quota-format] -a | filesystem
برر سی یک فایل سی ستم از جه ،disk usageو ایجاد ،برر سی و تعمیر ابزار quotacheckجه
فایلوای quotaبه کار میرود.
بعد از اجرای دستور باال دیتابیس مربوط به Quotaساخته می شود که به صورت دو فایل با ناموای
aquota.user and aquota.groupاس .
نکته :درصورتیکه فایلوای ساخته شده از نوع quota.user or quota.groupباشند این به این مفهوم
اس که ورژن quotaشماره 1اس و درصورت وجود فایل اول ورژن ۲میباشد .دستور الزم جه
تبدیل ورژن قدیم به جدید convertquotaمیباشد.
Quota Policy
برای پیاده سازی سیاس وای quotaباید از دستور edquotaاستفاده کرد که ابزاری برای ایجاد
سیاس وای سهمیهبندی بر اساس کاربر و یا گروه کاربری میباشد.
1۲۹ فصل ۷دستگاهوا ،فایل سیستموا و استاندارد سلسله مراتب فایلسیستم
repquota
دستوری جه گزارشگیری از محدودی اعمال شده مورداستفاده قرار میگیرد .که در helpبه آن
summarize quotas for a filesystemگفته میشود .داری ساختار زیر میباشد که مهمترین آنوا
augvمیباشد.
]/usr/sbin/repquota [-avtsiug] [-c | -C] [-t | -n] [-F format-name
a- Report on all filesystems indicated in /etc/mtab to be read- write with quotas
u- Report quotas for users.
g- Report quotas for groups.
v- Report all quotas, even if there is no usage Be also more ver-bose about quotafile
information
فرمان quotaon
اجرای این فرمان باعث میگردد که عمل کنترل فضای گرفته شده توسط کاربران فعال گردد.
فرمان quotaoff
اجرای این فرمان باعث میگردد که عمل کنترل فضای گرفته شده توسط کاربران غیر فعال گردد.
فصل 8نوشتن اسکریپت و مدیریت دادهها
در این فصل با نوشتن چند اسکری در شل با برنامهنویسی شل آشنا خواویم شد و از این امکان
برای مدیری دادهوا و ومچنین مدیری سروروا استفاده خواویم کرد.
فصل را با یک مثال ادامه میدویم.
down مثال :برنامهای بنویسید که یک IPبگیرد و کام یوتر مربوطه را کنترل کند و اگر سیستم
بود به adminیک ایمیل ارسال کند.
نکته :چطور میشود فهمید که یک کام یوتر upاس یا down؟ فرمان pingرا اجرا میکنیم.
>> ping 192.168.100.1
special ۵۶حرف که عبارت اس از حروف الفبا به اضافه ،ICMP1 pingبا استفاده از پروتکل
characterمیفرستد و اگر دوباره برایش پس فرستاد میفهمیم که upاس .
) ping (packet internet Groperبه معنی در تاریکی به دنبال چیزی گشتتتن اس ت ping .بیشتتتر
برای رفع ا شکال ا ستفاده می شود .اگر ما در این پروژه pingکنیم مدام در حال پر سیدن و جواب
گرفتن استتت و اگر ۶ماه بعد وم بیاییم باز وم ومین کار را دارد انجام میدود .حاال صتتتفحهی
راونمای pingرا بخوانید و بگویید چه کار کنیم که 1بار بیشتتتتر pingنکند .پس از آپشتتتن –c1
استفاده میکنیم که یک بار بیشتر نفرستد.
>> ping 192.168.100.1
>> vi test2
#!/bin/bash
به این خط که با عالم ! #شروع شده shebang ،میگویند .با نوشتن این خط میگوییم که این
نرمافزار را چه کسی اجرا میکند و در این مثال bashآن را اجرا میکند .خط زیر صفحه را پاک
میکند.
clear
`x=`date
read -p "please enter ip:" ip
scriptوا به این صورت نوشته شدهاند (چون ور دو طرف فقط یک xداریم و xوا مساوی وستند
معلوم میشود که ما enterزدیم).
مثال :میخواویم پستتورد دوّم را برای user idایجاد کنیم و اگر پستتورد دوّم غلط بود یک ایمیل
برای adminو صاحب useridبرود.
برای اینکه بتوانیم این تمرین را حل کنیم باید بدانیم که موقعی که ما loginمیکنیم چه اتفاقی
میافتد .اگر ls -aرا بزنید تمام فایل وایی را که وجود دارد ،میبینید .وقتی شتتتما در لینوکس
useridمی سازید فرد ور کاری که انجام دود یک فایل نقطهدار برای آن ساخته می شود که خود
فرد وم از آنوا خبر ندارد .برای اینکه historyخود را ببینید این فرمان را بزنید:
>> less.bash-history
بعدی .bash_profileاستتت که معادل ما ۴تا فایل داریم که با .bashشتتتروع میشتتتود .فایل
autoexec.batدر ویندوز اس که به محض اینکه loginکنید این فایل اجرا می شود .که میتوانیم
در این فایل تغییراتی وم ای جاد کنیم که مثالً بعد از اینکه loginکردیم یک پیغام مثالً salam
بنویسید.
”echo “salam
حاال تمرین را حل میکنیم:
>> vi.bash_profile
trap "echo enter second password" 2
read –s-p "plz enter second pass:" pass
if [p$pass!= pardisp] then
echo $user on `date` hacked | mail -s hacked admin
exit
else
...
حواسمان باشد در ifاگر پسورد غلط بود قبل از elseیک exitوم باید بگذاریم.
-اولین مشتتکل این است که پستتورد دیده شتتد باید کاری کنیم که دیده نشتتود ،میآییم
بنابراین آپشن -sرا به readاضافه میکنیم.
-مشکل دوّم این اس که میخواویم enterزدیم promptنگیرد.
نکته :فرمان suرا که بزنیم به معنی switch userمیباشتتد یعنی از یک user idبه user idدیگر
رفتن و اگر ( -)dashجلوی آن بگذاریم به معنی fullمیباشد و به rootمیرود.
ال
عالوه بر ifبرای نوشتتتتن استتتکری در bashامکاناتی ومچون whileو forنیز وجود دارد .مث ً
فرمان زیر:
$ for a in {1..10}; do echo $a; done
اعداد یک تا 1۰را چاپ خواود کرد .البته ومین کار را با دستور
$ seq 10
نیز میتوانید انجام دوید.
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۳۴
تمرین :فرمان زیر را بزنید و بعد بررستی کنید که testبهعنوان یک shell built-inچه کاری انجام
میدود:
$ help test | vi -
فایلوای پیکربندی که در زیر دایرکتوری /etcو ستند ،فایلوای در سطح کل سی ستم 1و ستند و
بر کل سیستم اثر میگذارند .برای bashچیدن فایل مهم وجود دارد که در جدول زیر آمده اس :
محل فایل برای شل non-login محل فایل برای شل login نوع فایل
/etc/profileو فایلوای موجود در
/etc/bashrcیا /etc/bash.bashrc جهانی (کل سیستم)
/etc/profile.d
~/.profile ،~/.bash_loginیا
~/.bashrc کاربر
~/.bash_profile
توجه داشتتتته باشتتتید که از یک دیدگاه دو نوع شتتتل داریم .مثالً وقتی شتتتما در حال عادی در
سیستمی که بر روی آن محیط گرافیکی نصب اس باال میآیید و بعداً یک terminalباز میکنید،
شتتلی که با آن روبهرو وستتتید ،یک شتتل non-longinاس ت .ولی مثالً وقتی کلید ctrl+alt+f1را
فشار دوید ،در این صورت با یک شل loginروبهرو خواوید بود.
تذکر :اگر ctrl+alt+f1را ف شار دادهاید ،برای برگ شتن به محیط گرافیکی میتوانید ctr+alt+F7را
فشار دوید.
ومانند اسکری وایی که برای اجرا شدن در ونگام ورود در نظر گرفته شده اس ،اسکری وایی
نیز برای ونگام خروج وجود دارد که از آن جمله ~/.bash_logoutمیباشتتتد که مختص ور کاربر
اس .
در ونگام افزودن کاربر جدید ،چه از طریق واستتتط گرافیکی و چه از طریق دستتتتوراتی ومچون
useraddیا ،adduserاطالعاتی که در مستتیر /etc/skelقرار دارد به دایرکتوری homeکاربر جدید
ک ی میشود .بنابراین ورگاه بخواوید فایلوای اولیهای ،مثالً فایل قوانین کاری در سیستموا ،برای
کاربران جدیدی که ساخته شده ا س ک ی شود ،یا مثالً لینک آن ک ی شود که ف ضا وم نگیرد،
میتوانید آن را در مسیر /etc/skelقرار دوید.
یکی از دستتتورات مهم که یک دستتتور built-inدر bashاس ت ،دستتتور aliasمیباشتتد که جه
تعریف کردن نام دیگر برای یک دستتتتور و راحتی کار استتتتفاده میشتتتود .مثالً فرض کنید که
میخواوید دستتتور cpک ی ،ومواره بهصتتورت interactiveاجرا شتتود ،و فایلوا را بدون پرستتیدن
سؤال از شما ،روی وم ننویسید .کافی اس فرمان زیر را بزنید:
”$ alias cp=”cp –i
1 system-wide
1۳۵ و مدیری دادهوا فصل ۸نوشتن اسکری
اگر میخواوید ،دستتتتور باال برای ومیشتتته در کل ستتتیستتتتم بماند ،میتواند خط باال را در فایل
/etc/bash.bashrcاضافه کنید.
دستتور aliasرا در خط فرمان بزنید و تمام aliasوایی را که بر روی ستیستتم شتما تعریف شتده
اس را مشاوده خواوید کرد.
برای خواندن اطالعات از یک پایگاهداده ،مثالً postgresqlیا ،mysqlالزم استتت که زبان آن را
بدانید .در این ق سم مخت صری در مورد SQLصحب خواویم کرد .یکی از ب ستهوای پایگاهداده،
mysqlیا postgresqlرا انتخاب کنید و بر روی سی ستمتان ن صب نمایید .حال با برخی د ستورات
آنوا آ شنا می شویم .الزم ا س که بعد از ن صب آنوا بر روی سی ستم وارد آنوا شوید و تا بتوانید
دستورات زیر را وارد کنید.
ساختن پایگاهدادهCREATE DATATBASE jaded; :
;USE jaded استفاده از پایگاه داده با نام :jaded
ستتتتاختتتتتن یتتک جتتدولCREATE TABLE objects (name VARCHAR(30), color :
;))VARCHAR(20
;)”INSERT INTO objects VALUES (“lizard”, “green نوشتن داده در جدول:
خواندن داده از جدولSELECT * FROM objects; :
در صورتی که بخواوید بر روی انتخاب خودتان شرطی بگذارید ،میتوانید از WHEREاستفاده
کنید.
دستتتور DELETEبرای حذف کردن دادهوا از جدول به کار میرود .برای مرتبط کردن از دستتتور
ORDER BYکه به دو صتتورت صتتعودی و نزولی اس ت ،میتوانید استتتفاده کنید .ومچنین برای
د ستهبندی SELECTانجام شده میتوانید از GROUP BYا ستفاده نمایید .برای الحاق دادهوای
موجود در چندین جدول نیز میتوان از دستور JOINاستفاده کرد.
فصل 9واسطهای کاربری
توزیع وای مدرن لینوکس که برای نستتتخهی Desktopدر نظر گرفته شتتتدهاند واستتتط کاربری
گرافیکی )GUI( 1ارائه می کنند که امکان کار را برای کاربران مبتدی فراوم و ومچنین در برخی
موارد ستترع کار را برای کاربران حرفهای باالتر میبرد .ومچنین مثالً برای خواندن فایلوای pdf
الزم است که واستتط گرافیکی داشتتته باشتتید .بنابراین داشتتتن واستتط گرافیکی برای برخی کاروا
ضتتروری استت .در لینوکس GUIاصتتلی با نام X Window Systemیا به اختصتتار Xشتتناخته
میشود.
اعمال تنظیمات برای سی ستم Xتقریباً ساده ا س .فایل تنظیمات آن /etc/X11/xorg.conf
اس .دستور زیر را میزنیم تا صفحهی راونمای آن را مشاوده کنیم:
$ man xorg.conf
البته توجه داشته باشی د که در صورتیکه که با واسط گرافیکی لینوکس را باال آورده باشید ،امکان
اعمال تنظیمات به کمک خود واسط گرافیکی نیز وجود دارد .در صورتی که فرمان زیر را بزنید،
فایل تنظیمات توسط Xاز نو با توجه به وضعی سیستم ساخته خواود شد:
$ Xorg –configure
display یک ترمینال باز کنید و دستور xhost +aliرا بنویسید .این دستور میگوید که .۲
ی را که از سرور aliآمده اس را قبول کن.
از طریق شبکه و از کام یوتر وحید در کام یوتر علی الگین کنید. .۳
در کام یوتر علی دستور export DISPLAY=vahid:0.0.را بزنید. .۴
حال برنامه وای خود را که دارای محیط گرافیکی وستند بر روی کام یوتر علی اجرا کنید. .۵
ال دستور lofficeرا کهمحیط گرافیکی آنوا بر روی کام یوتر وحید باز خواود شد .مث ً
بزنید ،آفیس باز میشود.
درنهای که کارتان تمام شد ،بر روی کام یوتر وحید دستور xhost –aliرا بزنید. .۶
نکته :یادتان باشد که در ونگام sshکردن از کام یوتر وحید به علی باید از آرگومان –Xبزرگ برای
sshاستفاده کنید که بتواند محیط Xرا forwardکند.
برای ن مایش اطال عات ،اطال عات مربوط به پنجره وای گرافیکی ،یک ابزار خط فر مان به نام
xwininfoداریم .اول در محیط گرافیکی لینوکس یک ترمینال باز کنید .بعد فرمان xwininfoرا
در آن بزنید .بعد این فرمان از شتتتما میخواود که بر روی پنجرهای که اطالعات مربوط به آن را
می خواوید با ماوس کلیک کنید .اگر این کار را انجام دوید ،اطالعات آن را در خط فرمان خواود
نوش .
اگر میخواوید در مورد X serverی که بر روی ستتیستتتمتان در حال اجرا استت اطالعات
کستتب کنید ،ابزاری به نام xdpyinfoبه این منظور در نظر گرفته شتتده است .قابلی وای ستترور،
تنظیمات آن ،نحوهی اتصتتتاالت بر روی شتتتبکه بر آن و ...برای X serverرا میتوانید با این ابزار
پیکربندی کنید.
گرافیکی در ونگام باال آمدن اجرا نشتتود .برای برگرداندن وضتتعی به حال قبلی وم میتوانید از
دستور sudo update-rc.d –f gdm defaultsاستفاده کنید.
در صورتی که در خط فرمان وستند و محیط گرافیکی اجرا نشده اس دستور & nohup startxرا
بزنید nohup .باعث می شود در صورتی که ترمینال فعلی ب سته شد ،باز وم محیط گرافیکی به کار
خود ادامه دود و & باعث می شود که اجرای محیط گرافیکی باعث ن شود که خط فرمان فعلی که
در آن وستید ،مسدود شود.
در CentOSمی توانید دستورات زیر را دنبال کنید تا محیط گرافیکی در ونگام باال آمدن سیستم،
اجرا نشود:
su
cp /etc/inittab /etc/inittab.orig
vi /etc/inittab
و خطی را که به شکل
id:5:initdefault:
اس به
id:3:initdefault:
تغییر دوید .دفعهی بعدی که سیستم باال میآید محیط گرافیکی اجرا نخواود شد.
یادتان با شد که ممکن ا س برخی توزیعوا دچار تغییر شده با شند .در ور صورت یک روش دیگر
وم این ا س که د ستور runlevelرا بزنید و عدد خروجی را م شاوده کنید .س س به دایرکتوری
/etc/rc5.dدر صورتی که عددی که دیدهاید 5بوده اس ،بروید و در زیر این دایرکتوری تنظیمات
Xرا تغییر دوید .البته این روش بهعنوان اولین روش ا صالً تو صیه نمی شود و حتماً قبل از تغییر
دادن از فایلوا پشتیبان تهیه کنید.
فایلوای پیکربندی محیط گرافیکی KDEدر مسیر ،/etc/X11/kdmبرای XDMیا ومان محیط
پیشفرض گرافیکی در مسیر ،/etc/X11/xdmبرای /etc/X11/gdmقرار دارد که میتوانید آنوا را
بررسی و تغییر دوید.
توجه دا شته با شید که وا سطوای گرافیکی ب سیار زیادی وجود دارند که میتواند بر روی سی ستم
خود آنوا را دا شته با شید و حتی امکان ن صب و دا شتن چند تا از آنوا را بر روی یک سی ستم
وجود دارد .مثالً XFCEو LXDEدو وا سط گرافیکی سبک gnome 3 ،رایجترین وا سط KDE ،با
طراحی متفاوت ،و باالخره Unityواسط مربوط به Ubuntuاس .
دوید.
اگر در محیط گرافیکی در قستتم تنظیمات دنبال sticky keysبگردید میتوانید تنظیمات آن را
تغییر دوید .در صورتی که این گزینه فعال با شد ،موجب می شود که کلیدوای Alt ،Ctrlو Shift
وقتی که فشار داده میشوند بهصورت ” “stickبمانند ،و بر کلید بعدی که فشار داده میشود ،حتی
اگر Alt ،Ctrlیا Shiftرا روا کرده باشید ،اثر بگذارند.
تنظیمات Mouse keysامکان شبیهسازی و استفاده از ماوس را به کمک کیبورد فراوم میآورد.
در صورتی که برخی کلیدوا را بدون استفاده زیاد فشار میدود ،در صورتی که گزینهی Bounce
keysفعال باشد ،سیستم به شما اخطار خواود داد.
امروزه امکانات مختلفی بر روی ستتیستتتمعاملوا وجود دارد که ممکن استت در محیط گرافیکی
لینوکس شما نیز با شد ،از جمله High contrast desktop themesبرای باال بردن خوانایی بر روی
متتا ن ی توروتتای قتتد ی میscreen ،one-screen keyboard ،Braille display ،Screen reader ،
.mouse gestures ،magnifierتوجه داشتتته باشتتید که کیبورد روی صتتفحه در محیط gnomeرا
بهصورت GOK1وم نمایش میدوند .برنامهی screen readerی که در محیط gnomeاز نسخهی
2.16و جدیدتر قرار گرفته Orca ،نام دارد .ابزار دیگری به نام emacspeakوجود دارد که به افراد
کم بینا کمک میکند که از سیستم استفاده کنند.
جه اضافه کردن یک کاربر جدید به سیستم میتوانید از دستور useraddاستفاده کنید.
بهعنوانمثال:
$ useradd –d /data/projects –u 9876 –g 100 ali
$ su passwd ali
با دستورات باال یک کاربر جدید با نام aliساختیم که دایرکتوری خانهی آن در مسیر /data/projects
اس و برایش useridخاصی ( )۹۸۷۶و ومینطور groupidخاصی در نظر گرفتیم و بعد از ساختن
نیز برایش passwordجدید تنظیم نمودیم .حال اگر فایل /etc/passwdرا مشاوده کنید ،یک خط
بهصورت زیر به آن اضافه شده اس :
ali:x:9876:100::/data/projects:/bin/bash
که اولی نام کاربری ،دومی xاس که ومان عالمتی اس برای پسورد که بعداً توضیح خواویم داد،
سومی فیلد ،userIDچهارمی ،groupIDپنجمی دایرکتوری خانه ،و ششمی شل پیش فرض این
کاربر اس .
ازآنجاکه فایل /etc/passwdبرای برای ومه قابل خواندن ا س ،در صورتی که پ سورد کاربر در این
فایل حتی به صورت hashشده قرار گیرد ،امکان وک کردن آن وجود خواود داش .برای حل این
مسئله مفهوم shadowدر نظر گرفته شد .در زیر دایرکتوری /etcفایلی به اسم shadowقرار دارد
که برخالف فایل /etc/passwdتوسط ورکسی قابل خواندن نیس .دستور زیر را بزنید:
$ shadowconfig off
aliبه جای xیک سری حال اگر فایل /etc/passwdرا باز کنید در دومین فیلد مربوط به کاربر
کاراکتر خواوید دید که ومان hashشدهی رمز عبور این کاربر اس .این وضعی کمی خطرناک
اس ،چون یک فرد ناشناس وم به فایل passwdدسترسی دارد و میتواند با بررسی این رشته و
البته با تالشوای متعدد به رمز عبور aliدس پیدا کند .دستور زیر را میزنیم:
$ shadowconfig on
حال دیگر آن رشته در فایل passwdوجود ندارد و به جای آن xقرار گرفته اس ،در عوض این
رشته در فایل /etc/shadowدیده میشود .ورگاه کاربر علی بخواود وارد حساب کاربریاش شود،
سیستم رمز عبوری را که توسط او وارد میشود را به hashتبدیل میکند و با مقدار hashذخیره
شده در /etc/shadowمقایسه میکند که اگر درس بود وی ،وارد سیستم میشود.
برای حذف یک کاربر از سی ستم از د ستور userdelو ومچنین برای تغییر م شخ صات یک کاربر و
گروهوایی که وی در آن عضو اس از usermodاستفاده میکنیم.
در برخی سیستموا ممکن اس سیاس تغییر دورهای رمز عبور داشته باشیم .به کمک دستور
chageمیتوان اطالعات زمان انقضای رمز عبور کاربر را تغییر داد.
تمرین :با اکان rootو به کمک دستور chageکاری کنید که بعد از یک وفته از کاربر aliخواسته
شود که رمز عبورش را تغییر دود.
پاسخchage –M 7 ali :
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۴۲
اگر میخواوید که time zoneخودتان را تغییر دوید قدموای زیر را دنبال کنید:
.1با کاربر rootوارد شوید و cd /etcرا بزنید.
.۲محتوای دایرکتوری /usr/share/zoneinfoرا مشاوده نمایید و فایل مربوط به منطقهی
خود را پیدا کنید.
.۳دستور rm /etc/locatimeرا بزنید.
.۴دستور ln –s /usr/share/zoneinfo/your_file_here /etc/localtimeرا بزنید.
localeچیست؟
در لینوکس locale ،ابزاری برای م شخص کردن زبان ،ک شور و واحد پول و سایر م شخ صات یک
کام یوتر استتت .به تجربه دیدهام که تنظیم کردن localeمعموالً برای کاربران از طریق واستتتط
گرافیکی انجام میپذیرد .ولی از طریق خط فرمان وم این اطالعات را میتوانید تنظیم و مشتتاوده
کنید:
$ /usr/bin/locale
دستتتور locale –aنیز اطالعاتی مشتتابهی را به شتتما نشتتان میدود .میتوانید با exportکردن
متغیروای محیطی که در باال م شاوده کردید ،اطالعات localeخود را تغییر دوید .برای حفظ این
تغییرات میتوانید آنوا را در ~/.bashrcیا /etc/profileقرار دوید.
NTP
به کمک این ابزار کام یوتر ما از یک منبع ساع را میخواند و بر ا ساس آن ساع خود را تنظیم
میکند .این کار در بازهوای زمانی قابل تنظیم میتواند انجام شود .اولین کاری که باید برای تنظیم
NTPانجام دوید یافتن یک سرور timeبر روی اینترن یا تنظیم یک سرور ،timeدر صورتی که
شبکهی شما از داخلی ا س ،در داخل شبکهی خودتان ا س .سروروای عمومی timeدر آدرس
support.ntp.org/bin/view/Servers/WebHomeقابل م شاوده ا س .ومچنین pool.ntp.orgدر
بردارندهی سروروایی اس که بهصورت داوطلبانه بهعنوان public NTP serverفعالی دارند.
بعد از اینکه NTPرا به کمک package managerبر روی ستتتیستتتتم خود نصتتتب کردید ،فایل
/etc/ntp.confرا باز کنید این فایل شامل خطوطی به شکل زیر اس :
server clock.example.com
daemonمربوط به NTPباال باشد، ور کدام از این خطوط به یک سرور NTPاشاره دارد .ورگاه که
تالش میکند که به این سروروا متصل شود و ساع سیستم را به روز کند .ومچنین برای restart
کردن این dameonمیتوانید دستور زیر را بزنید:
# /etc/init.d/ntpd restart
ستور ntpqا ستفاده کنید که برای اطمینان از اینکه NTPدر حال کار کردن ا س ،میتوانید از د
یک برنامهی تعاملی اس که فرمانوای مختلفی را میپذیرد.
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۴۶
ومین که چند سرور NTPراه راهاندازی کردید ،میتوانید NTP clientرا بر روی سایر کام یوتروا
پیکربندی کنید که به آنوا ا شاره کنند .این تنظیمات م شابه ومان تنظیمات انجام شده بر روی
سرور اس .در برخی موارد راه سادهتر برای تنظیم ساع بر روی یک clientاستفاده از دستور زیر
اس :
# ntpdate clock.example.com
که در آن clock.example.comآدرس سرور NTPاس .
ابزار hwlock
این ابزار برای مشاوده و تنظیم ساع سخ افزار سیستم اس .آرگومان –utcمیگوید که از زمان
UTCاستتتفاده کند و آرگومان –systohcمیگوید که از زمان فعلی نرمافزار (ستتیستتتمعامل) برای
تنظیم ساع سخ افزار استفاده کند.
بررسی syslogd
syslogd
بنویس
logfile
بنویس
پیغام
console
klogd
اگر یک پروسس تصمیم بگیرد پیامی را logنماید آن را به پروسس syslogdارسال مینماید و
معموالً پیاموا در فایل /var/log/messagesنوشته میشوند .فرم logدر فایلوای logبهصورت
زیر میباشد (البته bashاین قوانین را دقیق اجرا نمیکند):
tm_stmp host application[pid]: message
که در آن tm_stmpتاریخ و ساع واقعه host ،نام کام یوتری که پیام در آن تولید شده،
] application [pidنام برنامه و شمارهی پروسس مربوطه ،و messageپیغامی اس که ثب شده
اس .
سؤال :چرا اسم hostدر تمام خطوای فایل logنوشته میشود؟
پاسخ :لینوکس را میتوان بهعنوان log serverاستفاده کرد .فرض کنید در یک سازمان ۵۰سرور
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۴۸
لینوکس داریم که ور کدام logوای خودشان را تولید میکنند .بررسی logوای تکتک این سروروا
کاری دشوار و زمانبر اس .در عوض میتوان یک سرور مرکزی بهعنوان log serverتعیین کرد که
logوای سایر سیستموا بر روی آن بیاید .بنابراین با استفاده از نام hostمشخص میشود که کدام
logمربوط به چه کام یوتری اس .
نکتهی بسیار مهمی در مورد راهاندازی log serverوجود دارد .فایل /etc/servicesرا با وم مشاوده
میکنیم:
>> less/etc/services
.در اکثر پورتوا udpو tcp در این فایل نام سرویسوای مختلف و شمارهی پورت آنوا آمده اس
برای سرویس یک سانی در نظر گرفته شده ا س اما پورت ۵1۴اینگونه نی س .پورت tcp ۵1۴
متعلق به shellا س و syslogوم از udpا ستفاده میکند .پس بهعنوان یک متخ صص لینوکس
این نکته را به خاطر داشتتته باشتتید .پس باید بتوانید کار راهاندازی log serverبرای لینوکس را با
استتتتفاده از امکانات این پورت انجام دوید .بهعنوانمثال میتوان log serverرا به گونهای تنظیم
کرد که historyتمام کام یوتروای موجود در شتتبکه را در خود ذخیره کند به این ترتیب میتوان
لیس ت commandوایی را که کاربران مختلف وارد کردهاند را داش ت و در صتتورت بروز مشتتکل،
بررسی کرد.
با سطح دسترسی rootفرمان زیر را اجرا میکنیم تا محتویات logسیستم را بررسی کنیم:
#>> less /var/log/messages
با بررسی این logفایل اطالعات زیادی را در مورد فعالی وای مختلف بر روی سیستم میتوان به
دس آورد.
logوا با توجه به حساسیتشان دستهبندی میشوند .ورچه عدد مربوط به logبه صفر نزدیکتر
باشد حساسی آن بیشتر اس .
رتبهبندی واژه شرح
سیستم عمالً غیر قابل
0 emergencies
استفاده است
باید فوراً عکسالعمل نشان
1 alerts
دهیم
2 critical شرایط بحرانی است
3 errors خطایی در سیستم وجود دارد
4 warnings اخطار
شرایط عادی است ولی
5 notifications
مشکالتی وجود دارد
6 informational جهت اطالع
پیامهای مربوط به
7 debugging
debuggingسیستم
مثالً باال رفتن دمای cpuیک پیغام emergencyاس ت .مثالً اگر swapدر حال پر شتتدن باشتتد با
شتترایط alertروبهرو وستتتیم .یا مثالً اگر درجه حرارت ستتیستتتم باالی ۸۰درجه باشتتد شتترایط
criticalاس .این اعداد از صفر تا وف وستند و با سه بی در مبنای دو قابل نمایش وستند.
در فایل /etc/syslong.confتنظیمات مربوط به syslogdقرار دارد .این فایل بسیار ساده اس ،اما
قدرت ب سیار زیادی دارد .خطوط کامن در این فایل با عالم #شروع می شوند و سایر خطوط
قالب زیر را دارند:
facility.priority action
logرا تولید کرده اس ؛ priorityدر عبارت باال facitilyنمایانگر برنامه یا ابزاری اس که پیغام
اولوی آن پیغام را نشان میدود و actionمیتواند یک فایل ،یک کام یوتر دیگر یا محلی باشد که
پیغام مربوطه را دریاف میکند.
مثال:
*mail. /var/log/mail
این خط در /etc/syslog.confنشان میدود که تمام پیغاموای logمربوط به mailدر فایل
/var/log/mailنوشته میشوند .بیشتر تنظیمات اولیه در فایل /etc/syslong.confمشابه مورد
باالس .
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۵۰
مثال:
* *.emerg
emergencyبه که تمام پیغاموای با اولویاین خط در فایل /etc/syslong.confبه این معناس
تمام کاربرانی که log inکردهاند ارسال شود.
حاال دو مثال قبلی را با وم در نظر بگیرید .یک پیغام logداریم که مربوط به mailاس و سطح
اولوی آن نیز emergencyاس در این صورت وم در فایل /var/log/mailذخیره میشود و وم به
تمام کاربرانی که log inکردهاند ارسال میشود.
مثال:
kern.crit @logger.pangaea.edu
kern.crit /dev/console
kern.info; kern.!err /var/log/kern-info
logger.pangaea.eduدر شبکه ارسال میکند. خط اول تمام پیغاموای criticalکرنل را به آدرس
توجه داشته باشید که کام یوتر logger.pangaea.eduباید از قبل تنظیم شده باشد که logوا را
دریاف و ثب کند .خط دوم یک ک ی از پیغاموای criticalرا به /dev/consoleارسال میکند که
در واقع در consoleاصلی کام یوتر نشان میدود .خط سوم وم تمام پیغاموای logرا که اولوی شان
بین infoو errorاس به /var/log/kern-infoارسال میکند.
در بیشتر سیتسموا تنظیمات اولیه مربوط به /etc/syslog.confنیز قابل قبول و خوب اس
ولی ممکن اس که شما نیاز به تنظیمات خاصی داشته باشید.
ابزار logger
در برخی مواقع ممکن اس بخواوید ببهطور دستی یک مدخل logدر فایلوای logسیستم ایجاد
کنید ،در این صورت میتوانید از ابزار loggerاستفاده کنید .برای اطالعات بیشتر به صفحهی man
loggerمراجعه کنید.
بهعنوانمثال فرض کنید که میخواویم پیغام ”“shutting down for system maintenance
را در /var/log/messagesثب کنید ،فرمان زیر را میزنیم:
>> logger shutting down for system maintenance
ممکن اس حجم فایلوای logبسیاز زیاد شود و به این ترتیب ممکن اس /var/logبسیار تنومند
گردد .به منظور حل این مشکل ،در لینوکس ابزاروایی جه rotateکردن فایلوای logدر نظر
گرفته شده اس .رایجترین ابزار rotateکردن logrotateنام دارد .این برنامه به واسطهی اجرا شدن
متعدد در بازهوای زمانی مشخص فعالی خود را انجام میدود ( .)cron jobابزار logrotateبا بررسی
/etc/logrotate.confکه شامل تنظیمات مختلفی اس که به /etc/logrotate.dاشاره میکند ،رفتار
1۵1 فصل 11سرویسوای ضروری سیستم
جم لهی MTAوای مهم sendmail,postfixو eximو qmailرا میتوان نام برد .برای خوا ندن
ایم یل میتوانیم بهطور مستتتتقیم از طریق shellو یا mailbox protocolم ثل pop3یا imap
استفاده نماییم .عالوه بر آن بسیاری از ابزاروای ایمیل ،واسطوای مبتنی بر وب را دارند ،که امکان
خواندن ایمیل در مرورگر وب را فراوم میآورد.
در صورتی که mailutilsبر روی سیستم شما نصب نیس ،آن را نصب کنید:
# apt-get install mailutils
mailمیتوانید آن را بررسی در صورتی که ایمیلی برای شما ارسال شده باشد ،به کمک دستور
کنید .ومچنین ابزار mailqلیس صف ایمیل را نمایش میدود .ور مدخل در این لیس ،نمایش
دوندهی IDفایل در صف ،حجم پیام ،زمان دریاف ،ارسال کننده و مواردی از این دس اس .
شاید جالب باشد که بدانید به کمک ابزار telnetوم میتوان ایمیلوا را خواند.
redirectکردن ایمیل
برای redirectکردن ایمیل ممکن ا س نیاز به انجام برخی تنظیمات دا شته با شید .بهعنوانمثال
حالتی را در نظر بگیرید که سروروای ایمیل باید ح سابی به نام postmasterدا شته با شند و یک
نفر که مسئول سیستمواس باید این ایمیلوا را بخواند .اما loginکردن بر روی تک تک سروروا
کار دشتتواری استت ،به جای آن میتوان گف که ور ایمیلی که به آدرس postmasterمیآید ،به
آدرس آن شتتتخص وم برود .برای انجام این کار فایل /etc/mail/aliasesیا /etc/aliasesرا باید
ویرایش کنید .در برخی mail serverوا از جمله Postfix ،senmailو qmailالزم استتت که فایل
/etc/aliasesرا به صورت binaryکام ایل کنید تا سرع انجام کار باالتر رود .برای انجام این کار از
دستور زیر استفاده میشود:
# newaliases
که در آن کاربر یک راه دیگر برای redirectکردن ایمیل استتتتفاده از فایل ~/.forwardاستتت
میتواند مقصدی را که میخواود ایمیلوایش ارسال شود را مشخص کند.
ابزارها
با فرمان redhat-config-printerمیتوان چاپگر را تعریف نمود.
با فرمان lpcمیتوان چاپگروا را مدیری نمود.
با فرمان lpstatمیتوان وضعی چاپگر و گزارشات را دید.
تعداد فرمانوای مرتبط با چاپگر نسبتاً زیاد بوده و اکثر فرمانوای مربوط به چاپگر با
حروف lpشروع میگردند ،مانند .lpq ،lpr ،lpadmin ،lprm
برای ارسال گزارش به چاپگر میتوان از فرمان lpو یا lprاستفاده نمود.
فصل 12کار با شبکه
امروزه بیشتر سیستموای لینوکس به یک شبکه ،خواه داخلی یا اینترن ،متصل وستند .حتی
کام یوتروای خانگی و تلفنوای ومراه بهطور معمول به اینترن متصل میشوند .به ومین دلیل
توانایی راهاندازی شبکه و آشنا بودن با مفاویم پایهای آن اومی بسیار زیادی دارد .به عالوه داشتن
اتصال شبکه ،برای پیکربندی کامل لینوکس ضروری بوده و یکی از پیشنیازوای آن میباشد.
سختافزار شبکه
سخ افزار شبکه با این ودف طراحی شده اس که دو یا چند کام یوتر را قادر سازد که با وم ارتباط
برقرار کنند .اکثر کام یوتروای جدید بر روی بردمادر خود سخ افزاروای شبکهای را دارند و
تواناییوای شبکه بر روی آنوا در نظر گرفته شده اس .عالوه بر آن سخ افزار شبکه که بر روی
PCIنصب میشوند یا از درگاه USBمتصل میشوند نیز وجود دارند .در اکثر سروروا و کاربردوای
جدی از اتصال RJ45که ومان کابل Lanاس استفاده میشود .امروزه با افزایش سرع کارتوای
شبکه و وجود کارت وای چند گیگابی استفاده از اتصاالت فیبر نوری جه برقرار اتصاالت بین
دستگاهوا رایج شده اس .
برای مشاودهی اطالعات PCIکارتوای شبکهای که داریم دستور زیر را میزنیم:
$ lspci | grep Eth
در خروجی دستور باال نام سازنده و اطالعات )domain:bus:device.fun( PCIرا مشاوده خواوید
کرد .خروجی دستور باال یکی از قابل اعتمادترین منابع برای کسب اطالعات در مورد سخ افزار
شبکهای اس که در روی سیستم شما قرار دارد.
IP . IPاین پروتکل اصلیترین پروتکل در قلب TCP/IPاس IP .یک پروتکل الیهی ۲شبکه اس
یک پروتکل مبتنی بر بهترین تالش اس به این معنا که در رساندن بستهوا به مقصد ویچ تضمینی
ارائه نمیکند ،بلکه تنها بهترین تالش خود را انجام خواود داد IP .بر دو نوع IPv4که ۳۲بیتی ،و
IPv6که 1۲۸بیتی اس ،میباشد.
ICMPبرای ارسال پیغاموای خطا از این پروتکل استفاده میشود .بهعنوانمثال سیگنال عدم
دسترسپذیری سرویس درخواس شده ،با این پروتکل اعالم میشود .بهطور معمول برنامهوایی که
شما استفاده میکنید بستهوای ICMPرا بر حسب درخواس کاربر تولید نمیکنند ،بلکه این نوع
بستهوای در پش صحنه به واستهی برخی مشکالتی که در سرویس یا شبکه به وجود میآید،
تولید میشوند .یک مورد استثنا در این مورد برنامهی pingاس .
UDPاین پروتکل سادهترین پروتکل الیهی ۳شبکه اس .این پروتکل روندوای پیشرفتهای برای
تصحیح بستهوای خارج از ترتیب یا ضمان تحویل ارائه نمیکند .ورچند این مسئله در برخی موارد
میتواند مشکلآفرین باشد ،ولی ومچنین به این معنا اس که این پروتکل یک پروتکل سریع اس
که به خصوص برای سرویسوای ویدئو در اینترن ،سیستموای DNSو فایلسیستموای مبتنی بر
شبکه کاربرد دارد.
TCPاین پروتکل رایجترین پروتکل مورد استفاده در الیهی ۳شبکه اس .برخالف ،UDPاین
پروتکل سازوکاروای بررسی خطا و اطمینان از رسیدن بستهوا را دارد .این ویژگیوا باعث میشود
که این پروتکل جه استفاده در کاربردوایی که نیاز به انتقال دادهوا با حجم باال دارند ،مفید باشد.
البته با این اوصاف TCPکمی کندتر از پروتکل UDPاس .بسیاری از برنامهوای شبکه که تابهحال
با آنوا کارکردهاید ،ومانند برنامهوای ایمیل ،احتماالً از این پروتکل استفاده میکنند.
الزم اس بدانید که در سالوای اخیر به عل اینکه ظرفی IPv4رو اتمام بوده اس ،بسیاری
از کشوروای جهان زیرساخ وای خود را به سم IPv6بردهاند .ورچند IPv6تعداد آدرسوای
بسیار بیشتری را پشتیبانی میکند ،ولی در حال حاضر کمی کندتر اس .
مفهوم دیگری به نام network maskوجود دارد که با ناموای netmaskیا subnetmaskنیز
شناخته میشود ،شمارهای اس که از روی آن قسمتی از آدرس IPرا که مربوط به شبکه اس را
از قسمتی که آدرس کام یوتر اس تشخیص داد .اگر بهصورت ( binaryدر مبنای دو)subnetmask ،
داده شده را با آدرس and ،IPکنیم به آدرس شبکه میرسیم .برخی از آدرسوای شبکه برای
شبکهوای داخلی وستند و اصطالحاً به آنوا private IP addressمیگویند ،بازهی دیگری از IPوا
وستند که توسط IANAکنترل میشوند و فروخته میشوند که اینوا public IP addressوا
وستند .در جدول زیر بازهی private IP addresesآمده اس .
block start end
24-bit or /8 prefix 10.0.0.0 10.255.255.255
20-bit or /12 prefix 172.16.0.0 172.31.255.255
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۵۶
این منظور استتتتفاده میکند .توجه داشتتتته باشتتتید که برنامهوای بستتتیاری ومانند Apacheو
Sendmailاز hostnameتعریف شده برای انجام برخی پیکربندیوا ا ستفاده میکنند؛ بنابراین در
مشخص کردن مقدار آن دق کنید.
ومانطور که پیشتر گفتیم ،ور وسیلهای اعم از کام یوتر ،مسیریاب ،سوئیچ ،چاپگر و ...برای اتصال
به شتتبکه به منظور ستترویسگیری و یا ستترویسدوی نیاز به آدرستتی دارند که اصتتطالحاً آنرا IP
Addressمینامند .باید بدانیم که IP Addressرا میتوان به دو گونه به وستتتیله اختصتتتاص داد:
بهصتتتورت آدرس ایستتتتا و آدرس پویا .ور کدام از این روشوای آدرسدوی دارای مزایا و معایبی
و ستند .در صورت فعال بودن این سرویس ،برای گرفتن IPتح سی ستمعامل لینوکس فرمان
dhclientرا وارد مینماییم .در صتتورتی که dhcpی ستتروری در شتتبکه موجود باشتتد و به این
درخواس پاسخ دود ،سیستم ما یک IPجدید خواود گرف .
از دیگر فایلوای مهم مربوط به شبکه در لینوکس فایل /etc/servicesا س .این فایل پیکربندی
به عبارتی دفترچه تلفن برعکس ( )reverseمیبا شد به این صورت که ابتدا شماره پورت و س س
استتم ستترویستتی که به آن پورت گوش میدود ،آمده استت .بهعنوانمثال پورت 11۰متعلق به
سرویس pop3 emailمیباشد .بنابراین ،این فایل شامل لیس پورتوای تعریف شده و رزرو شده
می باشتتتد .برای تغییر دادن پورت متعلق به ور ستتترویس میتوانید فایل را ویرایش نمایید .برای
فهمیدن اینکه چه پورتوایی تو سط برنامهوا در حال ا ستفاده میبا شد میتوانید از فرمان lsofو
nmapاستفاده نمایید.
پورتهای شبکه
تماس گرفتن با یک کام یوتر در شتتبکه مهم استت ،اما یک نوع دیگر آدرسدوی ،عالوه بر آدرس
،IPشماره پورت اس .ارسال کنندهی بسته باید آدرس پورتی را در کام یوتر مقصد در نظر داشته
باشتتد ،تا بتواند با برنامهی مورد نظرش در آن تماس بگیرد و کار کند .پس به زبان ستتاده شتتماره
پورت در یک الیه باالتر از ،IPنوع خدم و برنامهای را که کاربر میخواود را م شخص میکند .در
ادامه به یکی از پرکاربردترین پروتکلوای موجود ،پروتکل انتقال فایل ،FTPمیپردازیم .در جدول
زیر لیس پورتوای مهم و اطالعات آنوا آمده اس :
نمونه برنامههای لینوکس کاربرد TCPیا UDP شماره پورت
ProFTP, vsftpd FTPپورت دادهوای TCP 20
ProFTP, vsftpd FTP TCP 21
OpenSSH, Dropbear (Secure Shell (SSH TCP 22
in.telnetd Telnet TCP 23
Sendmail, Postfix, Exim, Simple Mail Transfer
TCP 25
qmail )Protocol (SMTP
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۵۸
پروتکل FTP
ورگاه الزم با شد که بین چند کام یوتر که در شبکه و ستند ،فایلوای متعددی را منتقل کنید یا
به اشتتتتراک بگذارید ،پروتکل FTPیکی از بهترین روش وا خواود بوئد .البته ممکن استتت برای
کاربردوای موق از روشوای دیگر استتتفاده شتتود .به خاطر داشتتته باشتتید که این پروتکل از دو
پورت استتتتفاده میکند .پورت ۲۰برای داده وای FTPبه کار میرود که به آن active FTPوم
میگویند ،و پورت ۲1برای اانتقال دستورات به کار میروئد که به آن passive FTPگفته میشود.
برای راهاندازی این سرویس الزم اس که بر روی کام یوتر سرور یک سرویسدوندهی FTPنصب
کنید .یکی محبوبترین خادموای very secure FTP ،FTPیا vsftpنام دارد .شتتتما میتوانید با
ن صب این ب ستهی نرمافزاری بر روی سی ستم خودتان ،یک سرور FTPراهاندازی کنید .س س از
کام یوتری دیگری که میخواود فایلی را از روی سرور FTPبردارد ،با ا ستفاده از امکانات خادم از
طریق خط فرمان و یا حتی مرورگر وب ارتباط برقرار کنید و عمل انتقال فایل را انجام داد .بنابراین
کاربر اولین بار درخواس اتصال خود را به پورت ۲1سرور FTPارسال میکند و بعد از وارد کردن
نام کاربری و رمز عبور (در صورتی که نیاز به اینوا با شد) ،میتواند د ستورات خود را وارد کند .در
صتتورتی که کاربر درخواس ت انتقال فایل بدود ،اطالعات از طریق active FTPیا ومان پورت ۲۰
سرور منتقل خواود شود .د ستور apt-cache show vsftpdیا yum info vsftpdاطالعات ب ستهی
1۵۹ فصل 1۲کار با شبکه
telnet
کلمهی telentبرگرفته از teletype networkا س telnet .یک پروتوکل شبکهای ا س که تح
اینترن یا lanکاربرد دارد .با ا ستفاده از امکانات این پروتوکل میتوان از یک سرور loginگرفته و
فعالی وای مورد نظر را انجام داد کاربران ستترور لینوکس میتوانند از راه دور با استتتفاده از فرمان
telnetبه ستترور متصتتل شتتده و این امکان را دارند تمام فرمانوایی که از طریق کنستتول قادر به
اجرای آن بودند را اجرا نمایند البته به خاطر دا شته با شید که از telnetتنها در شبکهوایی که به
امنی آنوا اطمینان دارید استفاده کنید و ورگز برای ارتباطات راه دور که از طریق اینترن برقرار
شدهاند ،از این پروتکل استفاده نکنید.
host
این ابزار برای ان جام DNS Lookupsاستتتت فاده میشتتتود .بهطور معمول برای ت بد یل نام وا به
آدرسوای IPو بالعکس از این ابزار استتتفاده میشتتود زمانی که ویچ ورودی و با optionی داده
نشود ،این فرمان یک توضیح مختصر از ورودیوا و Optionوای قابل استفاده نمایش میدود.
تمرین :با مراجعه به صتتفحهی manدستتتور hostتوضتتیح دوید که ور کدام از فرمانوای زیر چه
کاری را انجام میدوند:
$ host example.com
$ host -t a example.com
dig
DNS name servers domain information groperیک ابزار انعطاف پذیر برای تحقیق دربارهی
میباشتتتد .کاربرد این فرمان برای حل مشتتتکالت DNSمیباشتتتد که به دلیل انعطافپذیری باال،
سهول استفاده و وضوح خروجی آن محبوب شده اس .دستور زیر را وارد کنید و خروجی آن را
بهدق مطالعه نمایید:
$ dig localhost
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۶۰
traceroute
این ابزار برای ردیابی مسیر حرک بستهوای شبکهای در شبکهای با پروتکل اینترن ) (IPمورد
استفاده قرار میگیرد که نوع IPv6آن وم موجود اس .ابزار tracerouteتقریباً در ومه سیستمعامل
وای شبیه یونیکس موجود اس .انواع مشابه این ابزار قابلی وای مشابه ،از قبیل tracepathدر
لینوکسوای مدرن و tracertدر سیستمعامل مایکروساف ویندوز وم وجود دارد .ومچنین در
سیستمعاملوایی با پایه ویندوز NTشما میتوانید برنامه pathpingرا مشاوده کنید که چنین
قابلی وایی را فراوم آورده اس .
ابزار ping
ICMP ECHO_REQUEST این ابزار اتصال شبکه را مورد بررسی قرار میدود ،به عبارت دقیقتر
را به کام یوتر مقصد ارسال میکند و بر حسب پاسخی که دریاف میکند ،اطالعات مناسبی را به
کاربر نمایش میدود ..نسخهی IPv6این ابزار با نام ping6اس .دستور زیر را بزنید:
$ ping google.com
که در خروجی این دستور دو قسم بسیار مهم وجود دارد time .که نشان دوندهی زمانی اس
طول میکشد بسته از کام یوتر شما به مقصد برسد ttl .یک عدد اس که حداکثر مقدار آن 255
میباشد به ازای ور روتری که بسته از آن عبور میکند یک واحد از ttlآن کاسته میشود .در صورتی
که ttlبه مقدر صفر برسد بسته dropخواود شد و به مقصد نخواود رسید .کوچک بودن مقدار ttl
در خروجی دستور pingنشاندوندهی تعداد بیشتر routerوا در مسیر اس .
routeاستفاده کنید:
$ route add default gw 192.168.29.1
192.168.29.1باید آدرس gatewayشبکهی خودتان را قرار توجه داشته باشید که به جای آدرس
دوید که میتوانید آن را از مسئول شبکه که روتروا را تنظیم کرده اس ،ب رسید.
برای کسب اطالعات در مورد شبکه وم از ابزار ifconfigو وم از ابزار routeمیتوانید استفاده کنید.
بهعنوانمثال ifconfig eth0اطالعات زیادی را در مورد لینک eth0نمایش میدود .ومچنین در
صورتی که بخواوید اطالعات مربوط به تمامی لینکوای را مشاوده کنید میتوانید از دستور
Ifconfig –aاستفاده نمایید .مثالً یکی از اطالعات مهم آدرس MACمربوط به لینک اس که در
خروجی دستور ifconfigمقابل HWaddrنمایش داده میشود .جه استفاده از دستور routeبرای
بررسی وضعی شبکه و رفع مشکالت آن را بهصورت route –nدر خط فرمان وارد کنید .آرگومان
–nبه routeخواود گف که تالش کند که hostnameوای مرتبط با IPوا را پیدا کند.
برای اینکه بخواوید یک لینک را قطع ( )downکنید میتوانید از دو دستور ifdown eth0یا
ifconfig eth0- downاستفاده نمایید .ومچنین برای راهاندازی ( )upکردن آنوا میتوانید از دو
دستور ifup eth0یا ifconfig eth0 upاستفاده نمایید .توجه داشته باشید که دستور ifconfigیک
دستور سطح پایینتر و در برخی موارد قویتر اس .
یکی از نکات مهمی که باید به آن توجه کنید این اس ت که بهطور معمول لینوکس قبل از مراجعه
به DNSستتروروایی که برای name resolutionمشتتخص شتتده استت (در در باال در مورد آنوا
توضتتیح دادیم) ،به فایل /etc/hostsمراجعه میکند .شتتما میتوانید این رفتار را با مراجعه به فایل
پیکربندی /etc/nsswitch.confتغییر دوید که سرویس Name Service Switchیا ومان NSSرا
پیکربندی میکند.
پیکربندی routing
عنو .ان gatewayبه جای gwاستفاده شده اس .کلمهی rejectیک مسیر blockingرا مشخص
میکند که تمام ترافیکی را که به آن آدرس میروند را رد میکند .یک نکتهی مهم دیگر وم این
ا س که ورچند ابزار routeمعموالً توانایی شناختن deviceمرتبط را دارد ولی شما نیز میتوانید
به کمک آرگومان devآن را مشخص کنید.
بهعنوانمثال شبکهای را در نظر بگیریدکه در آن ب ستهوا به آدرس مق صد ،172.20.0.0/16باید از
طریق روتر 172.21.1.1.ارستتال شتتوند .توجه داشتتته باشتتید که آدرس این روتر بهعنوان default
gatewayدر نظر گرفته نشده اس و این کار نیز باید انجام شود .به کمک دستور زیر میتوان این
کار را انجام داد:
# route add –net 172.20.0.0 netmask 255.255.0.0 gw 172.21.1.1
تذکر routing table :وای نادر س میتواند م شکالت ب سیار جدی به وجود آورد .شما میتوانید
routing tableسیستمتان را از طریق دستور routeبررسی کنید و به کمک آرگومان del وضعی
در دستتتور routeمواردی را که نادرستت وستتتند از جدول حذف کنید و به کمک آرگومان add
مواردی را که الزم اس به این جدول اضافه نمایید.
ابزار netstat
یکی از مهمترین ابزاروا در رفع اشکال شبکه محسوب میشود netstat .آرگومانوای متعددی
می پذیرد و وم برای کسب اطالع و وم تغییر تنظیمات در شبکه به کار میرود .به وسیلهی این ابزار
میتوان اطالعاتی را در مورد ابزاروای شبکه به دس آورد که از طرق دیگر شاید به راحتی امکانپذیر
نباشد .به حال وای زیر توجه نمایید.
کسب اطالعات در مورد اطالعات واسط شبکه :آرگومان –interfaceیا –iدستور netstatجه
واسطوای شبکه به کار میرود .این خروجی ومانند چیزی اس که ifconfigبر میگرداند.
اطالعات :routingبه کمک آرگومان –routeیا –rمیتوانید اطالعات routingرا ،ومانند آنچه که
در دستور routeدیدیم ،به دس آوریم.
اطالعات :masqueradeآرگومان –Mرا به netstatبدوید تا اطالعات مربوط به ارتباطاتی را که
به واسطهی امکانات NATلینوکس وجود دارد را مشاوده نمایید.
پورتهای باز :اگر دستور netstatرا بدون ویچ آرگومانی بزنید ،اطالعاتی را در مورد پورتوای باز
و سیستموایی که به آن وصل میشوند ،نمایش خواود داد.
تمام اتصاالت :آرگومان –allیا –aرا میتوان به ومراه سایر آرگومانوا استفاده کرد که موجب
میشود که netstatاطالعاتی را در مورد پورتوایی که برنامهوای سرور باز کردهاند و در حال گوش
ال برقرار شده اس ،نمایش دود.
کردن وستند را به ومراه سایر ارتباطاتی که قب ً
به شما توصیه میکنیم که حتماً دستور man netstatرا زده و این صفحه را بهدق مطالعه
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۶۴
ethical-hacker 1البته وکر لزوماً به کستتی که خرابکار اس ت گفته نمیشتتود زیرا که white-hat-hacketیا
وایی وستند که جه دفاع از سیستموا تخصص کسب کردهاند.
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۶۶
نکتهی مهم دیگر در مورد رمزوای عبور این استتت که باید بهطور دورهای عوض شتتتوند .دستتتتور
chageبه مدیر سیستم کمک میکند که کاربران را وادار کند که بهطور دورهای رمزوای عبور خود
را تغییر دوند .در مورد chageپیشتر در این کتاب صحب کردهایم.
یکی دیگر از نکاتی که باید به آن توجه داش ،استفاده از کانالوای امن در ارتباطات راه دور اس .
در صتتورتی که از telnetبرای برقراری ارتباط راه دور استتتفاده میکنید ،باید بدانید ممکن استت
پستتورد شتتما لو برود .یا اگر از vnc serverبر روی telnetبرای ارتباط تصتتویری به واستتط کاربری
لینوکس ا ستفاده میکنید باید دق کنید که telnetبه تنهایی امن نی س .یک راه حل خوب این
اس که از ابزار sshبرای ایجاد یک تونل امن ایجاد کنید و از داخل آن telnetبرقرار کنید.
پیکربندی inetd
در صورتی که بستهی inetdبر روی سیستم شما نصب نیس ،آن را نصب کنید .بعد از نصب آن
دستور ps ax | grep inetdرا بزنید تا متوجه وضعی اجرای آن شوید .فایل پیکربندی این super
serverدر مسیر /etc/inetd.dیا فایل /etc/inetd.confمیباشد .این فایل پیکربندی حاوی خطوط
مختلفی اس که ور یک به یک سرور اشاره دارند .در نسخهوای اخیر inetdسعی بر آن اس که
به جای داشتن یک فایل پیکربندی ،چندین فایل پیکربندی وجود داشته باشد که زیر دایرکتوری
1۶۷ فصل 1۳امنی
/etc/inetd.dقرار میگیرند .برای نوشتن فایل پیکربندی جدید برای برنامهای خودتان ،میتوانید به
فایلوای نمونهای که در مسیر گفتهشده وجود دارند مراجعه نمایید .در فایل /etc/inetd.confعالم
#برای کامن به کار رفته اس .بعد از اینکه تغییرات خود را در فایلوای پیکربندی inetdاعمال
کردید ،الزم اس که آن را مجدد ًا راهاندازی کنید:
# /etc/init.d/inetd restart
در دستور باال عالوه بر restartمیتوانید از آرگومان reloadاستفاده کنید که فقط فایلوای
پیکربندی توسط inetdبازخوانی شود .البته توجه کنید که برخی مواقع reloadممکن اس به
درستی کار نکند .یک راه دیگر برای راهاندازی مجدد استفاده از دستور
# kill –HUP pid
اس که در آن pidشمارهی پروسس inetdاس که میتوان با دستور
# ps –aef | grep inetd
آن را مشاوده کرد.
ابزار inetdبا صتتدا زدن tcpdبررستتی میکند که آیا یک درخواست انجام شتتده برای ستترویس از
طرف کاربر authorizedوست یا خیر .برای کنترل دستترستی در inetdدو فایل پیکربندی وجود
دارد /etc/hosts.allow :و ./etc/hosts.denyفایل اول کام یوتروایی را که حق دسترسی به سیستم
دارند را م شخص میکند ،که اگر ک سی لی س ن شده با شد ،حق د ستر سی نخواود دا ش .فایل
hosts.denyلیستت کام یوتروایی را که اجازهی دستتترستتی ندارند را مشتتخص میکند .اگر یک
کام یوتر در ور دو لی س با شد ،فایل hosts.allowاولوی خواود دا ش .صفحات manمربوط به
hosts.allowو hosts.denyدربارهی ویژگیوای پیشرفتهی آنوا اطالعات زیادی را در بر دارد.
پیکربندی xientd
برنامهی xinetdیا ومان extended super serverشتتبیه inetdاست که کمی بهبود یافته است .
اکثر توزیعوای مدرن از این super serverاستتتتفاده میکنند .مشتتتابه inetdفایلوای پیکربندی
مربوط به xientdدر م سیروای /etc/xinetd.dو ومچنین /etc/xinetd.confقرار دارد .ور برنامهای
که قرار با شد تح xinetdاجرا شود یک فایل مرتبط در م سیر /etc/xinetd.dقرار میدود .شما
نیز میتوانید فایلوای مربوط به برنامهوای خودتان را نوشته و در این مسیر قرار دوید .یک مدخل
نمونه از تنظیمات در فایلوای پیکربندی xientdدر زیر آماده اس :
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۶۸
service ftp
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/in.ftpd
server_args = -1
}
اگر خط disable = yesرا در فایل باال اضافه کنید ،در این صورت کل این مدخل نادیده گرفته
میشود و برنامه تح xientdاجرا نخواود شد .حتماً به صفحهی manبرنامهی xinetdمراجعه
فرمایید تا اطالعات خود را در مورد پیکربندی آن افزایش دوید .به خاطر داشته باشید که در برخی
از برنامهوا که بهطور پیشفرض فایلوای پیکربندی خود را در مسیر /etc/xinetd.dقرار میدوند
خط disable = yesبهطور پیش فرض وجود دارد ،که اگر میخواوید آن برنامه تح xinetdاجرا
شود ،باید آن خط را به disable = noتغییر دوید .بعد از اینکه تغییرات را در فایل یا فایلوای
پیکربندی مورد نظر انجام دادید xientd ،را restartکنید:
# /etc/init.d/xientd restart
امکانات امنیتی زیر در xinetdوجود دارد:
نام واسط شبکه :با کمک کلمهی bindمیتوان به xinetdگف که تنها بر روی یک
لینک خاص شبکه به بستهوا پاسخ دود .این ویژگیوای در کام یوتروایی که چندین
لینک یا کارت شبکه دارند مفید اس .
آدرس IPیا شبکهی مجاز :به کمک only_fromمیتوان این مسئله را تعیین کرد .به
این ترتیب بستهوایی که از آدرسوای نامربوط میآیند ،پاسخ داده نخواوند شد.
آدرس IPیا شبکهی غیرمجاز :به کمک گزینهی no_accessمیتوانید این مسئله را
تنظیم کنید.
زمانوای دسترسی :به کمک گزینهی access_timesمیتوان زمانوایی را که در آن
کاربران امکان دسترسی به سرویس را دارند مشخص نمود .این گزینه را میتوان بهصورت
hour:min-hour:minمشخص کرد که بازهای اس که در آن امکان دسترسی وجود دارد.
توجه داشته باشید که اگر زمان دسترسی را از ساع ۸صبح تا ۵بعد از ظهر بگذارید و
یک کاربر 1دقیقه به ۵وارد سیستم شود ،میتواند تا ساع بعد از ۵نیز از سرویس
استفاده کند .این مسئله تنها بر روی کاربرانی که میخواوند بعد از ساع گفتهشده وارد
سیستم شوند اثر میگذارد و مانع میشود.
نکته :توجه داشته باشید که در LPIC1در مورد دیوارهوای آتش 1صحب نمیشود ،اما شما باید با
1 firewall
1۶۹ فصل 1۳امنی
این مفهوم آشنایی داشته باشید firewall .کام یوتری اس که دسترسی به سایر کام یوتروا در
شبکه را محدود میکند تا از آنوا در برابر حمالت محافظ کند .دو نوع دیوارهی آتش داریم:
packet-filter firewallو .proxy filterنوع اول تک تک بستهوا را بهصورت جزئی بررسی میکند
و دومی در سطح باالتری کار میکند و لزوماً به بررسی تک تک بستهوا نمیپردازد .وستهی
سیستمعامل لینوکس توانایی packet-filter firewallرا دارد ،که به کمک دستور iptablesمیتوان
آن را پیکربندی کرد.
نکته :یکی از ابزاروای مهم در بررسی شبکه ابزار netstatاس که در فصل پیش به آن اشاره شد.
ابزار lsof
این ابزار جه لیس کردن فایلوای باز اس .توجه داشته باشید که منظور از فایل در اینجا بسیار
گسترده اس و شامل ارتباطات شبکه وم میشود .بهعنوانمثال دستور زیر را بزنید تا لیس
ارتباطات شبکه و نوع آنوا را مشاوده کنید:
# lsof –i
تمام ارتباطاتی که به google.comبرقرار اس :
# lsof –i@google.com
در صورتی که lsof –iرا بهعنوان یک کابر عادی و نه rootبزنید ،تنها مواردی را که مربوط به کاربر
خودتان اس را مشاوده میکنید.
دستور زیر را بزنید تا تمام ارتباطاتی را که مربوط به پورت ftpاس را مشاوده کنید:
# lsof –i:ftp
استفاده از nmap
nmapابزاری استت که برای بررستتی پورتوای باز یک ستتیستتتم به کار میرود .برای بررستتی
پورتوای باز google.comکه TCPوستند ،دستور زیر را بزنید:
# nmap –sT google.com
برای بررسی پورتوایی که از UDPاستفاده میکنند دستور زیر را بزنید:
# nmap –sU google.com
به این دلیل که اکان rootتواناییوای بستتیاری دارد ،دستتترستتی به آن باید محدود باشتتد .در
کام یوتری با یک م سئول سرور حل کردن این م سئله آ سان ا س و کافی ا س که rootتنها یک
رمز عبور داشته باشد که ویچ کسی نمیداند و در این صورت تنها اوس که میتواند با اکان root
وارد شتتود یا با دستتتور suبه اکان rootتغییر کاربری دود su .مخفف switch userاس ت .فرض
کنید که با نام کاربری aliوارد شدهاید و در خط فرمان دستور suرا میزنید در این صورت از شما
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۷۰
رمز عبور rootرا میپر سد که اگر در س وارد کنید به اکان rootتغییر کاربری میدوید .اگر بعد
از ورود دستور exitرا بزنید دوباره به ومان ترمینال کاربر aliبرمیگردید.
یکی دیگر از روشوای استفاده از suبه روش زیر اس :
”$ su –c “lsof –i
میشود و دستور lsof –i به این ترتیب در صورتی که کاربر rootنباشید از شما رمز rootخواسته
را تح دسترسیوای rootاجرا میکند .توجه کنید که دستور باال را به روش زیر نیز میتوانید اجرا
کنید:
$ sudo lsof –i
که باز وم در صورتی که کاربر rootنبا شید از شما رمز عبور rootرا خواود پر سید .توجه دا شته
باشتتتید که ور کاربری وم نمیتواند sudoبکند .فایل /etc/sudoersبرای پیکربندی این مورد در
نظر گرفته شتتده اس ت .این فایل را از طریق visudoمیتوان ویرایش کرد .این فایل حاوی دو نوع
مدخل ا س aliases :و .user specificationsاین فایل در م شخص کردن سطح د ستر سیوا برای
کاربران مختلف نقش حیاتی دارد .صتتفحهی man sudoersیکی از مراجع مهم برای ویرایش فایل
/etc/sudoersاست .پس sudoersبرای مدیری ستیاست امنیتی sudoاستتفاده میشتود .فرض
کنید که یک د سته د ستور STORAGEدارید که برای مدیری م سائل ذخیره سازی ا س ،و یک
دستتته دستتتور دیگر به نام PROCESSESداریم .در این صتتورت فایل sudoersرا میتوان ومانند
زیر پیکربندی کرد:
## Storage
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe,
/bin/mount, /bin/umount
## Processes
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
%sys ALL = STORAGE, PROCESSES
%disk ALL = STORAGE
%wheel ALL = (ALL) ALL
کاربرانی که عضو گروه sysوستند امکان اجرای ور دو دسته از دستورات را دارند و آنهایی که در
گروه diskوستند امکان اجرای دستورات STORAGEرا دارند و آنوایی که در گروه whellوستند
امکان اجرای دستورات PROCESSESرا دارند.
تعیین محدودیتها
به ک مک فا یل /etc/security/limits.confمیتوان مشتتتخص کرد که کاربران چه م قدار ،CPU
RAMیا ف ضای دی سک میتوانند م صرف کنند .ورچند تغییر دادن این فایل یکی از راهوای اعمال
تغییرات ا س ،راه دیگر ا ستفاده از د ستور ulimitا س که محدودی وایی را برای موارد زیر در
نظر دارد:
core file
file
1۷1 فصل 1۳امنی
process
memory
hard and soft limits
برای مشتاودهی وضتعی فعلی محدودی وا دستتور ulimit –aرا بزنید .یکی از دستتوراتی که در
اکثر اسکری وای bashدیده میشود دستور ulimit –c 0اس که مانع ایجاد فایل coreمیشود.
اگر در گروه کاریتان افراد برنامهنویس ح ضور دارند ،بهتر ا س که ulimit –c unlimitedبزنید یا
حدا قل بهصتتتورت soft( ulimit –Sc 0که کاربر میتوا ند آن را تغییر د ود) بزن ید که کاربران
برنامهنویس در صورتی که نیازمند دا شتن core fileبودند بتوانند با د ستور ulimit –c unlimited
این محدودی را برای کاربر خودشان بردارند.
پیکربندی SSH
telnet در گذ شته ب سیاری از ارتباطات راه دور از طریق telnetانجام می شود ،اما به این دلیل که
بستتیاری از ویژگیوای امنیتی مورد نیاز را نداشتت ،امروزه sshجایگزین آن شتتده استت .از ssh
میتوان برای انتقال فایل بین ستتروروا ،تونلی برای عبور ارتباط ftpو ستتایر موارد استتتفاده کرد.
چندین ssh serverدر لینوکس وجود دارد که معروفترین آن OpenSSHاس OpenSSH .را وم
میتوان بهعنوان یک daemonمستقل یا تح xinetdاجرا کرد.
بعد از نصتتب sshdبه خوبی کار میکند ،ورچند در فایل /etc/ssh/sshd_configمیتوان تنظیمات
مورد نظر را اعمال کرد .یکی از مهمترین قستتم وای این فایل PermitRootLoginاستت که در
صورتی که yesبا شد کاربر rootمیتواند sshکند و وارد سی ستم شود .این مورد در برخی موارد
میتواند مشکل ساز شود.
بخش مهمی از امنی sshمربوط به کلیدوا س .کلیدوا بر دو نوع عمومی و خ صو صی و ستند .به
وسیلهی کلید عمومی میتوان دادهوا را تبدیل به دادهوای رمز شده کرد .این دادهوای رمز شده را
با کلید خصوصی میتوان با سرع زیادی تبدیل به دادهوای اولیه کرد ولی بدون آن انجام این کار
بسیار بسیار زمان بر ،و عمالً با کام یوتروای معمولی ،در صورتی که کلید به اندازهی کافی طوالنی
جزوه آموزشی لینوکس مقدماتی )(LPIC-1 1۷۲
عالوه بر کنترل از طریق رمز عبور میتوان از طریق روشوای زیر دسترسی را کنترل کرد:
:TCP Wrappersاز طریق انجتتام پیکربنتتدی در فتتایتتلوتتای /etc/hosts.denyو ومچنین
/etc/hosts.allowکه پی شتر در مورد آنوا صحب کردهایم .توجه دا شته با شید که این روش در
صتتورتی که sshdستتیستتتم شتتما از آن پشتتتیبانی کند یا اینکه sshdتح inetdاجرا شتتود،
کاربس پذیر خواود بود.
:Firewallsومانند تمام سروروا شما میتوانید از طریق دیوارهی آتش دسترسیوا را محدود کنید.
:/etc/nologinاگر این فایل بر روی سیستم وجود داشته باشد SSH ،به آن اومی میدود .وجود
این فایل به معنای آنس که تنها کاربر rootامکان وارد شدن به سیستم را دارد .بنابراین در صورتی
که این فایل وجود داشته باشد و در فایل /etc/ssh/sshd_configمقدار PermitRootLoginبهصورت
noباشد ،ویچ اتصال sshی برقرار نخواود شد.
از دایرکتوری جاری به کام یوتر 10.20.1.12و دایرکتوری /homeکاربری aliک ی کنیم:
$ scp./main.cpp ali@10.20.1.12:/home/
نکته :در سیستموا امروزی rcpمعموالً لینکی به scpاس .
تمرین :فرض کنید که یک کاربر دفعات زیادی نیاز به انجام sshبه یک سیستم دارد .بررسی کنید
که چگونه می توان ورود کاربر را اتوماتیک کرد که ور بار نیاز به وارد کردن رمز عبور نباشد.
~/.ssh/authorized_keys راهنمایی:
یکی دیگر از راه وای کاوش در تعداد دفعات وارد کردن رمز عبور برای SSHوای متعدد به یک
سی ستم ا ستفاده از ssh-agentا س .یک بار که از ssh-agentا ستفاده کردید و وارد یک session
شدید تا زمانی که از آن خارج نشده باشید ،نیاز به ورود دوبارهی رمز عبور نخواود بود .ابتدا دستور
ssh-agent /bin/bashرا میزنیم ستت س دستتتور ssh-add ~/.ssh/id_rsaرا وارد میکنیم که رمز
عبور را تنها یکبار در این مرحله میپرستتد .حال sshوایی که در این sessionانجام میدویم ،رمز
عبور شما را به خاطر نگه دا شته و ور بار نخواود پر سید .در نهای برای restartکردن سرور ssh
میتوان از دستور زیر استفاده کرد:
# /etc/init.d/sshd restart
استفاده از GPG
sshبرای مرزگذاری انتقال فایلوا و فعالی وای interactiveطراحی شده ا س .ورچند در برخی
از کاربردوا ممکن استتت بخواوید فایلی را رمز گذاری کنید و بعداً از طریق usbیا ایمیل آن را به
دوستتت تان بدو ید .ابزار معمول برای رمز گذاری ایم یل Gnu Privacy Guardیا GPGیا و مان
GnuGPGاس .برای تولید کلید دستور زیر را میزنیم:
# gpg --gen-key
بعد از اینکه کلید را تولید کردید با دستور زیر میتوانید کلید عمومی خود را استخراج کنید:
# gpg --export name > gpg.pub
حال اگر این کلید عمومی را به دوستتتان بدوید او میتواند به کمک دستتتور زیر اول آن را import
کند:
# gpg –import filename
و س س از طریق دستور زیر دادهوا را رمزگذاری کند:
# gpg--out encrypted-file --recipent uid --armor--ecncrypt original-file
و بعد آن را از طریق ایمیل برای شما ار سال میکند .ازآنجاکه تنها شما کلید خ صو صی را دارید،
ویچ کسی نمیتواند (در صورتی که کلید به اندازهی کافی طوالنی باشد) اطالعات شما را مشاوده
کند .حال شما به کمک دستور زیر میتوانید فایل رمزگذاری شده را باز کنید:
# gpg--out decrypted-file --decrpyt encrypted-file
پیوست :نصب CentOS 6
بیشتتک بهواستتطهی تالشوای developerوای قدرتمند در جامعهی open sourceامروزه نصتتب
لینوکس به یکی از آسانترین کاروا تبدیلشده اس .مطالعهی سریع این قسم برای کاربرانی که
در این زمینه دانش و تجربه دارند ،خالی از لطف نبوده نیستتت .به کاربرانی که تابه حال لینوکس
نصب نکردهاند توصیهی میکنیم که این قسم را بهدق مطالعه نمایند .ومچنین توصیه میکنیم
که دسترسی به اینترن داشته باشید ،زیرا که پاسخ بسیاری از سؤاالتتان را بهراحتی با جستجو در
اینترن و ومچنین استفاده از Wikipediaخواوید یاف .
از میان توزیعوای لینوکس CentOSتوزیعی مبتنی بر ،RHELولی بدون نیاز به licenseو رایگان
ا س .در حال حا ضر (ونگام نو شتن کتاب) CentOS 6آخرین ن سخه از این توزیع ا س که در
تاریخ 10 July 2011توزیع شده اس ،بهروزرسانیوای کامل آن تا تیرماه 1۳۹۵انجام خواود شد.
البته تا چند وق دیگر نستتخهی ۷آن در دستتترس خواود بود .توجه داشتتته باشتتید که نصتتب
CentOSواقعاً دشوار نیس .
اگر اولین بار است که ...
vmware اگر اولین بار اس که لینوکس نصب میکنید توصیهی میکنیم که از ابزاروایی ومچون
workstationیا virtual boxبرای نصتتب آن استتتفاده کنید .در این حال در صتتورت اشتتتباه در
partionبندی فایلوای مهمتان را از دس نخواوید داد.
اتصال اینترنت
در صورتیکه ات صال اینترن شما برقرار با شد ،آخرین بهروزر سانیوا را میتوانید دریاف کنید .اگر
لپ تاپ دار ید و لینوکس را در دا خل vmware workstationیا virutalboxنصتتتب میکن ید،
بهاحتمالزیاد سیستم شما با wifiبه اینترن متصل اس که مشکلی نخواوید داش ،چون wifi
لینوکس قبالً بهخوبی برقرارشده اس .درصورتیکه لینوکس را بر روی خود سیستم و بدون ابزاری
ومچون vmware workstationن صب میکنید ،تو صیه میکنیم که از ات صال LANا ستفاده کنید
تا ارتباط اینترن پایداری داشته باشید.
1۷۵ :نصب CentOS 6 پیوس