100.2: First Steps in Linux
Redirecting …..

 

 در گنو لینوکس هر برنامه یک ورودی و یک خروجی دارد . به طور دقیق تر یک خروجی به عنوان خروجی صحیح ( stdout ) و یک خروجی غلط ( stderr ) و یک ورودی به نام stdin دارد . به صورت پیش فرض در خیلی از برنامه هاروش سوم مانند ls و … خروجی ( هم درست و هم غلط ) در Display نمایش داده می شود یعنی می توان آن را دید برای مثال در ترمینال
اما زمانی می خواهیم خروجی درست و یا خروجی غلط یک برنامه را به صورت جدا در داخل فایلی ذخیره کنیم . به مثال زیر توجه کنید :

در دستور و برنامه ی بالا تنها stdout داریم لذا تنها خروجی درست در standard output چاپ می شود .


در دستور بالا خروجی درست برنامه را درون فایل Out ریختیم . توجه داشته باشید که دستور بالا معادل دستور زیر است :

حال فرض کنید فایلی با نام Pazhoheshi در دایرکتوری جاری وجود ندارد . به مثال زیر توجه کنید :

نتیجه ی حاصل نمایش ارور زیر در Standard Output می شود :

حال برای ذخیره کردن خروجی غلط یا همان Stderr یا همین ارور دریافتی بالا , در یک فایل به صورت زیر عمل می کنیم :

طبیعتا اگر بخواهیم به صورت هم زمان خروجی درست و غلط را در دو فایل جدا از هم , ذخیره کنیم . به صورت زیر عمل خواهیم کرد : ( با فرض وجود داشتن فایل Test و وجود نداشتن فایل Pazhoheshi )

اما زمانی پیش می آید که می خواهیم خروجی درست و غلط در یک فایل ذخیره شود . برای این منظور می توان به یکی از صورت های زیر عمل کرد :

نکته : در تمامی مثال های بالا از کارکتر بزرگ تر ( < ) استفاده کردیم . این کار باعث overwrite می شود ( در صورتی که فایل از قبل وجود داشته باشد ) . برای Append کردن خروجی به ادامه ی فایل باید از << استفاده کرد . برای مثال : ( با فرض وجود نداشتن دو فایل Test , Text )

Piping ….

 

دستور less :

زمانی پیش می آید که تعداد خطوط چاپ شده ی یک فایل در ترمینال زیاد است و ترمینال فقط خطوط آخر را برای ما نمایش می دهد . لذا برای کنترل صفحه های باز شده می توان از این برنامه استفاده کرد

رایج ترین کلید های مورد استفاده در این برنامه up / down / q / Ctrl + b / Ctrl + d می باشد . دو کلید Ctrl + b و Ctrl + d به ترتیب به صفحه ی قبلی و صفحه ی بعدی می روند .

دستور more :

دقیقا همان کار less را انجام می دهد با این تفاوت که دیگر نمی توان به خطوط و صفحات بالایی رفت . معروف ترین کلید های استفاده شده در این برنامه q / Enter / Space می باشد .

more is a basic pager, which allows you to scroll downwards, one page at a time. Only downwards.

less is also a pager, but has addition functionality to scroll upwards and downwards through the input, in addition to several other extensions.

less is more

اصطلاحا به چنین برنامه هایی Pager می گویند .

نکته : با توجه به قسمت Redirecting می توان نتیجه گرفت که در دو دستور بالا تنها خروجی درست یا Stdout به عنوان ورودی وارد برنامه ی less و more می شود . این موضوع با مثال زیر قابل فهم است : ( با فرض وجود نداشتن فایل Test )

نتیجه این خواهد شد که فقط محتویات فایل passwd برای ما نمایش داده می شود . اما برای این که خروجی غلط یا همان stderr هم به عنوان ورودی وارد برنامه ی less شود به صورت زیر عمل می کنیم :

نتیجه این می شود که در Standard Output عبارت زیر را نیز خواهیم دید :

 

Using Man Pages …..

 

برای هر برنامه توضیحاتی مفصل همراه با معرفی انواع سوییچ ها و … وجود دارد . برای این منظور می توان از برنامه ی man استفاده کرد . مثال :

نکته ی حایز اهمین این جاست که هر برنامه برای خود یک section number دارد :

برای مثال در برنامه ی ls عبارت زیر را خواهیم دید :

