Academy and Foundation unixmens | Your skills, Your future
2.28K subscribers
6.66K photos
1.37K videos
1.23K files
6.02K links
@unixmens_support
@yashar_esm
[email protected]
یک کانال علمی تکنولوژی
فلسفه متن باز-گنو/لینوکس-امنیت - اقتصاد
دیجیتال
Technology-driven -بیزینس های مبتنی بر تکنولوژی
Enterprise open source
ارایه دهنده راهکارهای ارتقای سازمانی - فردی - تیمی
Download Telegram
اگر در حال تلاش برای متقاعد کردن مدیریت خود برای تقویت امنیتِ سازمان جهت حفاظت در برابر نفوذ به داده­ های خود هستید ، یک اینفوگرافی تعاملی از این سایت ممکن است به شما کمک کند .

گزارش تصویری بزرگترین رخنه های امنیتی داده در جهان که با ابزارهای VIZsweet متعلق به این سایت ساخته شده است ، حاصل ترکیب داده ­هایی از DataBreaches.net و IdTheftCentre و برخی دیگر گزارش ­ها برای ایجاد یک جدول زمانی از نقص ­ها می باشد که شامل از دست رفتن ۳۰ هزار رکورد و یا حتی بیشتر می­شود. نکته جالب توجه این است که ، در حالی که نقص ­ها ناشی از انتشار تصادفی ، خطا در پیکر بندی ، برنامه های داخلی ، سرقت یا از دست رفتن کامپیوتر و رسانه یا حتی امنیت ضعیف و نسبتا قدیمی وسایل می شوند ، اکثریت و بزرگترین رخنه ها به دلیل هک کردن است .

البته بایستی اطمینان حاصل کرد که مدیران ارشد سازمان به این نکته توجه کنند که الزاما نیازی نیست تا یک سازمان بزرگ بود تا رخنه های جدی در داده ­ها اتفاق بیافتد .
#security @unixmens
در اینجا هست که مباحث hardering مطرح میشود
شاخص رفاه اجتماعی ایران و مقایسه آن با چند کشور دیگر
سلام ، وقت بخیر خدمت دوستان عزیز
یکی از ویژگی خوب گنو/لینوکس مفهوم package manager هست ما انواع package manager ها را داریم از جمله :
yum
apt
pip
yarn
npm
va ...
در آینده در موردشون بیشتر توضیح حواهم داد
#package_manager @unixmens
*Made on Earth by humans*
(ساخته شده در زمین بوسیله انسان ها 😁)
عبارت چاپ شده روی برد الکترونیکی خودروی Roadster شرکت Tesla Motors که دیروز توسط شاتل فضایی Falcon Heavy شرکت SpaceX به فضا پرتاب شد.
در واقع #PATH یک متغیر محیطی یا #Environment Variable در سیستم عامل لینوکس و سایر سیستم عامل های UNIX Base است. به زبان ساده ، متغیر محیطی PATH به شل لینوکس ما دیکته میکند که کدام دایرکتوری شامل برنامه های اجرایی میباشند و سریعترین مسیر موجود برای اجرا کردن نرم افزار ها در کجا قرار دارد. برای مثال نرم افزارهای آماده به کاری که توسط کابران به طور معمول استفاده میشوند مانند نرم افزار ls یا cat و یا از این قبیل نرم افزارها.متغیر های محیطی در system profile ها نگهداری میشوند و زمانی ایجاد میشوند که به سیستم لینوکسی از راه دور Login میکنیم(یا اینکه ترمینال خود را در سیستم بصورت کنسول باز کنیم). متغیر محیطی PATH باعث افزایش راحتی و ایمنی این گونه سیستم عامل ها میشود و تا آنجا که متغیر محیطی PATH به یکی از مهم ترین Environment Variable ها در سیستم عامل لینوکس تبدیل شده است. متغیر های محیطی کلاسی از متغیر ها یا بعبارتی آیتم هایی میباشند که میتوان مقادیر آنها را تغییر داد که به شل چگونگی تعامل و رفتار با دستوراتی که کاربر با آنها دائما سر و کار دارد دیکته میکند. توجه کنید که PATH با path زمین تا آسمان فرق دارد PATH یک متغیر محیطی در سیستم عامل های UNIX based است اما path یا همان مسیر میتوان گفت که جزء ای از PATH است زیرا ما در حقیقت مسیر را در متغیر محیطی PATH برای اجرا شدنش تعریف میکنیم.path یا partially path یک مسیر نسبی است که در ساختار سلسله مراتبی سیستم عامل لینوکس موجود است مانند مسیری که در حال حاضر در ساختار سلسله مراتبی لینوکس در آن قرار دارید مانند دایرکتوری Desktop یا Downloads در پروفایل کاربری تان. absolute path یا مسیر مطلق که به آن full path یا مسیر کامل نیز میگویند مسیری است که ما برای بیان آن دایرکتوری هایی که از ابتدای ساختار سلسله مراتبی لینوکس که همان root میباشد تا دایرکتوری فعلی مان که در آن قرار داریم را ذکر میکنیم برای مثال با زدن دستور pwd مسیر کاملی که در آن قرار داریم نشان داده میشود :

