کمتر از یک هفته پس از این که مایکروسافت در ۲۳ آبان اقدام به انتشار یک Patch برای CVE-2017-11882 نمود، متخصصان امنیت سایبری دریافتند که مهاجمی با استفاده از یک کد مخرب و آسیبپذیریهای مایکروسافت آفیس اقدام به حمله سایبری به یک سازمان دولتی در خاورمیانه نموده اند. با توجه به ارزیابی که شرکت امنیتی FireEye انجام داده است این اقدام توسط یک گروه سایبری تحت عنوان APT34 صورت گرفته است که به منظور رسیدن به اهداف خود از یک PowerShell Backdoor استفاده مینماید.
به اعتقاد این شرکت، گروه APT34 که از سال ۲۰۱۴ در حال فعالیت است، درگیر یک عملیات بلند مدت سایبری بوده و به صورت عمده بر روی عملیات شناسایی آسیب پذیری ها متمرکز است. این گروه که عملیات خود را در خاورمیانه متمرکز نموده است اهداف گستردهای در صنایع متفاوت از جمله مالی، حکومتی، انرژی، شیمیایی و ارتباطات مخابراتی دارد.
این گروه از ترکیبی از ابزارهای عمومی و غیرعمومی استفاده کرده و معمولا با عملیات Spear Phishing از حسابهای دستکاری شده استفاده مینماید که این اقدام گاهی با روشهای مهندسی اجتماعی نیز همراه است. FireEye در اردیبهشت ماه ۹۵ یک Blog حاوی جزئیاتی از بانکهای هدف در منطقه خاورمیانه منتشر نمود که برای پخش کردن بدافزار POWBAT از پیوستهای Macro-Enabled استفاده میکرد، که به ادعای شرکت امنیتی سایبری FireEye به گروه APT34 نسبت داده شده است. در تیرماه ۹۶ مشاهده شد که این گروه با استفاده از یک Backdoor مبتنی بر PowerShell با نام POWRUNER و همچنین با استفاده از ابزار دانلود با قابلیت الگوریتم تولید دامنه با نام BONDUPDATER و بر اساس Stringهای درون بدافزار، در حال هدف قرار دادن سازمانی در خاورمیانه میباشد. این Backdoor از طریق یک فایل rtf. مخرب که در آسیبپذیری CVE-2017-0199 ارائه شده است، استفاده می کند.
این گروه در آخرین فعالیت خود به منظور پیادهسازی POWRUNER و BONDUPDATER از آسیبپذیری CVE-2017-11882 مایکروسافت آفیس استفاده کرده است.
گرچه ممکن است گروه APT34 چندان با گزارش های عمومی مربوط به گروه “OilRig” همخوانی نداشته باشد زیرا همانطور که هر سازمان به نوبهی خود برای ردیابی مهاجمان از مجموعه دادههای متفاوتی استفاده مینماید، به همین صورت هم محتمل است که دستهبندیهای این سازمان امنیتی از فعالیتهای این گروه کاملا با یکدیگر سازگار نباشد.
آسیب پذیری Stack Memory Corruption مایکروسافت آفیس
آسیبپذیری CVE-2017-11882 چندین نسخه از مایکروسافت آفیس را تحت تاثیر قرار میداد و هنگامی که مورد Exploit واقع شد به کاربر Remote اجازه میداد تا کد دلخواه خود را در متن کاربر به عنوان نتیجهی رسیدگی نادرست اطلاعات در حافظه به اجرا درآورد. نسخهی Patch این آسیبپذیری در ۲۳ آبان ۹۶ توسط مایکروسافت منتشر و نسخهی کامل Proof-Of-Concept یا به اختصار PoC نیز یک هفته بعد منتشر گردید.
این آسیبپذیری در نسخهی قدیمی (Equation Editor (EQNEDT32.EXE یکی از اجزای مایکروسافت آفیس که به منظور قرار دادن و ارزیابی نمودن فرمولهای ریاضی مورد استفاده قرار میگیرد، نیز موجود بود. Equation Editor در اسناد آفیس جاسازی شده و از تکنولوژی OLE استفاده مینماید و به عنوان فرایندی جداگانه و نه به عنوان فرایندی وابسته به برنامههای آفیس ایجاد شده است. در صورتی که یک فرمول ساخته شده به Equation Editor منتقل شود، در هنگام کپی دادهها، طول آنها توسط این برنامه مورد بررسی قرار نمیگیرد در نتیجه Stack Memory Corruption ایجاد خواهد شد. از آنجا که EQNEDT32.exe با استفاده از یک کامپایلر قدیمیتر کامپایل میشود و از تکنیک Address Space Layout Randomization یا به اختصار ASLR پشتیبانی نمینماید، تکنیکی که به منظور جلوگیری از سواستفاده از آسیبپذیریهای Memory Corruption پیکربندی شده است به خوبی عمل نکرده و در نتیجه مهاجم میتواند به آسانی مسیر اجرای برنامه را تغییر دهد.
الگوریتم اجرای فایل مخرب
این اسکریپت مخرب با استفاده از یک سری مراحل با موفقیت اجرا شده و در نهایت اتصالی به سرور کامند و کنترل (C2) برقرار میسازد. نقطه آغازین این جریان از یک Document مخرب نشان داده شده در شکل زیر میباشد.
#security @unixmens
به اعتقاد این شرکت، گروه APT34 که از سال ۲۰۱۴ در حال فعالیت است، درگیر یک عملیات بلند مدت سایبری بوده و به صورت عمده بر روی عملیات شناسایی آسیب پذیری ها متمرکز است. این گروه که عملیات خود را در خاورمیانه متمرکز نموده است اهداف گستردهای در صنایع متفاوت از جمله مالی، حکومتی، انرژی، شیمیایی و ارتباطات مخابراتی دارد.
این گروه از ترکیبی از ابزارهای عمومی و غیرعمومی استفاده کرده و معمولا با عملیات Spear Phishing از حسابهای دستکاری شده استفاده مینماید که این اقدام گاهی با روشهای مهندسی اجتماعی نیز همراه است. FireEye در اردیبهشت ماه ۹۵ یک Blog حاوی جزئیاتی از بانکهای هدف در منطقه خاورمیانه منتشر نمود که برای پخش کردن بدافزار POWBAT از پیوستهای Macro-Enabled استفاده میکرد، که به ادعای شرکت امنیتی سایبری FireEye به گروه APT34 نسبت داده شده است. در تیرماه ۹۶ مشاهده شد که این گروه با استفاده از یک Backdoor مبتنی بر PowerShell با نام POWRUNER و همچنین با استفاده از ابزار دانلود با قابلیت الگوریتم تولید دامنه با نام BONDUPDATER و بر اساس Stringهای درون بدافزار، در حال هدف قرار دادن سازمانی در خاورمیانه میباشد. این Backdoor از طریق یک فایل rtf. مخرب که در آسیبپذیری CVE-2017-0199 ارائه شده است، استفاده می کند.
این گروه در آخرین فعالیت خود به منظور پیادهسازی POWRUNER و BONDUPDATER از آسیبپذیری CVE-2017-11882 مایکروسافت آفیس استفاده کرده است.
گرچه ممکن است گروه APT34 چندان با گزارش های عمومی مربوط به گروه “OilRig” همخوانی نداشته باشد زیرا همانطور که هر سازمان به نوبهی خود برای ردیابی مهاجمان از مجموعه دادههای متفاوتی استفاده مینماید، به همین صورت هم محتمل است که دستهبندیهای این سازمان امنیتی از فعالیتهای این گروه کاملا با یکدیگر سازگار نباشد.
آسیب پذیری Stack Memory Corruption مایکروسافت آفیس
آسیبپذیری CVE-2017-11882 چندین نسخه از مایکروسافت آفیس را تحت تاثیر قرار میداد و هنگامی که مورد Exploit واقع شد به کاربر Remote اجازه میداد تا کد دلخواه خود را در متن کاربر به عنوان نتیجهی رسیدگی نادرست اطلاعات در حافظه به اجرا درآورد. نسخهی Patch این آسیبپذیری در ۲۳ آبان ۹۶ توسط مایکروسافت منتشر و نسخهی کامل Proof-Of-Concept یا به اختصار PoC نیز یک هفته بعد منتشر گردید.
این آسیبپذیری در نسخهی قدیمی (Equation Editor (EQNEDT32.EXE یکی از اجزای مایکروسافت آفیس که به منظور قرار دادن و ارزیابی نمودن فرمولهای ریاضی مورد استفاده قرار میگیرد، نیز موجود بود. Equation Editor در اسناد آفیس جاسازی شده و از تکنولوژی OLE استفاده مینماید و به عنوان فرایندی جداگانه و نه به عنوان فرایندی وابسته به برنامههای آفیس ایجاد شده است. در صورتی که یک فرمول ساخته شده به Equation Editor منتقل شود، در هنگام کپی دادهها، طول آنها توسط این برنامه مورد بررسی قرار نمیگیرد در نتیجه Stack Memory Corruption ایجاد خواهد شد. از آنجا که EQNEDT32.exe با استفاده از یک کامپایلر قدیمیتر کامپایل میشود و از تکنیک Address Space Layout Randomization یا به اختصار ASLR پشتیبانی نمینماید، تکنیکی که به منظور جلوگیری از سواستفاده از آسیبپذیریهای Memory Corruption پیکربندی شده است به خوبی عمل نکرده و در نتیجه مهاجم میتواند به آسانی مسیر اجرای برنامه را تغییر دهد.
الگوریتم اجرای فایل مخرب
این اسکریپت مخرب با استفاده از یک سری مراحل با موفقیت اجرا شده و در نهایت اتصالی به سرور کامند و کنترل (C2) برقرار میسازد. نقطه آغازین این جریان از یک Document مخرب نشان داده شده در شکل زیر میباشد.
#security @unixmens
پس از اجرای موفق مراحل ذکر شده در بخش بالا، سرویس Task Scheduler در ویندوز هر ثانیه فایل GoogleUpdateschecker.vbs را راهاندازی میکند که در نتیجه این فایل، اسکریپتهای dUpdateCheckers.ps1 و hUpdateCheckers.ps1 را اجرا مینماید. این اسکریپتهای PowerShell بارهای نهایی فرایند میباشند که شامل یک دانلودکننده با قابلیت الگوریتم تولید دامنه یا به اختصار DGA و اجزای Backdoor است، که برای دریافت دستورات و انجام فعالیتهای مخرب دیگر، به سرور C2 متصل میشوند.
#security @unixmens
#security @unixmens
شرکت Amazon Web Service که به اختصار AWS نیز نامیده میشود، اخیرا به منظور پیشبرد دانش هوش مصنوعی (AI) در محیطی آرام و تعاملی به انجمن Deep Learning در Open Neural Network Exchange پیوسته است. لازم به ذکر است که فیسبوک و مایکروسافت از پیشگامان این حرکت بودهاند.
در واقع AWS به عنوان بخشی از این همکاری، پکیج Python خود با نام ONNX-MxNet که به صورت Open Source میباشد را به عنوان چارچوب Deep Learning ارائه داده که Interface برنامه نویسی برنامههای کاربردی در چندین زبان مختلف شامل Python ،Scala و نرمافزار آماری منبعباز R را فراهم میآورد.
فرمت ONNX به Devoloperها این امکان را میدهد تا مدلها را برای چارچوبهای دیگری همچون PyTorch، Microsoft Cognitive Toolkit یا Caffe2، AWS Deep Learning Engineering Manager Hagay Lupesko و Software Developer Roshani Nagmote ساخته و آموزش دهند. همچنین Developerها میتوانند این مدلها را به MXNet منتقل نموده و آنها را به منظور استنتاج به اجرا درآورند.
تابستان امسال فیسبوک و مایکروسافت به منظور پشتیبانی از یک مدل مشترک تعاملپذیر برای پیشرفت هوش مصنوعی، ONNX را راهاندازی نمودند و مایکروسافت تکنولوژیهای خود مانند Cognitive Toolkit، Caffe2 و PyTorch را جهت پشتیبانی از ONNX اختصاص داد.
بنا به گفتهی مایکروسافت، Cognitive Toolkit و دیگر چارچوبها، ایجاد و اجرای نمودارهای محاسباتی که نشانگر شبکههای عصبی میباشند را برای توسعه دهندگان تسهیل مینماید. لازم به ذکر است که نسخههای ابتدایی کد ONNX و برخی مستندات آن در Github قابل دسترسی میباشند. همچنین ماه گذشته AWS و مایکروسافت از برنامههای خود برای ارائه Gluon به عنوان یک Interface جدید در Apache MXNet خبر دادند که با استفاده از آن Developerها میتوانند مدلهای Deep Learning را ساخته و آموزش دهند.
در واقع Aditya Kaul، مدیر تحقیقاتی شرکت Tractica اظهار داشت: Gluon افزونهای میباشد که حاصل شراکت مایکروسافت و AWS بوده و در حال رقابت با Google Tensorflow میباشد اما حذف گوگل از این بازار کاملا قابل پیشبینی بوده و به زودی AWS و مایکروسافت بر این بازار مسلط خواهند شد. گرچه که Tensorflow به صورت Open Source میباشد ولی این ویژگیِ چندان چشمگیری نیست و باعث همکاری سایر رقبا برای رقابت با Google میگردد.
در واقع Apache MXNet اخیرا نسخهی ۰.۱۲ از MXNet را معرفی نموده است که عملکرد Gluon را توسعه میدهد تا مطابق با خواسته AWS تحقیقات جدید را میسر سازد. از جمله ویژگیهای جدید این نسخه، Dropout متغیر است که Developerها را قادر میسازد تا برای کاهش Overfitting شبکههای عصبی تکرار شونده، تکنیک Dropout را اعمال نمایند.
همچنین AWS اعلام نموده است که قابلیتهای Convolutional RNN، Long Short-Term Memory و (GRU (Gated Recurrent Unit، به مجموعههای داده این امکان را میدهند تا با استفاد از توالی زمانی و ابعاد فضایی مدلسازی شوند.
در واقع AWS به عنوان بخشی از این همکاری، پکیج Python خود با نام ONNX-MxNet که به صورت Open Source میباشد را به عنوان چارچوب Deep Learning ارائه داده که Interface برنامه نویسی برنامههای کاربردی در چندین زبان مختلف شامل Python ،Scala و نرمافزار آماری منبعباز R را فراهم میآورد.
فرمت ONNX به Devoloperها این امکان را میدهد تا مدلها را برای چارچوبهای دیگری همچون PyTorch، Microsoft Cognitive Toolkit یا Caffe2، AWS Deep Learning Engineering Manager Hagay Lupesko و Software Developer Roshani Nagmote ساخته و آموزش دهند. همچنین Developerها میتوانند این مدلها را به MXNet منتقل نموده و آنها را به منظور استنتاج به اجرا درآورند.
تابستان امسال فیسبوک و مایکروسافت به منظور پشتیبانی از یک مدل مشترک تعاملپذیر برای پیشرفت هوش مصنوعی، ONNX را راهاندازی نمودند و مایکروسافت تکنولوژیهای خود مانند Cognitive Toolkit، Caffe2 و PyTorch را جهت پشتیبانی از ONNX اختصاص داد.
بنا به گفتهی مایکروسافت، Cognitive Toolkit و دیگر چارچوبها، ایجاد و اجرای نمودارهای محاسباتی که نشانگر شبکههای عصبی میباشند را برای توسعه دهندگان تسهیل مینماید. لازم به ذکر است که نسخههای ابتدایی کد ONNX و برخی مستندات آن در Github قابل دسترسی میباشند. همچنین ماه گذشته AWS و مایکروسافت از برنامههای خود برای ارائه Gluon به عنوان یک Interface جدید در Apache MXNet خبر دادند که با استفاده از آن Developerها میتوانند مدلهای Deep Learning را ساخته و آموزش دهند.
در واقع Aditya Kaul، مدیر تحقیقاتی شرکت Tractica اظهار داشت: Gluon افزونهای میباشد که حاصل شراکت مایکروسافت و AWS بوده و در حال رقابت با Google Tensorflow میباشد اما حذف گوگل از این بازار کاملا قابل پیشبینی بوده و به زودی AWS و مایکروسافت بر این بازار مسلط خواهند شد. گرچه که Tensorflow به صورت Open Source میباشد ولی این ویژگیِ چندان چشمگیری نیست و باعث همکاری سایر رقبا برای رقابت با Google میگردد.
در واقع Apache MXNet اخیرا نسخهی ۰.۱۲ از MXNet را معرفی نموده است که عملکرد Gluon را توسعه میدهد تا مطابق با خواسته AWS تحقیقات جدید را میسر سازد. از جمله ویژگیهای جدید این نسخه، Dropout متغیر است که Developerها را قادر میسازد تا برای کاهش Overfitting شبکههای عصبی تکرار شونده، تکنیک Dropout را اعمال نمایند.
همچنین AWS اعلام نموده است که قابلیتهای Convolutional RNN، Long Short-Term Memory و (GRU (Gated Recurrent Unit، به مجموعههای داده این امکان را میدهند تا با استفاد از توالی زمانی و ابعاد فضایی مدلسازی شوند.
هک های بزرگ دنیا // همانطور که مشاهده میکنید هر روز چالش امنیت زیادتر شده
https://www.informationisbeautiful.net/visualizations/worlds-biggest-data-breaches-hacks/
https://www.informationisbeautiful.net/visualizations/worlds-biggest-data-breaches-hacks/
Information is Beautiful
World’s Biggest Data Breaches & Hacks — Information is Beautiful
Data visualization of the world biggest data breaches, leaks and hacks. Constantly updated. Powered by @VizSweet.
اگر در حال تلاش برای متقاعد کردن مدیریت خود برای تقویت امنیتِ سازمان جهت حفاظت در برابر نفوذ به داده های خود هستید ، یک اینفوگرافی تعاملی از این سایت ممکن است به شما کمک کند .
گزارش تصویری بزرگترین رخنه های امنیتی داده در جهان که با ابزارهای VIZsweet متعلق به این سایت ساخته شده است ، حاصل ترکیب داده هایی از DataBreaches.net و IdTheftCentre و برخی دیگر گزارش ها برای ایجاد یک جدول زمانی از نقص ها می باشد که شامل از دست رفتن ۳۰ هزار رکورد و یا حتی بیشتر میشود. نکته جالب توجه این است که ، در حالی که نقص ها ناشی از انتشار تصادفی ، خطا در پیکر بندی ، برنامه های داخلی ، سرقت یا از دست رفتن کامپیوتر و رسانه یا حتی امنیت ضعیف و نسبتا قدیمی وسایل می شوند ، اکثریت و بزرگترین رخنه ها به دلیل هک کردن است .
البته بایستی اطمینان حاصل کرد که مدیران ارشد سازمان به این نکته توجه کنند که الزاما نیازی نیست تا یک سازمان بزرگ بود تا رخنه های جدی در داده ها اتفاق بیافتد .
#security @unixmens
گزارش تصویری بزرگترین رخنه های امنیتی داده در جهان که با ابزارهای VIZsweet متعلق به این سایت ساخته شده است ، حاصل ترکیب داده هایی از DataBreaches.net و IdTheftCentre و برخی دیگر گزارش ها برای ایجاد یک جدول زمانی از نقص ها می باشد که شامل از دست رفتن ۳۰ هزار رکورد و یا حتی بیشتر میشود. نکته جالب توجه این است که ، در حالی که نقص ها ناشی از انتشار تصادفی ، خطا در پیکر بندی ، برنامه های داخلی ، سرقت یا از دست رفتن کامپیوتر و رسانه یا حتی امنیت ضعیف و نسبتا قدیمی وسایل می شوند ، اکثریت و بزرگترین رخنه ها به دلیل هک کردن است .
البته بایستی اطمینان حاصل کرد که مدیران ارشد سازمان به این نکته توجه کنند که الزاما نیازی نیست تا یک سازمان بزرگ بود تا رخنه های جدی در داده ها اتفاق بیافتد .
#security @unixmens
در اینجا هست که مباحث hardering مطرح میشود
This media is not supported in your browser
VIEW IN TELEGRAM
آینده تکنولوژی
سلام ، وقت بخیر خدمت دوستان عزیز
یکی از ویژگی خوب گنو/لینوکس مفهوم package manager هست ما انواع package manager ها را داریم از جمله :
yum
apt
pip
yarn
npm
va ...
در آینده در موردشون بیشتر توضیح حواهم داد
#package_manager @unixmens
یکی از ویژگی خوب گنو/لینوکس مفهوم package manager هست ما انواع package manager ها را داریم از جمله :
yum
apt
pip
yarn
npm
va ...
در آینده در موردشون بیشتر توضیح حواهم داد
#package_manager @unixmens
کتاب مدیریت بسته ها در گنو/لینوکس
https://unixmen.ir/%da%a9%d8%aa%d8%a7%d8%a8-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%a8%d8%b3%d8%aa%d9%87-%d9%87%d8%a7-%d8%af%d8%b1-%da%af%d9%86%d9%88-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/
#linux #package_manager #yashar_esmaildokht @unixmens
https://unixmen.ir/%da%a9%d8%aa%d8%a7%d8%a8-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%a8%d8%b3%d8%aa%d9%87-%d9%87%d8%a7-%d8%af%d8%b1-%da%af%d9%86%d9%88-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/
#linux #package_manager #yashar_esmaildokht @unixmens
مرجع اپن سورس ، گنو/لینوکس
کتاب مدیریت بسته ها در گنو/لینوکس - مرجع اپن سورس ، گنو/لینوکس
کتاب مدیریت بسته ها در گنو/لینوکس نویسنده : مهندس اسمعیل دخت لینک دانلود
Forwarded from گروه صنعتی نوآوران کنترل (Saber)
*Made on Earth by humans*
(ساخته شده در زمین بوسیله انسان ها 😁)
عبارت چاپ شده روی برد الکترونیکی خودروی Roadster شرکت Tesla Motors که دیروز توسط شاتل فضایی Falcon Heavy شرکت SpaceX به فضا پرتاب شد.
(ساخته شده در زمین بوسیله انسان ها 😁)
عبارت چاپ شده روی برد الکترونیکی خودروی 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
:~# 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
هر کاربر استفاده کننده از سیستم لینوکسی ممکن است متغیر محیطی 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 رو گفته باهاش کاری نداشته باشید.
لایه تجرید سختافزار (به انگلیسی: 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 رو گفته باهاش کاری نداشته باشید.