یعنی section برنامه ی ls یک می باشد و همان طور که در جلوی آن نوشته شده است , این برنامه یک برنامه ی User Commands است . مثال دیگر :

همانند دیگر برنامه ها , این برنامه هم دارای سوییچ های متعدد است . برای مثال سوییچ a- و w- و k- . اجازه دهید در قالب مثال این دو سوییچ را بررسی کنیم .

با استفاده از این سوییچ می توان تمامی passwd ها را مشاهده کرد .

و سوییچ w- :

و در نهایت سوییچ k- :

برای مثال :

با استفاده از این سوییچ می توان تمامی برنامه های مرتبط با partition همراه با توضیحی مختصر و شماره ی section آن مشاهده کرد .

حال به مثال زیر توجه کنید : ( به قسمتی که Bold هست توجه کنید )

همان طور که مشاهده می کنید دو passwd با شماره section مختلف داریم . یعنی 1 و 5 . حال می توان به صورت زیر passwd مورد نظر خودمون رو انتخاب کنیم . برای مثال :

توجه داشته باشید که اگر شماره ی 5 را ذکر نکنیم . به صورت پیش فرض passwd با شماره ی section یک باز خواهد شد .

در داخل توضیحاتی که برنامه ی man در اختیار ما قرار می دهد می توان به قسمتی به نام SEE ALSO اشاره کرد . که در آن دیگر برنامه ی ها مرتبط را می توان مشاهده کرد . برای مثال :

… Using whatis and apropos

کار دو برنامه ی whatis , apropos تقریبا شبیه به man هست با این تفاوت که توضیحاتی بسیار جزیی تر را در اختیار ما قرار می دهد . برای مثال :

نکته : این دو برنامه یک دیتابیس و یا پایگاه داده برای خود دارند که هر برنامه همراه با توضیحاتی مختصر درون آن ثبت شده است . این DB متشکل از دو ستون است :

الف ) ستون نام برنامه
ب ) ستون توضیحات

نکته ی قابل توجه این جاست که whatis فقط در ستون الف به دنبال ورودی می گردد اما apropos هم در ستون الف و هم در ستون ب به دنبال ورودی می گردد

نتیجه : apropos زمانی استفاده می شود که هیچ ایده ای نداریم مثلا اسم برنامه ( ها ) پارتیشن بندی رو نمی دونیم . مثال :

 

104.5: Manage File Permissions and Ownership
Description Candidates should be able to control file access through the proper use of permissions and ownerships.
Key Knowledge Areas:Manage access permissions on regular and special files as well as directories.
Use access modes such as suid, sgid and the sticky bit to maintain security.
Know how to change the file creation mask.
Use the group field to grant file access to group members.The following is a partial list of the used files, terms and utilities:chmod
umask
chown
chgrp

 

مفاهیم پرمیشن در لینوکس :ابتدا فرض کنید که Permissions در لینوکس با 9 بیت مشخص می شود یعنی 3 تا گروه 3 تایی . به شکل زیر توجه کنید :

001

هر خانه مشخصه ی 1 بیت است که در مجموع 9 بیت را تشکل می کند هم چنین هر خانه دو مقدار بیش تر نمی تواند داشته باشد : صفر و یک ( یک یعنی حضور سیگنال و صفر یعنی عدم حضور سیگنال )همان طور که از شکل مشخص است این 9 بیت به 3 دسته ی Owner , Group , Other تقسیم شده است و هر کدام از 3 دسته می تواند به ترتیب 3 مقدار Read , Write , execute را داشته باشد . اگر این مقدار ها فعال باشد آن بیت مربوطه عدد 1 را به خود اختصاص می دهد و اگر این مقدار غیر فعال باشد آن بیت مربوطه عدد 0 را به خود اختصاص می دهد .برای مثال اگر در دسته ی Owner مقدار Read را فقط داشته باشیم : 100
برای مثال اگر در دسته ی Group دو مقدار Write و execute را داشته باشیم : 011
برای مثال اگر در دسته ی Other دو مقدار Read , Write را داشته باشیم : 110

توجه داشته باشید که این اعداد بدست آمده یعنی 100 و 011 و 110 همگی در مبنای دو یعنی باینری می باشند .

حال اگر این 3 دسته را به طور منظم پشت سر هم قرار دهیم به عدد رو به رو خواهیم رسید : 100/011/110 یا 100011110

حال اگر هر کدام از این اعداد را به مبنای 10 ( دسیمال ) ببریم و آن ها را به صورت منظم پشت سر هر قرار دهیم به عدد رو به رو خواهیم رسید : 4/3/6 یا 436