:~# pwd
:~# /home/user/Desktop/test

در مسیر فوق فولدر test ما در داخل فولدر Desktop قرار دارد و فولدر Desktop در پروفایل کاربری ما که همان user است قرار دارد و پروفایل ما در داخل دایرکتوری home قرار گرفته و در آخر دایرکتوری home که مستقیما از دایرکتوری روت یا / جدا شده است قرار میگیرد.

همانطور که گفتیم PATH شامل مسیرهای مطلقی است که وقتی کاربر یک دستور را مانند ls اجرا میکند به جای اینکه مسیر مطلق آن نرم افزار یا دستور را که در اینجا برای نرم افزار ls مسیر مطلقش bin / ls میباشد برای اجرا وارد کند آنرا به شکل ساده تر مثل ls وارد میکند، پس اینجاست که متغیر محیطی PATH به کمک ما می آید پس اگر ما مسیر مطلق فایل های آن نرم افزار را در متغیر محیطی PATH تعریف کنیم براحتی میتوانیم دستور خود را بدون ذکر مسیر کامل اجرا کنیم. میتوان گفت که متغیر محیطی PATH به عنوان یک فاکتور امنیتی نیز میتواند مطرح شود زیرا کاربر بدون اینکه مسیر مطلق را برای اجرای نرم افزار وارد کند تنها با نام آن براحتی میتواند کارش را انجام دهد و جلوی اجرا شدن نرم افزار های مشابه گرفته میشود دومین مزیت استفاده از متغیر محیطی PATH نیز افزایش سرعت عمل ما هنگام کار با سیستم عامل است.

لیست تمامی متغیر های محیطی در سیستم عامل های UNIX Based را با اجرا کردن دستور env میتوان مشاهده نمود.برای اینکه در خروجی تنها متغیر محیطی PATH را مشاهده کنید دستور زیر را وارد کنید :

:~# env | grep PATH

روش دیگر مشاهده محتویات متغیر محیطی PATH با استفاده از دستور echo میباشد که به صورت زیر است :

:~# echo $PATH

همانطور که حتما مستحضر هستید علامت $ را به این خاطر گذاشتیم که PATH بصورت متن در خروجی نمایش داده نشود یا بعبارتی شل آنرا به عنوان متغیر در نظر بگیرد و مقدارش را به ما برگرداند.شما با استفاده از دستور unset میتوانید متغیر PATH را که به صورت تنظیم شده در سیستم قرار گرفته است را از حالت تنظیم خارج کنید :