100 => ( 1 x 2^2 ) + ( 0 x 2^1 ) + ( 0 x 2^0 ) = 4 + 0 + 0 = 4
011 => ( 0 x 2^2 ) + ( 1 x 2^1 ) + ( 1 x 2^0 ) = 0 + 2 + 1 = 3
110 => ( 1 x 2^2 ) + ( 1 x 2^1 ) + ( 0 x 2^0 ) = 4 + 2 + 0 = 6

 

پس عدد دسیمال 4 مشخصه ی پرمیشن دسته ی Owner و عدد دسیمال 3 مشخصه ی پرمیشن دسته ی Group و عدد دسیمال 6 مشخصه ی پرمیشن دسته ی Other می باشد .

مثال : پرمیشن یک فایل 665 است .
حل : از سمت چپ , 6 اولی برای دسته ی Owner و 6 دومی برای دسته Group و 5 برای دسته ی Other می باشد .

اگر 6 دسیمال را به باینری تبدیل کنیم نتیجه می شود : 110
اگر 5 دسیمال را به باینری تبدیل کنیم نتیجه می شود : 101 چرا که :

101 => ( 1 x 2^2 ) + ( 0 x 2^1 ) + ( 1 x 2^0 ) = 4 + 0 + 1 = 5

اما در نمایش پرمیشن فایل ها و دایرکتوری ها نمی توان از این اعداد استفاده کرد چرا که بسیار گیج کننده است . برای این منظور از نوع دیگری از نمایش استفاده می کنند که اصطلاحا به آن Symbolic می گویند . برای مثال :

و یا :

توجه داشته باشید d اول ستون پرمیشن مشخصه ی دایرکتوری بودن می باشد . حال به پرمیشن دقت کنید : rwxrwxr-x و یا rwx/rwx/r-x و یا :

دسته ی Owner : rwx یعنی این دسته قابلیت read و write و execute را دارد . توجه داشته باشید که execute را با x نمایش می دهند .
دسته ی Group : rwx یعنی این دسته قابلیت read و write و execute را دارد .
دسته ی Other : r-x یعنی این دسته قابلیت read را دارد . قابلیت write را ندارد و قابلیت execute را دارد . توجه داشته باشید که – نمایانگر نداشتن پرمیشن write می باشد .

ابتدا گفته شد فرض کنید که پرمیشن ها در لینوکس با 9 بیت تعیین می شود . در واقع پرمیشن ها با 12 بیت مشخص می شود یعنی یک دسته ی 3 تایی دیگر در ابتدا داریم اما کمتر با آن سر و کار داریم و معمولا هم متوجه حضور آن نمی شویم . برای مثال در خروجی دستور ls -l فقط 9 بیتی که در بالا صحبت کردیم را مشاهده خواهیم کرد .

002
اما این 3 بیت چی هستند و چه کارایی ای دارند :

این دسته ی 3 تایی یا 3 بیتی از 3 خانه به ترتیب با نام های suid و sgid و sticky تشکیل شده است :

1. وظیفه ی suid این است که در صورت فعال بودن بر روی فایلی . آن فایل را با پرمیشن سازنده یا همان Owner فایل اجرا می کند مثلا یک فایل اجرایی را فرض کنید که مقدار suid دارد و سازنده ی این فایل اجرایی root است . حال اگر یوزر دیگری ( limit ) این فایل اجرایی را اجرا کند ( در صورت داشتن پرمیشن execute ) . آن فایل با یوزر root به اجرا در می آید .

2. وظیفه ی sgid دقیقا همانند وظیفه ی suid است با تفاوت که با گروه و یا Group فایل سرو کار دارد . یعنی در صورت فعال بودن بر روی فایلی . در صورت اجرا توسط هر یوزر . فایل با گروه سازنده ی فایل به اجرا در می آید .

3. و در آخر هم sticky . ابتدا باید گفت که این مقدار تنها بر روی دایرکتوری می تواند ست شود و در صورت فعال بودن به یوزر های مختلف اجازه ی پاک کردن فایل ها و دایرکتوری های یک دیگر را نمی دهد . حتی اگر دو یوزر در یک گروه بوده و پرمیشن مربوطه را داشته باشد .

نکته : بر خلاف قسمت قبل که هم فایل و هم دایرکتوری می توانستند پرمشین بگیرند . فایل های اجرایی یعنی execute فقط می توان دو مقدار suid و sgid را بگیرند هم چنین دایرکتوری ها فقط می توانند دو مقدار sticky و sgid را به خود اختصاص دهند که مقدار این 3 خانه یعنی مقدار suid و sgid و sticky صفر و یک است . به طور خلاصه :

suid : فقط exe
sgid : هم exe و هم dir
sticky : فقط dir

مثال :‌ فایلی اجرایی دارای پرمیشن 4775 است . 3 بیت اولیه پرمیشن این فایل را تفسیر کنید !
حل : از سمت چپ به راست شروع به خواندن می کنیم . پس در نتیجه اولین عدد 4 است . این عدد 4 مشخصه 3 بیت اولیه از 12 بیت است یا نمایانگر دسته ی 3 تایی اول است .
گفتیم که 3 بیت اولیه به ترتیب 3 مقدار suid و sgid و sticky را شامل می شود . هم چنین عدد دسیمال ( ده دهی ) این دسته هم 4 است .

پس می توان نتیجه گرفت باینری ( دو دویی ) این دسته به این صورت است : 100 چرا که :

100 = ( 1 x 2^2 ) + ( 0 x 2^1 ) + ( 0 x 2^0 ) = 4 + 0 + 0 = 4

 

هم چنین گفتیم که 0 یعنی عدم حضور سیگنال یا همان غیر فعال بودن و 1 یعنی حضور سیگنال یا همان فعال بودن پس در نتیجه 100 یا 1/0/0 یعنی suid فعال و sgid و sticky غیر فعال می باشد .

003
اما این 3 بیت اولیه کجا استفاده دارد ؟

ابتدا suid را فرض کنید . گفتیم اگر فایلی اجرایی این پرمیشن را داشته باشد , هر یوزری که این فایل را اجرا کنید , آن فایل با یوزر سازنده و یا Owner به اجرا در می آید . حال دستور passwd را در نظر بگیرید ( با این دستور هر یوزر می تواند پسورد خود را عوض کند ) این برنامه پرمیشن suid دارد پس هر یوزری که این برنامه را اجرا کنید , این برنامه با سطح دسترسی یوزر سازنده ی برنامه یعنی root به اجرا در می آید . پس در نتیجه یک یوزر محدود به این صورت می تواند تغییرات لازم را در فایل passwd و shadow اعمال کند .

When we try to change our password we will use passwd command, which is owned by root. This passwd command file will try to edit some system config files such as /etc/passwd, /etc/shadow etc when we try to change our password. Some of these files cannot be opened or viewed by normal user only root user will have permissions. So if we try to remove SUID and give full permissions to this passwd command file it cannot open other files such as /etc/shadow file to update the changes and we will get permission denied error or some other error when tried to execute passwd command. So passwd command is set with SUID to give root user permissions to normal user so that it can update /etc/shadow and other files.

به عنوان مثالی دیگر می توان دستور ping را مثال زد .

 

پرمیشن دهی به فایل و دایرکتوری :

برای پرمیشن دادن به یک فایل و یا یک دایرکتوری از دستور chmod استفاده می کنیم . ابتدا به Syntax این دستور توجه کنید :

همان طور که از Syntax پیداست , به 3 روش می توان پرمیشن یک فایل را تعیین کرد :

1. استفاده از حروف برای مشخص کردن پرمیشن .
2. استفاده از اعداد اکتال برای مشخص کردن پرمیشن .
3. رفرنس به فایلی دیگر برای مشخص کردن پرمیشن .

 

روش اول :

در این روش دقیقا پرمیشنی که لازم است به فایل داده شود یا گرفته شود باید ذکر شود . برای مثال :

توجه داشته باشید که u مشخصه ی دسته ی Owner و x مشخصه ی execute می باشد . معنی این دستور یعنی فایل file1 برای سازنده پرمیشن اجرا داشته باشد ( اضافه شود ) .

مثالی دیگر :

این دستور یعنی از دسته ی Group پرمیشن write گرفته شود . توجه داشته باشید که علامت – به معنای گرفتن پرمیشن می باشد . مثال :

توجه داشته باشید که منظور از o دسته ی Other می باشد . مثال :

مطابق Syntax می توان چندین mode را مشخص کرد . مثال :

دستور بالا به این معناست که دسته ی Other فقط و فقط پرمیشن read و write داشته باشد . مثال :

 

روش دوم :