:~# unset PATH
در هر حالت پیشنهاد میشود که این متغیر حیاتی را unset نکنید زیرا ممکن است تا زمان Log off نکردن از session خود با مشکل مواجه شوید.
هر کاربر استفاده کننده از سیستم لینوکسی ممکن است متغیر محیطی PATH متفاوتی داشته باشد. وقتی سیستم عامل لینوکس نصب میشود یک متغیر محیطی PATH پیشفرض برای کاربر root ایجاد میشود و متغیر های محیطی PATH دیگر نیز برای سایر کاربران معمولی ایجاد و اعمال میشود. متغیر محیطی PATH برای کاربران معمولی شامل دایرکتوری های زیادی نسبت به کاربر root است به خاطر اینکه دایرکتوری هایی مانند sbin و usr sbin / وجود دارد که شامل برنامه هایی است که توسط کاربران استفاده میشود. برای اطمینان حاصل کردن از این موضوع میتوانید مسیر های موجود در متغیر PATH اکانت کاربری لینوکس خودتان را با استفاده از دستورات فوق بشمارید.

متغیر های PATH را میتوان براحتی تغییر داد. آنها به دو حالت میتوانند تغییر داده شوند یکی به صورت موقت و دیگری بصورت دائمی. به این گونه که وقتی در حال حاضر در session خود به طور لاگین قرار دارید و حالت دیگر این است که بعد از Log off کردن از session خود نیز تغییرات به طور دائم باقی بمانند و overwrite نشوند. اضافه نمودن مسیر دایرکتوری به متغیر محیطی PATH کاری بسیار آسان است. با استفاده از الگوی زیر میتوانید یک مسیر دایرکتوری به متغیر محیطی PATH اضافه نمایید :

:~# export PATH="directory:$PATH"

برای مثال ما دایرکتوری usrsbin را به متغیر PATH اضافه میکنیم :

export PATH="/usr/sbin:$PATH "

دقت کنید که با export کردن این موارد کار تمام نمیشود و تغییرات به صورت دائمی اعمال نمیشود و ما این همه صحبت نکردیم که در آخر کار با یک Log off کردن تمام کار هایمان بی معنی شود. شما برای اعمال نمودن دائمی این تغییرات بایستی دستورات فوق را در فایل bashrc. و یا در فایل bashprofile. موجود در پروفایل کاربری تان ذخیره کنید. نقطه ها در ابتدای این دو فایل نشانگر این است که مخفی هستند. برای انجام این کار در فایل bashprofile. بایستی این فایل را با یک ویرایشگر متن باز کنید و دستور زیر را عینا در قسمتی که با PATH شروع میشود وارد کنید :

:~# PATH=$PATH:$HOME/bin:/usr/test

در دستور فوق ما دایرکتوری usrtest را در فایل bash_profile. ذخیره کردیم. حال اگر از session خود Log off نیز بکنید باز هم تغییرات به طور دائم باقی میمانند.
#linux @unixmens
مفهوم HAL چیست :
لایه تجرید سخت‌افزار (به انگلیسی: Hardware Abstraction Layer یا HAL)

این لایه در برخی از سیستم های عامل جهت شبیه سازی سخت افزار برای لایه های بالاتر طراحی شده است که مجموعه‌ای از روال‌ها در سیستم‌عامل است و برخی از جزئیات وابسته به پلت‌فرم را تقلید می‌کند تا برنامه‌ها به منابع سخت‌افزاری دسترسی مستقیم داشته باشند
توجه کنید که شما وقتی یک سخت افزار را به سیستم متصل می کنید این سخت افزار برای خودش یک درایور و قطعا یک شناسه منحصر به فرد یا ID دریات می کند که به آن Device ID گفته می شود
در ویندوز زمانیکه می خواستیم یک سخت افزار جدید بر روی سیستم عامل نصب کنیم در هر بار نصب بایستی یکبار سیستم عامل Restart می شد تا سیستم تنظیمات مربوط به آن سخت افزار را در Kernel ایجاد کند و لیستی از سخت افزارها را ایجاد کند.

این لیست با هر بار Restart شدن سیستم بروز رسانی می شود ، ما این لیست را در لینوکس به عنوان دایرکتوری یا فایل سیستمی به نام udev می شناسیم ، بنابراین تا اینجا متوجه شدید که با restart شدن سیستم این دایرکتوری udev است که لیست سخت افزارها به همراه Device ID های آنها را تهیه و لیست می کند اما مشکل اینجاست که این لیست بروز رسانی نمی شود ، یعنی زمانیکه شما یک سخت افزار جدید به سیستم اضافه کنید هیچ تغییری در دایرکتوری udev انجام نمی شود و در اصطلاح ما می گوییم که دایرکتوری udev ما در حالت static است و تغییر نمی کند و update نمی شود مگر اینکه سیستم عامل restart شود. تا اینجای کار در ذهن داشته باشید که دایرکتوری udev در واقع پایگاه داده یا دیتابیس درایورها و Device ID های شما است و با بروز شدن آن لیست سخت افزارهای شما نیز بروز می شود. شما می توانید udev لینوکس را به عنوان device manager یا نرم افزار مدیریت سخت افزارهای سیستم نیز در نظر بگیرید ، در واقع مفهومی که در سیستم عامل ویندوز نیز داریم ،بلافاصله بعد از اینکه شما دستگاهی رو به سیستم وصل کنید این دستگاه رو سیستم شناسایی می کنه و یک سخت افزار جدید شناسایی می کنه ، یا روش دیگه اینکه ممکن هست چندین سخت افزار رو شما از سیستم جدا کنید و مجددا به سیستم متصل کنید ، مدیریت اینها که همیشه بلافاصله Device ID قبلی رو بگیرند و ... بر عهده این dynamic udev در لینوکس هست ، خوب یک مقدار از سادگی عبور کردیم ، با سیستم عامل ویندوز حتما کار کردید ، قابلیت Automatic Plug and Play رو میدونید چی هست ؟ یعنی وقتی یک USB به سیستم می زنید نیازی نیست سیستم عامل Restart بشه تا سیستم این USB رو بشناسه ، قبلا اینجوری بود که باید Restart می شود ، این همون کاری هست که در لینوکس با udev و دایرکتوری /dev انجام می شود.

حالا بعد از این همه ماجرا به سراغ HAL می رویم ، اول بهتره ترجمه این واژه ها رو بدونید Hardware میشه سخت افزار ، Abstraction میشه جدا کردن و در نهایت Layer میشه
بنابراین ترجمه HAL میشه لایه جدا کننده سخت افزار ، خود لایه جدا کننده سخت افزار ، این سخت افزار رو از چه چیزی جدا می کنه ؟ نکته جالب اینجاست که شما اول باید بدونید سخت افزار به چه شکلی داخل سیستم عامل دیده میشه ، اگه واقعا شکل دیده شدن سخت افزار رو میخاین بدونید فکر می کنم براتون چندان جالب نباشه چون همش کد و عدد و ارقام و حروف عجیب و غریب هست و اینها رو شما به عنوان یک انسان و حتی Application ها هم سخت هست که درک کنند ، تصور کنید به جای دیدن Network Connection 1 شما در تنظیمات یه چیزی شبیه به 555.77.ii.99.00 ببینید که قشنگ نیست.
حالا HAL چیکار می کنه میاد یک لایه واسط ایجاد می کنه بین udev که اعداد و ارقام و همین موارد هست و بین نرم افزارهای کاربردی ( البته شما الان اینجوری تصور کنید چون نمیخام راجع به dbus توضیح بدم ) ، HAL میاد اسامی رو از udev میگیره میده به سیستم عامل و نرم افزارها که با شکل و ظاهر مشخص تری دیده بشن و قابل فهم تر باشن ، یک مثال میزنم تا همه چیز جا بیوفته ، گفتم یک کارت شبکه در لینوکس در واقع عدد و ارقام هست و از برند های مختلف می تونه باشه مثلا یک کارت شبکه intel و یک کارت شبکه dlink زمین تا آسمون کد شناساییشون متفاوت هست اما HAL میاد کاری می کنه که شما داخل سیستم عامل خودتون هر تعداد کارت شبکه که اضافه کنید به ترتیب به شکل eth0 و eth1 و eth2 و ... می شناسید و هیچ اهمیتی نداره از چه برند و محصولی باشن چون HAL کار شما رو راحت کرده و لایه udev رو گفته باهاش کاری نداشته باشید.
➜ /proc cd sys/net/ipv4
➜ ipv4 ls