مطابق Syntax در این روش از اعداد اکتال برای مشخص کردن پرمیشن یک یا چند فایل استفاده می کنیم . برای مثال قصد داریم پرمیشن 644 را به فایل file1 بدهیم :

 

روش سوم :

مطابق Syntax و تعریف , در این روش پرمیشن یک فایل از پرمیشن فایلی دیگر خوانده می شود . به عنوان مثال قصد داریم پرمیشن فایل file1 دقیقا برابر پرمیشن فایل passwd شود :

توجه داشته باشید که مشخص کردن پرمیشن دایرکتوری نیز به همین صورت است . به عنوان مثال :

نکته : برای تغییر پرمیشن تمامی فایل های درون یک دایرکتوری از سوییچ R- استفاده می کنیم . به عنوان مثال :

نکته : تا به این جا فقط تعیین 9 بیت پرمیشن معروف گفته شد . در واقع برای مشخص کردن پرمیشن در 3 بیت اول که شامل suid و sgid و sticky هست , دوباره به 3 روش می توان عمل کرد :

1. استفاده از حروف برای مشخص کردن پرمیشن .
2. استفاده از اعداد اکتال برای مشخص کردن پرمیشن .
3. رفرنس از یک فایل برای مشخص کردن پرمیشن .

 

روش اول :

ابتدا باید گفت که :

الف ) به صورت خلاصه suid را با s و gsid را با s و sticky را با t مشخص می کنند .
ب ) تغییرات suid در دسته ی Owner و تغییرات gsid در دسته ی Group و تغییرات sticky در دسته ی Other اعمال می شود .
ج ) تغییرات suid و guid و sticky در پرمیشن x یا همان execute دسته ی خود اعمال می شود . یعنی suid در پرمیشن x دسته ی Owner و guid در پرمیشن x دسته ی Group و sticky در پرمیشن x دسته ی Other تغییر اعمال خواهد کرد .

حال به مثال زیر توجه کنید :

دستور بالا به این معناست که به فایل file1 پرمیشن suid داده شود . توجه داشته باشید که s به معنای suid است چرا که u به معنای دسته ی Owner می باشد . حال به مثال زیر توجه کنید :

g به معنای دسته ی Group است و از آن جایی که در این دسته فقط gsid اعمال می شود . پس نتیجه می گیریم که s در این جا به معنای gsid است نه usid . حال به مثالی دیگر توجه کنید :

همان طور که در ابتدا گفته شد , t به معنای sticky و o به معنای دسته ی Other می باشد .

 

روش دوم :

در این روش از اعداد اکتال برای مشخص کردن پرمیشن استفاده می کنیم . در قسمتی که 9 بیت دوم رو بررسی کردیم دیدیم که پرمیشن ها به صورت 3 عدد اکتال 1 رقمی داده می شد . در این جا یک عدد اکتال دیگر به این 3 عدد اضافه شده و به عنوان پرمیشن به فایل یا دایرکتوری تخصیص داده می شود . برای مثال :

توجه داشته باشید که اولین عدد از سمت چپ نمانگر پرمیشن برای دسته اول یا همان 3 بیت اول می باشد که در این مثال 6 است یعنی :

110 = ( 1 x 2^2 ) + ( 1 x 2^1 ) + ( 0 x 2^0 ) = 4 + 2 + 0 = 6

 

با توجه به تصویر دوم . عدد اکتال 6 یعنی پرمیشن suid و sgid به فایل file1 داده شده است .

طبیعتا اگر مثل بالا حساب کنیم , می توانیم به این نتیجه برسیم که عدد 4 مشخصه ی پرمیشن suid و عدد 1 مشخصه ی پرمیشن sticky می باشد .

توجه داشته باشید که در مثال بالا اگر به جای 6750 , 750 را وارد می کردیم , 3 بیت اول یعنی suid و sgid و sticky هیچ تغییری نمی کند و مقدار پیش فرض خود را که 0 ( غیر فعال ) است حفط می کند .

 

روش سوم :

روش سوم با استفاد از رفرنس است و همانند قسمت سوم 9 بیت دوم (‌قسمت قبل ) می باشد .

 

Displaying File’s Information ….
دستور stat :

در واقع این دستور از کلمه ی status میاید و جزییاتی از فایل و یا دایرکتوری را برای ما نمایش می دهد . نمایش دقیق پرمیشن یکی از قابلیت های این دستور می باشد که ما در این جا از آن استفاده می کنیم . به عنوان مثال :