فقط این نکته رو فراموش نکنیم که پوشه proc یک دایرکتوری مجازی از تنظیمات سطح کرنل میباشد و اگر واقعا قصد تغییر دایمی این تنظیمات رو بر روی سیستم خود داریم باید از طریق دایرکتوری etc اقدام به تغییر این موارد در سطح کرنل نماییم.
#hal #hardware #linux @unixmens
مفهوم HAL : این نرم افزار یا ابزار یا تکنیک سخت افزار را از نرم افزار جدا می کند و برای نرم افزارها پیچیدگی های موجود در کار کردن با سخت افزارها را کاهش می دهد ، هدف اصلی HAL این است که سخت افزارهای مختلف با کارایی های مختلف و معماری های مختلف به صورت یک سیستم یکپارچه برای سیستم عامل به نمایش گذاشته شوند. HAL به این دلیل در سیستم عامل ها قرار گرفته است برای اینکه دیگر نیازی نباشد برای اینکه یک نرم افزار بتواند از یک سخت افزار استفاده کند لازم باشد در Kernel سیستم عامل دستکاری شود ، شما با HAL دیگر درگیری های سخت افزاری و معماری های مختلف سخت افزاری و هماهنگ کردن آنها با سیستم عامل و نرم افزارهایتان را نخواهید داشت. HAL قابلیت های زیر را به شما می تواند ارائه بدهد :

امکان استفاده حداکثری از کارایی منابع سخت افزاری
امکان کار کردن نرم افزارها فارق از معماری موجود در سخت افزارهای مختلف
امکان مستقل کردن نرم افزارها از سخت افزارها و از بردن وابستگی های آنها
امکان دسترسی مستقیم درایورها به سخت افزارها
ایجاد کردن امکانات توسعه نرم افزارهای قابل حمل یا portable

امروز میخوایم بیشتر با HAL لایه ای که با سخت افزارها در ارتباط هستش و در واقع به صورت عامیانه ی خودمون لباس بسیار ساده تر از چیز یکه سخت افزارهای سیستمی ما هستن رو براشون آماده میکنه, آشنا بشیم. خب در قسمت قبلی در مورد ماهیت و کارایی هر کدوم از لایه ها در سطح سیستم عامل صحبت کردیم ولی خب خارج از لایه ی انتزاعی حتما با خودمون باید بگیم این مواردی که گفته شد رو چطوری میشه بهشون دسترسی داشت. در پوشه root دایرکتوری به نام sys داریم که HAL کل اطلاعات خودش رو اونجا نگه میداره. ابتدا با دستور cd sys به پوشه ی sys رفته سپس دستور ls رو برای نشان دادن محتوای این دایرکتوری میزنیم که محتویات زیر رو داخل سیستم خودتون مشاهده خواهید کرد:

➜ /sys ls
block class devices fs kernel power
bus dev firmware hypervisor module


برای نمونه دایرکتوری block, بلوک های سیستمی که اغلب هاردها یا فضاهای ذخیره سازی داخلی یا خارجی سیستم هستن رو نشون میده. این فضاها میتونن هارد داخلی, خارجی, USB ها و Logical Volume هایی باشند که موقع نصب یا پیکربندی سیستم ایجاد میشوند.

➜ /sys cd block
➜ block ls
dm-0 dm-1 sda sr0


اگر برای نمونه وارد پوشه ی sda بشیم, این امکانات و مشخصات و تنظیمات رو به من خواهد داد:

➜ block cd sda
➜ sda ls
alignment_offset events integrity sda1 sda7 subsystem
bdi events_async power sda2 sda8 trace
capability events_poll_msecs queue sda3 sda9 uevent
dev ext_range range sda4 size
device holders removable sda5 slaves
discard_alignment inflight ro sda6 stat


در کل یک سری اطلاعات به صورت فایل از سخت افزارهای سیستم در اختیار قرار میده و کاری به اسم و مدل سخت افزارهای ما نداره, فقط میگه هارد تو فلان مدله و این امکانات رو در اختیار میذاره. در مورد دایرکتوری مربوط به HAL که اطلاعات سخت افزاری رو نشون میده صحبت کردیم ولی خب لینوکس به باز بودن و قابلیت تغییر مشهوره و چقد خوب میشه اگه بتونیم به بعضی از سخت افزارهامون دسترسی و باهاشون تعامل داشته باشیم.
در پوشه ی root دایرکتوری به نام proc وجود داره که ما علاوه بر دیدن پروسس های سیستم میتونیم به سخت افزارهامون و اطلاعات کرنل (هسته سیستم عامل) مون به صورت انتزاعی هم دسترسی داشته باشیم(اطلاعاتی رو ازشون بخونیم یا روشون بنویسیم.)
➜ ~ cd /proc
➜ /proc ls
1 1326 1505 184 20 30 459 7 832 loadavg
10 1336 1516 1840 2066 31 46 7010 834 locks
1032 1339 1547 1849 2067 3190 462 720 9 mdstat
11 1343 1592 185 2068 32 4641 721 938 meminfo
110 1348 16 1851 2080 33 47 724 acpi misc
111 1351 1606 1853 2082 34 479 726 asound modules
112 1357 1611 1869 2090 3466 48 727 buddyinfo mounts
1129 1363 1622 1870 21 36 480 74 bus mtrr
113 1383 1626 1875 2101 3694 4875 745 cgroups net
1130 14 1628 1883 2115 37 49 747 cmdline pagetypeinfo
1131 1404 1633 1885 2119 3734 50 748 consoles partitions
1133 1405 1636 1886 2122 3778 51 752 cpuinfo sched_debug
1134 1412 1673 1887 2126 378 5167 753 crypto schedstat
114 1415 1678 1889 2154 38 52 754 devices scsi
115 1426 1681 1893 2184 3811 53 755 diskstats self
116 1427 1693 1894 22 385 54 756 dma slabinfo
117 1434 1698 1895 2212 386 542 758 driver softirqs
118 1447 17 1901 2213 387 55 759 execdomains stat
1184 1448 1714 1917 2254 388 56 764 fb swaps
119 1449 1728 1927 2270 3882 565 769 filesystems sys
12 1450 1737 1928 23 389 58 776 fs sysrq-trigger
120 1457 1751 1934 24 39 589 785 interrupts sysvipc
121 1458 1755 1948 2479 4 59 786 iomem thread-self
122 1464 1757 1961 25 40 594 787 ioports timer_list
123 1465 1762 1962 2592 4085 6 788 irq tty
1264 1468 1764 1974 26 4152 60 789 kallsyms uptime
1268 1474 1775 1976 2649 4161 612 790 kcore version
1270 1476 1777 1977 27 4241 632 791 keys vmallocinfo
1275 1477 1783 1978 28 43 635 8 key-users vmstat
1277 1478 18 1979 2812 44 6460 806 kmsg zoneinfo
13 1494 182 1980 2822 448 6746 811 kpagecgroup
130 1498 1822 1983 2840 45 6769 814 kpagecount
131 15 1829 1984 29 4503 697 823 kpageflags
1322 1501 1836 2 2978 451 698 830 latency_stats


چون یادگیری ما قرار هست ساده باشه و نمیخوایم با تنظیمات پیچیده جلو بریم به سراغ پوشه ی procsysfs خواهیم رفت و که فایلی با عنوان file_max که حداکثر تعداد باز بودن فایل درون سیستم عامل از طریف یک کاربر را مشخص میکند:

➜ fs ls
aio-max-nr file-nr mqueue protected_hardlinks
aio-nr inode-nr nr_open protected_symlinks
binfmt_misc inode-state overflowgid quota
dentry-state inotify overflowuid suid_dumpable
dir-notify-enable lease-break-time pipe-max-size
epoll leases-enable pipe-user-pages-hard
file-max mount-max pipe-user-pages-soft
➜ fs cat file-max
385672


که به صورت کاملا Live قابلیت تغییر

[root@fedora]/proc/sys/fs# echo 100000 > file-max
[root@fedora]/proc/sys/fs# cat file-max
100000


همچنین در پوشه ی proc به اطلاعات دیگه مثل اطلاعات cpu و ریز جزيیات هر پروسسور خودتون و همچنین اطلاعات حافظه به منظور درک بهتر نسبت به جزییات سیستم خودتون داشته باشید, میتونید با دستور زیر دسترسی پیدا کنید:

➜ /proc cat cpuinfo| less



➜ /proc cat meminfo | less


و همچنین تمام بلوک های حافظه قابل خواندن سیستمی را هم از طریق دستور زیر میتوانیم ببینیم :

➜ /proc cat mounts


تنظیمات جالب شبکه ای سطح کرنل سیستم عامل هم داخل پوشه ی procsysnet موجود میباشد, که شما میتونید تنظیمات مربوط به حافظه tcp در سیستم خودتون (tcp-mem) و یا اطلاعات مربوط به پروتکل icmp (دریافت ایمیل) و اطلاعات مربوط به بسته های ip را تغییر دهید. برای نمونه بعد از گرفتن دستور cat ip-forward میتونید مقدار این دستور رو دست خوش تغییر کنید در واقع این فایل به شما میگه که آیا سیستم شما نقض روتر را ایفا میکند و ip ها را از از خود به مسیر دیگری عبور میدهد
مفهوم dbus چیست ؟!
همینطور که از اسمش مشخصه dBUS مثل یک اتوبوسه ! که وظیفه ی اطلاع رسانی رو داره ٬‌یعنی چی ؟! یعنی وقتی فلان دیوایس رو متصل کردید به نرم افزار میگه که فلان مثلا کیبورد به دستگاه متصل شد میتونی ازش استفاده کنی ...
کاربرد dbus چی هست ؟ برای اینکه پاسخ این سئوال رو پیدا کنید از خودتون یک سئوال بپرسید ، آیا همه نرم افزارها از جمله سیستم عامل و application های کاربردی سیستم باید مستقیما با دایرکتوری های dev یا proc یا sys کار کنن ؟ طبیعتا خیر نیازی نیست ، این بین ما میایم یک واسط قرار میدیم که نقش دلال رو داره و واسطه بین همه این مجموعه ها و نرم افزارها هست ، الان فرض کنید که یک سخت افزار به سیستم شما اضافه میشه و شما از یک دسکتاپ به نام KDE استفاده می کنید ، این dbuss هست که میره اطلاعات مربوط به سخت افزار رو از لایه های پایین دریافت می کنه و سیگنال اینکار رو به سمت Desktop Managerr میفرسته و شما از محیط گرافیکی متوجه میشید که خوب یک سخت افزار جدید به سیستم اضافه شده یا حذف شده ، هر موقع اسم dbus رو شنیدید دقیقا یاد یک اتوبوس بیوفتید که قرار هست مسافرانش رو به مقصد برسونه و به محل کار مسافراش هم میگه کاری نداشته باشید مسافراتون از کجا میان شما باهاشون کار داشتید من آوردمشون ، کاری نداشته باشید هم می برمشون .

مفهوم dev یا udev چیست ؟!
یودو یه قانون گذار به تمام معناست ٬ چیزی که وظیفه ی قانون گذاری روی دستگاه های سخت افزاری رو داره . مثلا شما یک فلش به دستگاه وصل کردی با udev میتونی بهش دستور بدی که هر وقت مثلا این فلش وصل شد فایل های درایو D رو فقط عکس هاش رو کپی کن داخل همین فلش مخصوص ! خیلی هم باحاله !