حالا به تصویر زیر نگاه کنید ( به قسمت access و عدد اکتال پرمیشن ها توجه کنید )

05

همان طور که در تصویر می بینید به ترتیب 3 عدد 0644 و 1777 و 4755 را در پیش رو داریم . 0 به معنای 0 بودن یا غیر فعال بودن تمامی خانه های 3 بایت اول می باشد . 1 به معنای 2 به توان صفر یعنی فعال بودن پرمیشن sticky می باشد . 4 به معنای 2 به توان 2 و فعال بودن پرم suid می باشد .

نکته : tmp/ مسیری است که تمامی برنامه ها فایل های موقت خود را در آن می ریزند لذا پیمشن آن 777 است اما برای جلوگیری از این مورد که کسی نتواند فایل دیگری را پاک کند , پرمیشن sticky هم در این دایرکتوری فعال می باشد .

 

Setting umask ….

 

در قسمت های قبل دیدیم که چه طور پرمیشن فایل و یا دایرکتوری های مختلف را کنترل و تعیین کنیم . اما پرمیشن اولیه فایل ها و دایرکتوری هایی که ساخته می شوند به صورت پیش فرض چی هست ؟

برای تعیین پرمیشن فایل ها و دایرکتوری ها به صورت خودکار با تعریفی به نام umask سرو کار داریم که تقریبا به صورت یک مکانیزم امنیتی عمل می کند .

اگر پرمیشن فایل را 666 و پرمیشن دایرکتوری ها را 777 در نظر بگیریم , پرمیشن فایل ها و دایکتوری هایی که ساخته می شوند ( به صورت پیش فرض ) برابر با :

برای مثال در اوبونتو 12.04 این عدد 0002 می باشد و اگر از دو عدد 666 و 777 کم شود به ترتیب دو عدد 664 و 775 بدست می آید که پرمیشن پیش فرض فایل ها و دایرکتوری های ساخته شده می باشد .

 

06
برای تغییر این عدد پیشفرض می توان به عنوان نمونه به صورت زیر عمل کرد :

نکته : این عدد در توزیع های مختلف متفاوت است .


Changing file’s owner ….

 

نکته : در لینوکس هیچ کسی نمی توان owner یک فایل و یا دایرکتوری را تغییر دهد حتی اگر سازنده ی آن باشد . به غیر از یوزر Root

برای این منظور از دستور chown استفاده می کنیم . ابتدا به Syntax این دستور توجه کنید :

همان طور که از Syntax پیداست . از این دستور می توان به 2 روش استفاده کرد :

الف ) مشخص کردن owner و group
ب ) رفرنس دادن به فایلی دیگر

مثال :

توجه داشته باشید که در قسمت سوم , گروهی مشخص نشده است لذا به صورت پیش فرض گروه دیفالت یوزر به فایل تخصیص داده می شود .

مثال :

در قسمت اول هیچ یوزری در نظر گرفته نشده است لذا در این حالت فقط گروه فایل file1 تغییر می کند .

توجه داشته باشید که در قسمت سوم از سوییچ R- برای تغییر owner کل دایرکتوری dir1 استفاده شده است .

 

Changing file’s group owner ….

 

بر خلاف قسمت قبل که هیچ یوزری نمی توانست owner خود را تغییر دهد , هر یوزر می تواند Group Owner خود را تغییر دهید ( بدون احتیاج به دسترسی root ) . ابتدا به Syntax این قسمت توجه کنید :

به عنوان مثال :

 

منبع : او اس لرن | http://OSLearn.ir
 نویسنده : e2ma3n

 

از این مطلب راضی هستید ؟ می خواهید به سایت کمک کنید ؟ رضایت خودتون رو با دونیت به ما اعلام کنید . برای دونیت روی خرید کلیک کنید . با تشکر

[parspalpaiddownloads id=”8″]

درباره نویسنده :

ایمان همایونی هستم، از سال 2009 با گنو لینوکس فعالیت خودم رو در زمینه ی کامپیوتر و IT شروع کردم و تا الان موفق به گذروندن دوره هایLPIC 1 / LPIC 2 / VCP5-DCV / MCITP / CCNA / MTCNA شدم . مدتی در زمینه امنیت فعالیت هایی داشتم اما در حال حاضر تمرکز خودم رو بر روی مجازی سازی و لینوکس گذاشته ام .

تمام پست های من - وب سایت من