دایرکتوری sys یا sysfs چی هست ؟!
یک دایرکتوری که اطلاعات HAL رو ذخیره میکنه و HAL وظیفه کنترل کردن sys رو داره . مثلا شما میخوایید یک آمار از سیستمتون بگیرید ببینید چه سخت افزارهایی متصل هستش میتونید با دستور sys کل سخت افزارهای بخش های مختلفی که متصل هستند رو دربیارید . sysfs هم در حقیقت مخفف sys file system هستش که کاربرد نداره و همون از sys باید استفاده بشه .


دایرکتوری Proc یا procfs در لینوکس چیست ؟!
مکانی برای ذخیره اطلاعات پردازنده ها هست و شما با استفاده از دایرکتوری proc میتونید اطلاعات پردازنده هاتون رو داشته باشید .
البته این مفهوم خیلی خیلی قدیمی هست و برمیگرده به سالهای 1990 و همون حدودها بنابراین یه مقدار دیدتون رو قدیمیتر کنید ، خوب در اون وهله زمانی ما مجبور بودیم دونه دونه پردازش ها یا Process های سیستم رو مدیریت کنیم ، خوب قبل از اینکه ادامه بدیم یک یادآوری هم بکنیم ، همه چیز در سیستم عامل لینوکس و خانواده یونیکس در قالب فایل هست و procfs هم همین هست یعنی یک فایل هست که داخلش مدیریت پردازش های CPU ما انجام میشه ، وقتی یک دستگاه یه سیستم ما متصل میشه داخل این فایل محتوایی قرار می گیره که باعث میشه ما بتونیم پردازش های مربوط به اون سخت افزار رو انجام بدیم ، خوب با توجه به حرف خودمون که همه چیز در قالب فایل ذخیره میشه بنابراین محتویات sysfs هم باید داخل یک فایل و یک فولدر قرار بگیرند که این محتویات در دایرکتوری به نام proc/ در سیستم عامل لینوکس وجود داره ، توجه کنید که proc/ یک فایل سیستم هست .

مفهوم lsmod (ال اس مود )‌ چیست ؟!
در واقع ls مخفف list size و بخش بعدی mod مخفف ماژول module هستش . یعنی لیست ماژول های که کرنل (هسته لینوکس) لود کرده است .
برای حذف کردن Drive Kernel Modulee ها ما می توانیم به راحتی با لیست کردن ماژول های کرنل با دستور lsmod و مشاهده نام آن ماژول و در نهایت وارد کردن دستور rmmod آن ماژول را حذف کنیم ، اما چگونه می توانیم آن را نصب کنیم ؟ برای نصب کردن Drive Kernel Module ما از دو دستور insmod و modprobe استفاده می کنیم ، اما مهمترین نکته تفاوت بین این دو دستور است ، زمانیکه صحبت از insmod می شود فقط و فقط درایورهایی نصب می شوند که چند فایل وابسته ندارند ، یعنی در اصطلاح فایل شما دارای Dependency نیست ، در چنین حالتی دستور insmod کار می کند ، اما در بسیاری از موارد ما هیچوقت از چنین دستوری استفاده نمی کنیم زیرا فاقد کارایی می باشد و اکثر درایورهای ما امروزه دارای وابستگی یا Dependency هستند ، برای اینکه در سیستم بصورت خودکار این وابستگی ها یا Dependency ها نصب شوند ما از دستور modprobe استفاده می کنیم .

مفهوم lsusb در لینوکس
مخفف ال اس را که میدانیم usb هم که همه با آن آشنا هستیم ! خب حله الان ؟! LSUSB راهیست برای لیست کردن usb های متصل به سیستم در لینوکس ...


#linux #dbus #udev @unixmens
🔰 ابزار شش کلاه تفکر به شما کمک میکنه نسبت به یک موضوع خاص دید 360 درجه پیدا کنید...