سیاره لینوکس فارسی

آموزش خط فرمان: قسمت بیست و نهم، کنترل پروسه‌ها

نوشته شده توسط فرشید نوتاش حقیقت.

اکنون که می‌توانیم پروسه‌ها را ببینیم و آن‌ها را مانیتور کنیم. بایستی کمی بر روی آن‌ها پیدا کنیم. به منظور آزمون از یک برنامه کوچک که xlogo نام دارد استفاده می‌کنیم. برنامه xlogo یک برنامه نمونه است که X Window System (دستگاه زیربنایی که باعث می‌شود تصویر گرافیکی بر روی نمایشگر نمایان شود) عرضه شده است.

 X Window به سادگی یک پنجره با قابلیت تغییر اندازه که حاوی لوگو x است را نمایش داده که آن را تست می‌کنیم:

پس از آن که فرمان xlogo را در خط فرمان وارد کردید یک پنجره کوچک حاوی لوگو بایستی بر روی صفحه نمایش نمایان شود. بر روی برخی سیستم‌ها این فرمان ممکن است یک پیام هشدار را نمایش دهد که می‌توان آن را نادیده گرفت.

ایجاد وقفه در یک پروسه

بیایید ببینیم چه اتفاقی رخ خواهد داد که دوباره برنامه xlogo را اجرا کنیم. اول فرمان xlogo را وارد کنید و مطمئن شوید که برنامه در حال اجراست. سپس به ترمینال بازگشته و کلیدهای ترکیبی Ctrl+C را فشار دهید:

در داخل ترمینال وارد کردن Ctrl+C باعث ایجاد وقفه در یک برنامه می‌شود. به این معنا که ما خیلی از برنامه درخواست کرده‌ایم که پایان بیابد. وقتی که xlogo را وارد کردیم، پنجره xlogo بسته می‌شود و خط فرمان به حالت عادی باز می‌گردد.

در بسیاری از برنامه‌ها (نه لزوماً همه آن‌ها) می‌توان با استفاده از این تکنیک در خط فرمان وقفه ایجاد نمود.

قرار دادن یک پروسه در پس‌زمینه

فرض کنید که می‌خواهیم بدون پایان دادن به برنامه xlogo به خط فرمان شل (Shell) بازگردیم. این کار را با قرار دادن برنامه در حال اجرا در پس‌زمینه انجام خواهیم داد. فرض کنید که ترمینال دارای یک نمای جلویی (با چیزهایی که بر روی آن نمایان است) و یک نمای پس‌زمینه (با چیزهایی که در زیر آن مخفی است) می‌باشد. برای اجرای برنامه و قرار دادن سریع آن در پس‌زمینه پس از فرمان یک علامت & قرار می‌دهیم:

پس از ان که فرمان وارد شده، پنجره xlogo نمایان می‌شود ولی این بار خط فرمان شل (Shell) باز می‌گردد. توجه کنید اعدادی هم نمایش داده می‌شوند. این پیام بخشی از ویژگی Shell تحت عنوان «کنترل وظیفه» می‌باشد. با این پیام Shell به ما می‌گوید که ما کار شماره ۱ را آغاز کرده‌ایم که دارای PID به شماره ۲۸۲۳۶ است. اگر که فرمان ps را وارد کنیم، مشاهده می‌کنیم که این پروسه به لیست پروسه اضافه شده است:

ویژگی کنترل وظیفه همچنین به ما این قابلیت را می‌دهد که لیست کارهایی که از ترمینال اجرا شده‌اند را مشاهده کنیم:

بازگردان یک پروسه به نمای جلویی

پروسه‌ای که در پس‌زمینه در حال اجراست از ورودی‌های صفحه کلید مصون است، شامل هر گونه وقفه که با وارد کردن Ctrl+C ایجاد می‌شود. به منظور بازگرداندن یک پروسه به نمای جلویی از دستور fg استفاده کنید، به مثال زیر دقت کنید:

توقف یک پروسه

برخی اوقات ما می‌خواهیم که یک پروسه را بدون از بین بردن و پایان دادن آن متوقف کنیم. این کار معمولاً به این دلیل انجام می‌شود که به ما اجازه دهد تا پروسه‌ای را از نمای جلویی به پس‌زمینه منتقل کنیم. به منظور توقف یک پروسه در نمای جلویی Ctrl+Z را وارد کنید. به مثال زیر توجه کنید:

پس از متوقف کردن xlogo ما می‌توانیم با تغییر اندازه پنجره xlogo تایید کنیم که برنامه متوقف شده است.

برای بازگرداندن برنامه به نمای جلویی فرمان fg %1 را وارد کنید و به منظور انتقال برنامه به پس‌زمینه فرمان bg %1 را وارد نمایید:

منبع: کتاب The Linux Command Line نوشته William E. Shotts

نوشته آموزش خط فرمان: قسمت بیست و نهم، کنترل پروسه‌ها اولین بار در لینوکس سیزن پدیدار شد.

چرا بلاک‌چین گزینه‌ مناسبی برای رای‌گیری‌های رسمی نیست

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

این هیجان به دنیای سیاست هم رسید و یکی از نمودهای اصلیش در سطح سیاست گذارها *برگزاری انتخابات مبتنی بر بلاک چین** بود. مزیت اینکار چیه؟ اگر انتخابات روی بلاک چین اتفاق بیافته، دیگه یک سیستم متمرکز رای‌ها را شمارش و اعلام نمی کنه بلکه همه به تمام رای‌های داده شده دسترسی دارن و نتیجه هم برای همه قابل قبوله. بخصوص در کشوری فرضی که مردم معتقدن به زور اسلحه و چماق و حبس خانگی و … نتایج رو می شه عوض کرد، بودن بلاک چین به همه ثابت می کنه که نتیجه همونی بوده که اعلام شده چون هر «همه به نتایج دسترسی دارن». معلومه که این از نظر طرفداران دموکراسی خیلی هم هیجان انگیزه. منم مثل خیلی‌ها بلاک چین رو دوست دارم و ازش نمی‌ترسم که هیچ، دوستش هم دارم و در حد معقولی می فهممش و متاسفانه باید بگم که بلاک چین به هیچ وجه گزینه خوبی در انتخابات سیاسی یا حتی اجتماعی نیست. در واقع هر جا که قرار باشه رای مخفی باشه، اینکه چه کسی رای داده و چه کسی رای نداده مخفی باشه و اینکه چه کسی به چه کسی رای بده در اختیار خودش باشه، بلاک چین کارا نیست و معلومه که این می شه تقریبا همه انتخابات مرسوم دنیا.

مطمئنا من صلاحیت نظر دهی نهایی در این باره رو ندارم ولی باید بگم که این نظر، نظر بسیاری از متخصصین همین حوزه هم هست. از آکادمی ملی علوم تا [اساتید مهم رمزنگاری (۱ و ۲) و رمزنگار ارشد مایکروسافت و غیره و غیره معتقد هستن نه فقط بلاک چین گزینه خوبی برای رای‌گیری نیست که حتی رای گیری الکترونیک هم هنوز راه زیادی تا عملیاتی شدن داره؛ البته در کشوری که قرار باشه توش به رای مردم احترام گذاشته بشه. بذارین به شکل فشرده، مشکلات رو در دو بخش بگم. بخش اول مشکلات خود بلاک چین است و بخش دوم، مشکلات عمومی الکترونیک کردن رای گیری های مهم.

مشکلات خود بلاک چین

نیاز به شناسایی مرکزی افراد

اگر قرار باشه ما در یک زنجیره بلوکی رای بدیم، باید اول یک چیزی شبیه کد رای دهی دریافت کنیم که تقریبا معادل کیف پول های بیت کوین خواهد بود. در واقع شما باید از طرف یک مرکزی شناسایی بشین و به شما یک کد ویژه بدن که بعدا بتونین باهاش رای بدین. این اتفاق کل بحث «ناشناسی» و از اون بالاتر «بدون مرکز بودن» رو زیر سوال می‌بره. در دنیای بیت کوین، هر کس می تونه یک یا چند کیف پول بسازه ولی اگر قرار باشه رای دهی داشته باشیم باید دقیقا به هر آدم واجد شرایط یک آی دی داده بشه که بشه باهاش رای داد و خب اگر قراره یک مرکز کل اطلاعات «این آدم اجازه داره رای بده» رو بده، رای ها رو هم خودش بشمره دیگه چون دقیقا همین مرکز می تونه ۸ میلیون «این آدم می تونه رای بده» دیگه هم تولید کنه که شهروندی پشتش نیست و در دوره رای گیری باهاش رای بده.

پروسه دادن کلیدها، امن نگه داشتن اونها و ریوک کردن اونها

در مرحله قبل گفتم که یک مرکز مشخص باید تک تک آدم ها رو احراز هویت کنه و بعد از شناسایی بهشون یک کد بده. همون مرکز باید بررسی کنه کی ۱۸ سالش شده و بهش کد بده، بعد ببینه کی توی چه انتخاباتی می تونه رای بده و بهش کد اون انتخابات رو بده یا دسترسی فلان کد به فلان رای دهی رو باز کنه و وقتی کسی فوت کرد باید بتونن کدش رو حذف کنن که دیگه نتونه رای بده. بررسی، دادن و گرفتن این‌ها خودش یک ساز و کار بزرگ می شه که نیازمند سازمان تمام وقت مستقل خودشه و در آخر هم دقیقا نمی شه مطمئن بود دقیقا همه افراد واجد شرایط – و نه هیچ کس دیگه – در هر انتخابات حق رای دارن و من و شما هم نمی‌تونیم بدونیم تک تک رای دهنده ها واقعی هستن یا نه چون اگر قرار باشه ما بدونیم پشت هر کد چه کسی است، رای هر کسی رو هم تا ابد خواهیم دونست.

اجبار در رای

در دنیایی که رای دهی با بلاک چین انجام می‌شه، یک نفر می تونه بالا سر شما بایسته و نگاه کنه چطوری رای می دین و از شما بخواد که حتما به فلانی رای بدین. ایده رای گیری بلاک چین اینه که هر کس از خونه اش یا محل کارش رای بده و مدیر می تونه اعلام کنه که همه باید روز دوشنبه ساعت ۱۰ بشینن و به اونی که می گه رای بدن در غیراینصورت اخراج می شن. دلیلی که حتی اگر با همراه به صندوق رای می رین، موقع نوشتن رای می رین توی یک غرفه و تنهایی رای رو می نویسین و تا می کنین و می ندازین تو صندوق جلوگیری از این مساله است. در رای گیری دیجیتال جلوگیری از این ماجرا بسیار سختتره. بعضی مقاله‌ها دارن سعی می کنن راه‌هایی برای مقابله با این مساله پیدا کنن ولی جواب‌هاشون اونقدر پیچیده است که متخصصین به سختی می تونن مقاله رو دنبال کنن، چه برسه به اینکه عملیاتی در سطح کشور انجام بشن. اگر علاقمند هستین دنبال coercion free blockchain سرچ کنید.

خرید رای

الان اگر شما بخواین رای بخرین باید با یک گونی سیب زمینی برین به حوزه فلان و بگین هر کس اسم فلانی رو در صندوق بندازه، یک سیب زمینی جایزه می گیره و بعد امیدوار باشین که آدم ها به شما دروغ نگن و توی غرفه اسم مورد نظر شما رو بنویسن. یا باید شناسنامه ها رو جمع کنین و بعد با یکسری آدم دیگه برین باهاشون رای بدین و بعد شناسنامه ها رو برگردونین. در مکانیزم دیجیتال یا بلاک چین این دردسرها وجود نداره به سادگی می تونین برین در یک منطقه و بگین «نفری یک گونی سیب زمینی می دم ولی اون کد رای گیری تون رو بدین به من» و روز رای گیری چند صد هزار کد داشته باشین که می تونه توی این انتخابات یا تا ابد رای بده (: بامزه تر وقتی است که این کد بتونه تا آخر عمر اون آدم برای شما رای بده.

تاریخچه واضح هر رای

و البته در تمام طول تاریخ هم نه فقط مرکزی که کدها رو می ده و می گیره که هر کسی که کد شما رو داره می تونه چک کنه دقیقا در کدوم انتخابات به چه کسی رای دادین. اینکار الان از روی مهر شناسنامه در حد «فلانی در فلان انتخابات رای داده یا نه» عملی است ولی در سیستم بلاک چین یا حتی هر رای گیری دیجیتال، کسی که اون کد شما رو داره می تونه چک کنه که شما به چه کسانی رای دادین یا حتی بالاتر از اون، موقع استخدام، درخواست وام یا حتی خرید بلیت هواپیما کامپیوتر خودش یک عدد ۱ تا ۱۰ کنار عکس شما نشون بده که بر اساس رای های شما در جاهای مختلف بگه چقدر التزام عملی به انتخاب اول داشتین و چقدر با شیطنت سعی کردین به انتخاب دوم رای بدین (: اگر براتون عجیبه، این دقیقا اتفاقی است که در چین داره می افته.

حملات مستقیم به بلاک چین

بلاک چین شدیدا در مقابله حملات متنوعی ضربه پذیره. مثلا در حمله اکثریت، اگر شما قدرت پردازشی قوی ای رو داشته باشین یا حتی اجاره کنین می تونین نتایج رو به نفع خودتون تغییر بدین. این مکانیزم باعث شده بعضی ها بگن اصولا بلاک چین با ولت های آزاد در دنیای بزرگ و جدی مورد شک باشه. یعنی اگر روزی یک غول تصمیم بگیره بیت کوین رو از بین ببره، به راحتی می تونه اینکار رو بکنه. حالا کافیه یک نیم غول تصمیم بگیره ۵۱٪ توان پردازشی ای که در انتخابات فلان جا برگزار شده رو اختصاص بده تا کل انتخابات رو به نفع خودش عوض کنه، و اینکار رو بکنه (: فهرست نسبتا کاملی از حمله ها علیه زنجیره بلوکی رو اینجا ببینین.

مشکلات جانبی

تا اینجا مشکل عمومی سیستم بلاک چین رو دیدیم، ولی کلیت رای گیری دیجیتال هم در دنیا شدیدا با شک و تردید نگاه می شه و هنوز اکثر کشورها خودشون رو آماده اون نمی دونن. مهمترین سند هم مربوط به گزارش آمریکا در این مورد است که در نهایت تصمیم گرفتن فعلا رای گیری‌هاشون رو دیجیتال نکنن. اینها چند مشکل عمومی رای گیری غیرکاغذی هستن:

ابزارهای رای دهی

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

عدم دسترسی / درک کافی

این روزها دولت در همه جا سعی می کنه با «الکترونیک کردن» کلی از کارهای خودش رو سبک کنه ولی مساله ای که فراموش می شه اینه که چقدر آدم از این بازی های الکترونیک بیرون می مونن. اگر رای گیری دیجیتال بشه احتمال داره گروهی که اسمارت فون ندارن یا با کامپیوترها راحت نیستن اشتیاق کمتری به رای دادن پیدا کنن. در واقع هر چقدر همه چیز رو تکنولوژیک تر کنیم (مثلا ثبت نام کنکور رو) احتمال بیشتری ساختیم که دهک‌های پایین جامعه از اون بازی بیرون گذاشته بشن. به بعدی هم نگاه کنین…

نفوذگرهای سایبری

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

مفهوم دموکراسی وابسته به فهم ساز و کار دموکراتیک است

دموکراسی برای ما شده اینکه «تا الان ۴۰۰ تا رای گیری داشتیم پس خیلی دموکرات هستیم». در حالی که بخش‌های بسیار مهمی از دموکراسی اصولا فراموش شده (مثلا حقوق اقلیت). یکی از این فراموش شده‌ها فهم ساز و کار دموکراتیک است. اگر پروسه‌های انتخاباتی شفاف نباشه، اگر مردم نتونن دقیقا درک کنن که چی شد که فلانی انتخاب شد، اگر آدم‌ها نفهمن که قانون چطوری تصویب می شه، اگر ما ندونیم که برای اعتراض به فلان چیز چه روش دموکراتیکی هست، اگر روشی دیده نشه که بشه چیزی که نمی خوایم تغییر کنه و .. دموکراسی در حال ضعیف‌تر شدن است. یکی از دلایلی که کشورها هنوز سیستم کلاسیک و حتی عجیب برای امروز رفتن تو غرفه و نوشتن اسم رو کاغذ رو حفظ کردن اینه که می خوان این روند در ذهن همه آدم ها قابل درک و شفاف باشه. واقعا حس کنن دارن حزبی رو انتخاب می کنن و بعد اینقدر رای آورد و انتخاب شد یا نشد. درسته که در آینده احتمالا رای گیری دیجیتال مرسوم خواهد شد ولی فعلا از ذهن مردم دور است و نظر خیلی از دولت‌ها این بوده که بهتره برای امنیت رای گیری و استمرار تصور ذهنی مردم از دموکراسی شون فعلا سراغ رای گیری دیجیتال نرن.

جمع بندی

بلاک چین هیجان انگیزه ولی ابزار خوبی برای رای گیری هایی که قراره توش شروطی مثل
– مخفی بودن رای
– اطمینان از هویت رای دهنده ها مستقل از اینکه به کی رای دادن
حفظ بشه مناسب نیست. کشورهای کوچیک‌ با سطح امکانات و سواد تکنولوژیک بالا دارن در حوزه‌های مختلفی رای دهی دیجیتال رو تست می کنن ولی هیچ کشوری در جهان هنوز برای رای گیری سراغ بلاک چین نرفته. درسته که زنجیره بلوکی مد روز است/بود و هیجان انگیز و بفروش ولی حتی اگر در دهه آینده رای گیری الکترونیکی همه گیر بشه، تکنولوژی بر اساس دیتابیس مرکزی خواهد بود و بلاک چین گزینه مناسبی برای اینگونه رای گیری ها نیست.

آموزش خط فرمان: قسمت بیست و هشتم، فرآیندها

نوشته شده توسط فرشید نوتاش حقیقت.

همانطور که می‌دانید سیستم‌عامل‌های مدرن به صورت چندوظیفه‌ای عمل می‌کنند؛ به این معنا که با جابه‌جایی دایم بین برنامه‌های در حال اجرا این تصور را ایجاد می‌کنند که چند کار در حال انجام می‌باشد. هسته لینوکس این کار را با استفاده از پروسه‌ها یا همان فرآیندها انجام می‌دهد. فرآیندها شیوه‌ای هستند که لینوکس با استفاده از آن برنامه‌های مختلفی را که در CPU منتظر اجرا شدن هستند را مدیریت می‌کند. برخی اوقات یک برنامه کند شده و یا یک اپلیکیشن خاص قادر به پاسخگویی نیست. در این فصل به برخی ابزارهای موجود در خط فرمان که به ما اجازه آزمون عملکرد برنامه‌ها و پروسه‌های آن‌ها را می‌دهد نگاهی می‌کنیم.

فرآیندها در لینوکس چگونه کار می‌کنند؟

هنگامی که یک سیستم شروع به کار می‌کند. هسته مرکزی یا همان کرنل (Kernel) فعالیت‌هایی را به عنوان پروسه آغاز کرده و برنامه‌ای با نام init را اجرا می‌کند.

Init نیز به نوبه خود، اسکریپت‌هایی از شل (Shell) را که در مسیر /etc قرار دارند اجرا کرده (به آن‌ها اسکریپت‌های init می‌گویند) که این اسکریپت‌ها نیز سرویس‌های سیستم را آغاز می‌کنند.

بسیاری از این سرویس‌ها به عنوان daemon programs پیاده‌سازی می‌شود، یعنی برنامه‌هایی که مثل روح در پس‌زمینه باقی مانده و وظیفه خود را بدون رابط کاربری انجام می‌دهند.

این واقعیت که یک برنامه قادر است دیگر برنامه‌ها را اجرا کند بر اساس یک طرح پردازشی بیان می‌شود که در این طرح پروسه والد، پروسه‌های فرزند را اجرا می‌کند.

هسته مرکزی اطلاعات هر پروسه را نگهداری می‌کند تا همه چیز سازماندهی شده باشد. برای مثال هر پروسه یک شماره که شناسه پروسه یا Process ID و به اختصار PID را دریافت می‌کند. همچنین کرنل (هسته مرکزی) حافظه‌ای که به هر پردازش اختصاص می‌یابد و آمادگی پردازش برای بازگشت به اجرا را پیگیری می‌کند. قابل توجه است که در لینوکس پروسه‌ها نیز همچون فایل‌ها مالک و شناسه کاربر و … دارند.

نمایش فرآیندها با فرمان ps

رایج‌ترین فرمان برای نمایش فرآیندها فرمان ps است. برنامه ps دارای گزینه‌های زیادی می‌باشد ولی در ساده‌ترین شکل به صورت زیر نمایش داده می‌شود:

نتایج در این مثال دو پروسه را نشان می‌دهد با شماره‌های ۵۱۹۸ و ۱۰۱۲۹ که همان پروسه‌های bash و ps هستند. همانطور که می‌بینیم فرمان ps به صورت پیش‌فرض موارد زیادی را نشان نمی‌دهد و فقط پروسه‌هایی که با نشست فعلی ترمینال مرتبط هستند را نشان می‌دهد. برای نشان دادن بایستی گزینه‌های بیشتری را اضافه کنیم ولی قبل از آن نگاهی به دیگر فیلدهایی که توسط فرمان ps تولید شده بیندازیم. TTY مخفف teletype و به معنی دورنگار می‌باشد و اشاره به ترمینال کنترل کننده پروسه‌ها دارد. فیلد TIME مقدار زمان پردازشی استفاده شده از CPU را نشان می‌دهد. همانطور که می‌بینیم هیچ کدام باعث فعالیت زیاد کامپیوتر نمی‌شوند.

اکنون اگر یک گزینه به آن اضافه کنیم، می‌توانیم یک تصویر بزرگتر از کاری که سیستم می‌کند را دریافت کنیم:

با اضافه کردن گزینه x (دقت داشته باشید که این گزینه دارای علامت دش – نمی‌باشد) به فرمان ps می‌گوییم که همه پروسه‌ها (جدای از اینکه ترمینال چه گزینه‌هایی را کنترل کرده) نمایش دهد. وجود علامت سوال (?) در ستون TTY نشانگر این است که ترمینال کنترلی بر روی آن ندارد و با استفاده از این گزینه ما لیست همه پروسه‌هایی که مالک آن هستیم را نشان می‌دهیم.

از آنجایی که سیستم در حال اجرای پروسه‌های زیادی است، فرمان ps لیست بلندی را ایجاد می‌کند. گاهی قرار دادن ps در داخل less نمایش آن را ساده‌تر می‌کند. یک ستون جدید با نام STAT وجود دارد. STAT مخفف واژه انگلیسی state می‌باشد و وضعیت اخیر پروسه را نشان می‌دهد. این کار با استفاده از حروف اختصاری که شرح آن در جدول زیر آمده است صورت می‌گیرد.

وضعیت پروسه ممکن است با کاراکترهای دیگری در دنباله آن همراه شود. این کاراکترها نشانگر مشخصه‌های پروسه‌های خارجی هستند. برای مشاهده جزئیات بیشتر در این مورد به صفحات manual مراجعه کنید.

یکی دیگر از گزینه‌های رایج aux می‌باشد. این گزینه اطلاعات بیشتری را به ما خواهد داد:

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

نمایش پویای پردازش‌ها با فرمان top

با وجود اینکه فرمان ps اطلاعات زیادی درباره اینکه سیستم چه می‌کند را به ما می‌دهد وای این فرمان تنها یم تصویر را از وضعیت سیستم در لحظه اجرای فرمان را به ما نشان می‌دهد. برای اینمه نمایشی پویاتر از وضعیت فعالیت‌های ماشین را دریافت کنید، فرمان top گزینه خوبی است. برنامه top یک نمایش دنباله‌دار که در لحظه (به صورت پیش‌فرض هر ۳ ثانیه یکبار) بروزرسانی می‌شود را از وضعیت پروسه‌های سیستم به منظور نمایش فعالیت پروسه‌ها به ما نشان می‌دهد.

نام این فرمان از واقعیت گرفته شده است که از برنامه بالایی برای نمایش پروسه‌های بالایی سیستم استفاده می‌شود. نمایش فرمان top شامل دو بخش است: یک بخش خلاصه سیستم که در بالا وحود دارد و در ادامه آن جدولی از پروسه‌های فعالیت CPU که در ادامه، جدول آن آورده شده است:

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

برنامه top دستورات صفحه کلید را قبول می‌کند. دو مورد از مهم‌ترین آن‌ها h است که صفحه راهنمای برنامه را نشان می‌دهد و همچنین q که ما را از برنامه top خارج می‌کند.

محیط‌های دسکتاپ اپلیکیشن‌های گرافیکی را به ما ارائه می‌کند که اطلاعاتی مشابه برنامه top را در اختیار ما قرار می‌دهند (مانند Task Manager در محیط ویندوز). ولی برنامه top بهتر از نسخه‌های گرافیکی می‌باشد. به دلیل اینکه سریع‌تر عمل می‌کند و منابع سیستمی بسیار کمتری را درگیر خود می‌کند. علاوه بر آن، برنامه مانیتوری سیستم ما نبایستی بازدهی سیستمی که در حال بررسی آن هستیم را کاهش دهد.

منبع: کتاب The Linux Command Line نوشته William E. Shotts

نوشته آموزش خط فرمان: قسمت بیست و هشتم، فرآیندها اولین بار در لینوکس سیزن پدیدار شد.

آموزش خط فرمان: قسمت بیست و هفتم، فرمان chown

نوشته شده توسط فرشید نوتاش حقیقت.

فرمان chown سرنام واژگان Change Ownership به معنی تغییر مالکیت می‌باشد. این فرمان به منظور تغییر مالکیت کاربر و تغییر مالکیت گروه یک فایل و یا یک پوشه صورت می‌پذیرد. به منظور استفاده از این فرمان بایستی حتماً دسترسی‌های کاربر ارشد (Super User) را داشته باشید.

فرمت فرمان chown به این صورت است:

chown [owner][:[group]] file…

chown قادر به تغییر مالکیت فایل و یا مالکیت گروه فایل بسته به اولین آرگومان موجود در فرمان می‌باشد. جدول زیر لیستی از برخی مثال‌ها را نشان می‌دهد:

حال فرض کنید که ما دو کاربر داریم: یکی Emily که به مجوزهای کاربر ارشد (Super User) دسترسی دارد و کاربر دوم Amanda که دسترسی کاربر ارشد را ندارد. Emily می‌خواهد تا یک فایل از پوشه home حساب کاربری خود به پوشه home حساب کاربری Amanda کپی کند. از آن جایی که Emily می‌خواهد که Amanda قادر به ویرایس این فایل باشد، مالکیت فایل کپی شده را از Emily به Amanda تغییر می‌دهد:

در اینجا می‌بینیم که Emily فایل را از پوشه home خود به پوشه خانگی Amanda کپی کرد. سپس Emily مالکیت فایل را از root به Amanda تغییر داد. با استفاده از نقطه انتهایی در اولین آرگومان، Emily همچنین گروه فایل را به گروه لاگین Amanda که بایستی همان گروه Amanda نامیده باشد تغییر داد.

دقت کنید که پس از اولین استفاده از sudo، Emily برای وارد کردن پسورد خودش متوقف نشد. به این دلیل که فرمان sudo در اکثر پیکربندی‌ها برای چندین دقیقه به شما اعتماد می‌کند (تا زمانی که وقت در نظر گرفته شده آن به اتمام برسد).

فرمان chgrp – تغییر مالکیت گروه

در نسخه‌های قدیمی یونیکس فرمان chown فقط مالکیت فایل را تغییر می‌داد، نه مالکیت گروه را. به این منظور یک فرمان جداگانه با نام chgrp برای تغییر مالکیت گروه استفاده می‌شد. این فرمان دقیقاً شبیه فرمان chown کار می‌کند به جز اینکه محدودتر است.

فرمان passwd – تغییر پسورد در خط فرمان لینوکس

برای تغییر پسورد خودتان می‌توانید از مجوزهای دسترسی حساب کاربری خود استفاده کنید ولی برای تغییر پسورد کاربران دیگر، شما نیاز به دسترسی کاربر ارشد (Super User) دارید.

برای تغییر پسورد بایستی از فرمان passwd به این صورت استفاده کنید:

passwd [user]

از شما پسورد قدیمی درخواست می‌شود. آن را وارد نموده و سپس پسورد جدید مورد نظر خود را وارد نمایید:

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

در صورتی که دسترسی کاربر ارشد (Super User) را داشته باشید، با اضافه کردن نام کاربری مورد نظر خود در ادامه فرمان passwd قادر به تغییر آن خواهید بود.

منبع: کتاب The Linux Command Line نوشته William E. Shotts

نوشته آموزش خط فرمان: قسمت بیست و هفتم، فرمان chown اولین بار در لینوکس سیزن پدیدار شد.

آموزش خط فرمان: قسمت بیست و ششم، تغییر هویت در لینوکس

نوشته شده توسط فرشید نوتاش حقیقت.

برخی اوقات لازم است که برای انجام بعضی از کارها از هویت یک کاربر دیگر استفاده کنیم. این کار بیشتر برای دریافت دسترسی کاربر ارشد (Super User) به کار می‌رود. به این منظور سه راه وجود دارد:

  1. از کاربر فعلی خارج شده و با کاربر مورد نظر Login کنیم.
  2. استفاده از فرمان su
  3. استفاده از فرمان sudo

مورد اول را نادیده می‌گیریم چون همه می‌دانیم که چگونه با یک کاربر دیگر Login کنیم.

از داخل Shell با استفاده از فرمان su می‌توانید هویت خود را به عنوان یک کاربر دیگر تغییر دهید و سپس شروع به انجام فرمان‌های لازم در خط فرمان کنید.

فرمان sudo به مدیریت این اجازه را می‌دهد تا تنظیمات پیکربندی را در داخل فایل /etc/studores انجام دهد و فرمان‌های ویژه‌ای که کاربران خاص قادر به انجام آن هستند را تعریف کنند. این که به صورت پیش‌فرض چه فرمان‌هایی برای sudo تعریف شده‌اند، بسته به نوع توزیعی دارد که از آن استفاده می‌کنید.

فرمان su اجرای یک Shell با کاربر جانشین

فرمان su برای اجرا و شروع یک Shell جدید به عنوان یک کاربر دیگر (جانشین) استفاده می‌شود. ترکیب استفاده شده در این فرمان به این صورت است:

su [-[l]] [user]

اگر گزینه –l در این فرمان آورده شود، نتیجه نشست Shell یک Login شل برای کاربر تعیین شده است. به این معنی که محیط کاربر تعیین شده بارگذاری شده و پوشه فعلی کاربر به پوشه home کاربر تعیین شده تغییر پیدا می‌کند. اگر در فرمان نام کاربر آورده نشود، به صورت پیش‌فرض کاربر ارشد (Super User) در نظر گرفته می‌شود. توجه داشته باشید که می‌توانید گزینه –l را به صورت اختصاری (-) در نظر بگیرید. به این صورت:

پس از اجرای فرمان، پسورد کاربری که تعیین کردیم از ما خواسته می‌شود و اگر پسورد با موفقیت وارد شود، یک Shell جدید باز می‌شود و همانطور که به یاد دارید علامت # نشانه دسترسی کاربر ریشه (root) بوده در صورتی که $ نشانه کاربر عادی است. برای خروج از این حالت و برگشت به حالت کاربر عادی که با آن به لینوکس وارد کرده‌ایم کافی است فرمان exit را وارد کنید:

علاوه بر این می‌توانیم به جای تغییر کلی Shell فقط یک فرمان را به حالت root اجرا کنیم. به این صورت:

 sudo –c ‘command’

با استفاده از این فرمت یک خط فرمان در Shell اجرا می‌شود. این نکته را به یاد داشته باشید که فرمان مورد نظر را در داخل تک کوتیشن قرار دهید:

فرمان sudo – اجرای یک فرمان با عنوان کاربری دیگر

فرمان sudo در بسیاری موارد شبیه فرمان su می‌باشد ولی sudo قابلیت‌های مهم دیگری نیز دارد. مدیریت می‌تواند sudo را به گونه‌ای پیکربندی کند تا به کاربران اجازه دهد تا فرمان‌های خاصی را در حالت root (به شکلی کاملاً کنترل شده) اجرا نمایند. به طور خاص یک کاربر عادی ممکن است از انجام فرمان‌هایی منع شده باشد (برای افزایش امنیت و یکپارچگی سیستم).

ویژگی مهم دیگر sudo این است که برای استفاده از آن لازم نیست پسورد کاربر ارشد (Super User) را داشته باشید. پس به این شیوه بدون در اختیار قرار دادن پسورد root در اختیار دیگران (ریسک امنیتی بالایی دارد) برخی از کاربران خاص خود را قادر به انجام فرمان‌هایی خاص می‌کنید. برای مثال فرض کنید sudo پیکربندی شده تا به ما اجازه دهد که یک برنامه بکاپ فرضی با نام backup_script را اجرا کنیم که برای اجرای این برنامه نیاز به دسترسی کاربر ارشد (Super User) داریم. با استفاده از sudo به این صورت انجام می‌شود:

پس از اجرای فرمان از ما پسورد خواسته می‌شود (پسورد کاربری خودمان، نه پسورد کاربر ارشد) و پس از انجام تشخیص هویت فرمان موجود در اسکریپت بک‌آپ اجرا می‌شود. یک تفاوت مهم بین su و sudo این است که sudo یک Shell جدید را آغاز نمی‌کند و به تبع آن محیط کاربری، کاربر دیگری را بارگذاری نمی‌کند. یعنی این که برای اجرای فرمان‌ها لازم نیست فرمان‌ها داخل کوتیشن قرار گیرند. برای مشاهده اینکه چه دسترسی‌هایی برای sudo تعیین شده است از گزینه –l برای لیست کردن آن‌ها استفاده کنید:

اوبونتو و فرمان sudo

یکی از مشکلات اخیر برای کاربران عادی این است که چگونه برخی وظایف را که نیاز به دسترسی کاربر ارشد (Super User) را دارد اجرا کنند. این وظایف شامل نصب و به‌روزرسانی نرم‌افزارها، ویرایش فایل‌های پیکربندی سیستم و دسترسی به Deviceها هستند. در دنیای ویندوز این کار اغلب از طریق اعطای سطوح دسترسی مدیریتی به کاربران انجام می‌شود. این کار باعث می‌شود تا کاربران بتوانند به راحتی وظایف خود را انجام دهند. هر چند این کار باعث می‌شود برنامه‌هایی که توسط کاربر اجرا می‌شوند نیز همان توانایی‌های کاربر را داشته باشند. این در بیشتر موارد پسندیده و مطلوب است ولی این کار موجب می‌شود که بدافزارهایی مثل ویروس‌ها نیز به راحتی توانایی اجرا در کامپیوتر را داشته باشند.

در دنیای یونیکس جریان متفاوت است. در یونیکس همیشه اختلاف بزرگتری بین کاربران عادی و ادمین وجود دارد. این رویکرد یونیکس باعث می‌شود فقط زمانی دسترسی کاربر ارشد (Super User) صادر شود که به آن نیاز باشد. به این منظور همانطور که در درس قبل مشاهده کردید از فرمان‌های su و sudo استفاده می‌شود.

چند سال گذشته، بیشتر توزیع‌های لینوکس متکی به فرمان su برای رسیدن به این هدف بودند. فرمان su نیاز به پیکربندی که فرمان sudo لازم دارد، نداشت و داشتن یک حساب کاربری root در یونیکس رسمی شده بود. این مشکلی را به وجود می‌آورد.

کاربران برای راحتی کار خود حتی در موارد غیرضروری از اکانت root برای عملیات خود استفاده می‌کردند. تا جایی که برخی کاربران سیستم خود را به صورت اختصاصی با کاربر root پردازش می‌کردند تا از اخطار آزاردهنده مجوز رد شد (Permission Denied) جلوگیری شود. این دقیقاً همان جایی است که شما امنیت یک سیستم لینوکس را کاهش می‌دهید تا شبیه یک ویندوز مایکروسافتی شود که اصلاً ایده خوبی نیست.

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

وقتی که اوبونتو معرفی شد، سازندگان آن یک رویه دیگر را پیش گرفتند. به صورت پیش‌فرض اوبونتو Login به حساب کاربری root را غیرفعال کرده است و به جای آن شما می‌توانید با استفاده از فرمان sudo به سطوح دسترسی کاربر ارشد (Super User) دسترسی پیدا کنید. حساب کاربری اولیه دسترسی کامل به سطوح دسترسی کاربر ارشد (Super User) را از طریق فرمان sudo دارد.

منبع: کتاب The Linux Command Line نوشته William E. Shotts

نوشته آموزش خط فرمان: قسمت بیست و ششم، تغییر هویت در لینوکس اولین بار در لینوکس سیزن پدیدار شد.

آموزش خط فرمان: قسمت بیست و پنجم، فرمان umask

نوشته شده توسط فرشید نوتاش حقیقت.

فرمان umask دسترسی‌های پیش‌فرضی که هنگام ایجاد یک فال به آن داده می‌شود را تعیین می‌کند. این فرمان از نشان‌گذاری اوکتال برای نمایش یک mask از دسترسی‌هایی که بایستی از مشخصه‌های فایل حذف شود استفاده می‌کند.

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

در اینجا ما ابتدا فایل foo.txt را با استفاده از فرمان rm حذف کردیم تا مطمئن شویم دسترسی‌ها از اول داده می‌شود. حالا با استفاده از فرمان umask، ماسک پیش‌فرض را مشاهده می‌کنیم. عدد ۰۰۰۲ معمولا این عدد به صورت پیش‌فرض برای umask داده می‌شود (در برخی موارد هم به صورت پیش‌فرض از ۰۰۲۲ استفاده خواهد شد).

هر فایل جدیدی که ما در سیستم ایجاد می‌کنیم را نمی‌توانیم به صورت دستی با آن دسترسی بدهیم! کار طاقت‌فرسایی خواهد بود. در نتیجه سیستم‌عامل یک مقداری به صورت پیش‌فرض دارد که با استفاده از آن هر فایل جدیدی که ایجاد می‌شود به آن دسترسی می‌دهد. ولی این جمله اشتباه است که «به فایل‌های جدید ایجاد شده دسترسی می‌دهد.» بهتر است بگوییم از فایل‌های جدید ایجاد شده دسترسی می‌گیرد. در واقع هر مقداری که در umask موجود باشد، از دسترسی‌های موجود در فایل کم خواهد کرد.

حال به مثال برمی‌گردیم. برای ایجاد یک فایل جدید از فرمان > foo.txt استفاده می‌کنیم. اکنون که فایل را ایجاد کرده‌ایم با استفاده از فرمان ls -l foo.txt دسترسی‌های آن را مشاهده خواهیم کرد.

همانطور که گفتیم هر مقداری که در umask موجود باشد از دسترسی‌های فایل کم خواهد شد. دسترسی پیش‌فرض فایل —rw-rw-rw- می‌باشد. یعنی کاربر، گروه و همگان دسترسی خواندن و نوشتن را خواهند داشت. حال اگر ۰۰۰۲ را به مقدار باینری تبدیل کنیم می‌شود ۰۰۰۰۰۰۰۰۰۰۱۰ یعنی umask دسترسی همگان را ۰۱۰ از وضعیت خواندن و نوشتن به وضعیت فقط خواندنی محدود می‌کند.

یک راه دیگر برای مشاهده دسترسی اورجینال فایل این است که مقدار umask را صفر کنیم تا مطمئن شویم هنگام ایجاد فایل جدید umask هیچ تاثیری روی دسترسی‌های اصلی فایل نخواهد گذاشت.

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

همانطور که می‌بینید با فرمان rm foo.txt فایل قبلی را حذف کردیم با فرمان umask 0000 مقدار umask را به صفر تبدیل کردیم تا مطمئن شویم که تاثیری بر دسترسی‌های اورجینال فایل نخواهد گذاشت. سپس با فرمان  >foo.txt دوباره فایل  foo.txtرا ایجاد کردیم و با فرمان ls -l foo.txt دسترسی‌ها را مشاهده کردیم:

همانطور که می‌بینیم دسترسی‌های پیش‌فرض خواندن و نوشتن برای همه حالت‌ها می‌باشد rw-

بیشتر اوقات شما نیازی به تغییر مقدار پیش‌فرض umask ندارید به این دلیل که مقدار تعریف شده توسط توزی لینوکس شما کفایت می‌کند. هر چند در برخی وضعیت‌هایی که می‌خواهیم امنیت بالا ایجاد کنیم تغییر آن به مقداری سخت‌گیرانه‌تر خالی از لطف نیست.

منبع: کتاب The Linux Command Line نوشته William E. Shotts

نوشته آموزش خط فرمان: قسمت بیست و پنجم، فرمان umask اولین بار در لینوکس سیزن پدیدار شد.

آموزش خط فرمان: قسمت بیست و چهارم، اوکتال (Octal) چیست؟

نوشته شده توسط فرشید نوتاش حقیقت.

اعداد مبنای هشت، برای بیان اعداد در کامپیوترها استفاده می‌شود. اما کامپیوتر تمام عمل شمارش خود را بر مبنای ۲ یعنی صفر و یک انجام می‌دهد. یعنی سیستم شمارش کامپیوتر فقط دو عدد صفر و یک را دارد. پس اگر از صفر شروع به شمارش کند اینگونه شمارش می‌شود: ۰، ۱، ۱۰، ۱۱، ۱۰۰، ۱۰۱، ۱۱۰، ۱۱۱، ۱۰۰۰، ۱۰۰۱، ۱۰۱۰، ۱۰۱۱ و …

حال که با باینری (مبنای ۲) آشنا شدید درک اوکتال راحت‌تر خواهد بود. در سیستم عددگذاری اوکتال (مبنای هشت)، هشت رقم در سیستم شمارش وجود دارد. در نتیجه شمارش اینگونه خواهد بود: ۰، ۱، ۲، ۳، ۴، ۵، ۶، ۷، ۱۰، ۱۱، ۱۲، ۱۳، ۱۴، ۱۵، ۱۶، ۱۷، ۲۰، ۲۱ و …

در کنار سیستم شمارش اوکتال شمارش هگزادسیمال را هم داریم که از شماره‌های ۰ تا ۹ به علاوه حروف A تا F به منظور شمارش استفاده می‌کند.

اما همانطور که پیش‌تر هم اشاره شد کامپیوتر تمام محاسبات خود را بر مبنای ۲ انجام می‌دهد پس چرا باید از اوکتال و هگزا دسیمال استفاده کنیم؟ پاسخ این سوال برمی‌گردد به راحتی برای انسان‌ها. در موارد زیادی بخش‌های کوچکی از داده بر روی الگوی کوچک بیت قرار می‌گیرند. مثلاً الگوی رنگ RGB که در نرم‌افزار فتوشاپ و دیگر سیستم‌های رنگی در کامپیوتر استفاده می‌شود را در نظر بگیرید. در نمایشگرهای بیشتر کامپیوترها هر پیکسل رنگی شامل سه جزء رنگی است.

۸ بیت قرمز، ۸ بیت سبز، ۸ بیت آبی. برای مثال یک زنگ آبی زیبا از ۲۴ رقم باینری تشکیل می‌شود به این صورت:

۰۱۰۰۰۰۱۱۰۱۱۰۱۱۱۱۱۱۰۰۱۱۰۱

در اینجا برای راحتی انسان، مدل دیگری از سیستم اعداد به کار خواهد آمد. هر رقم هگزا دسیمال معادل ۴ رقم باینری است. پس ما با به کار بردن یک عدد فقط ۶ رقمی هگزادسیمال (۴۳۶FCD) می‌توانیم به کامپیوتر بفهمانیم که منظورمان همان عدد ۲۴ رقمی باینری است.

در این وضعیت هم ما به نتیجه دلخواه خود می‌رسیم که نیازی به حفظ کردن ۲۴ رقم باینری نداریم. همین کار را می‌توانیم در مثال استفاده اوکتال برای دسترسی‌ها در لینوکس به کار ببریم. در آموزش بعدی که دسترسی‌ها شرح داده خواهند شد این موضوع ملموس‌تر خواهد شد.

تغییر وضعیت دسترسی فایل (Change File Mode)

به منظور تغییر دسترسی یا تغییر وضعیت (Mode) یک فایل یا یک پوشه از فرمان chmod استفاده می‌شود. Chmod سرنام واژگان Change Mode به معنی تغییر حالت (تغییر دسترسی) است. به یاد داشته باشید که برای تغییر وضعیت یک فایل یا پوشه مالک فابل یا کاربر root قادر به انجام این کار خواهد بود. فرمان chmod دو شیوه منحصر به فرد برای انجام این کار را استفاده می‌کند: ۱- نمایش با اعداد مبنای هشت ۲- نمایش سمبولیک.

نمایش با اعداد مبنای هشت (Octal Representation)

با نشان‌گذاری مبنای هشت ما از اعداد مبنای هشت برای ایجاد یک الگوی مورد نظر از دسترسی‌ها استفاده می‌کنیم. از آنجایی که هر کدام از اعداد در یک عدد مبنای هشت ارایه‌کننده سه رقم باینری است، این الگو به خوبی برای ایجاد دسترسی‌ها در فایل به کار ما می‌آید.

با مشاهده جدول زیر مفهوم ذکر شده، ملموس‌تر خواهد بود:

با به کار بردن سه رقم اوکتال ما می‌توانیم وضعیت دسترسی فایل را به ترتیب برای کاربر (User)، گروه (Group) و همگان (World) تعیین کنیم.

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

برای تبدیل هر زمان که کاراکتری وجود داشته باشد به جای آن عدد ۱ و هر زمان که کاراکتری نباشد (علامت -) به جای آن صفر می‌گذاریم. به عنوان مثال rw- می‌شود ۱۱۰

در مثال فوق یک فایل با نام foo.txt ایجاد کردیم و سپس وضعیت دسترسی آن را با استفاده از فرمان ls –l foo.txt مشاهده می‌کنیم. –rw-rw-r—کاراکتر اول از سمت چپ (-) یعنی اینکه این یک فایل عادی است. سپس rw- یعنی عدد باینری ۱۱۰ که معادل اوکتال آن می‌شود ۶. به همین صورت دوباره rw- که می‌شود ۱۱۰ باینری یعنی ۶ اوکتال و در نهایت r— یعنی عدد ۱۰۰ باینری برابر با ۴ اوکتال.

پس اگر بخواهیم دسترسی آن را به شیوه الگوی اوکتال بیان کنیم، می‌شود ۶۶۴. حال چگونه این مقدار را تغییر دهیم؟ به سادگی با به کاربردن فرمان chmod و سپس مقدار دسترسی بر مبنای الگوی اوکتال و در آخر نام فایل که می‌شود فرمان chmod 600 foo.txt.

در آخر با به کار بردن فرمان ls -l foo.txt مشاهده می‌شود که دسترسی ما به -rw——- یعنی الگوی عدد اوکتال ۶۰۰ تغییر کرد.

دقت نمایید که وقتی دسترسی فایل را با استفاده از فرمان ls –l مشاهده می‌کنید اولین رقم از سمت چپ نشانگر نوع فایل است و آن را با رقم‌های دسترسی اشتباه نگیرید.

نمایش سمبولیک (Symbolic Representation)

chmod همچنین از یک نشانه‌گذاری سمبولیک نیز برای اختصاص دسترسی‌های فایل پشتیبانی می‌کند. نشان‌گذاری سمبولیک به سه بخش تقسیم می‌شود:

  1. کسی که تغییر بر روی آن تأثیر می‌گذارد.
  2. عملیاتی که انجام خواهد شد.
  3. دسترسی که تنظیم خواهد شد.

برای اختصاص و تعیین شخصی که تغییر بر روی آن تاثیر خواهد گذاشت از ترکیب کاراکترهای u ، g ، o و a استفاده می‌کنیم.

جدول زیر این کاراکترها را توصیف می‌کند:

در صورتی که هیچ کاراکتری به این منظور اختصاص نیابد معنی آن all به معنی همه گروه‌های دسترسی خواهد بود.

عملیات ممکن است کاراکتر (+) باشد که نشانگر این است که یک دسترسی اضافه شده است. اگر کاراکتر (-) استفاده شود یعنی اینکه یک دسترسی کم شده و اگر کاراکتر (=)  استفاده شود یعنی اینکه فقط دسترسی‌های اختصاص یافته بایستی اعمال شوند و دیگر دسترسی‌ها حذف خواهند شد. دسترسی‌ها طبق معمول با کاراکترهای r ، w و x اختصاص می‌یابند.

جدول زیر لیستی از برخی مثال‌های نشان‌گذاری سمبولیک دسترسی‌های را نشان می‌دهد:

برخی افراد ترجیح می‌دهند که از نشان‌گذاری اوکتال استفاده کنند و برخی دیگر طرفدار نشان‌گذاری سمبولیک هستند. نشان‌گذاری سمبولیک برخی امتیازات و برتری‌هایی دارد. مثلاً اینکه به کاربر اجازه می‌دهد تا یک مشخصه را بدون اینکه دیگر مشخصه‌ها را درگیر کنیم در دسترسی‌ها تعیین کنیم. به هر حال اینکه از کدام یک استفاده کنیم بنا به شرایط و سلیقه افراد متفاوت خواهد بود.

تنظیم وضعیت دسترسی با استفاده از رابط گرافیکی (GUI) در لینوکس

اکنون که دیدیم چگونه با استفاده از خط فرمان دسترسی پوشه‌ها و فایل‌ها را تغییر دهیم، بهتر می‌توانیم رابط گرافیکی که به این منظور در نظر گرفته شده است را درک کنیم. هم در Nautilus (GNOME) و هم در Konqueror (KDE) با کلیک راست کردن بر روی یک فایل و یا پوشه و انتخاب گزینه Properties در زبانه  Permissions این مطلوب، قابل رویت خواهد بود.

در این وضعیت ما می‌توانیم تنظیمات دسترسی را برای مالک (Owner)، گروه (Group) و همگان (World) تعریف کنیم. در صورت وجود با کلیک کردن بر روی گزینه دسترسی‌های پیشرفته (Advanced Permissions) یک پنجره جدید گشوده خواهد شد که به ما اجازه می‌دهد تنظیمات هر مشخصه را به صورت جداگانه تعیین کنیم.

منبع: کتاب The Linux Command Line نوشته William E. Shotts

نوشته آموزش خط فرمان: قسمت بیست و چهارم، اوکتال (Octal) چیست؟ اولین بار در لینوکس سیزن پدیدار شد.

پوشه ای با نام فاصله!

همونطور که می دونید ویندوز اجازه ساخت یک پوشه (یا Directory) با نام فاصله (white space) رو نمیده ولی میشه این کار رو با خط فرمان انجام داد. کد زیر رو حتما امتحان کنید:

md "C:\ \test"

این کد در خط فرمان باعث ایجاد یک پوشه به اسم فاصله می شود. حالا برید و ببینید ویندوز چه باگهایی سر این پوشه می ده. اول که  پوشه رو باز می کنید چون کارکتر فاصله در آخر آدرس هست جست و جو گر فایل ویندوز (Windows Explorer) دچار یک اشتباه لپی شده و فاصله را در نظر نمی گیرد. پس به جای نشان دادن محتویات این پوشه که پوشه ای دیگر به نام test است، محتویات c:\ می دهد و اگر یک بار دیگر  روی این پوشه با نام فاصله کلیک کنید پیغام هشداری می بینید که می گویدنمی تواند آدرس c:\ \ \ را پیدا کند. تنها راه دسترسی به پوشه test تایپ آدرس آن (c:\ \test) در نوار آدرس است.

توجه: برای پاک کردن پوشه حتما از خط فرمان و دستور rmdir /s "C:\ \" استفاده کنید.

آموزش خط فرمان: قسمت بیست و سوم، مجوزهای دسترسی (Permissions)

نوشته شده توسط فرشید نوتاش حقیقت.

سیستم‌عامل‌ها در یونیکس با انواع سنتی MS-DOS تفاوت دارند. از این نظر که آن‌ها نه‌تنها چندوظیفه‌ای هستند بلکه چندکاربری نبز هستند. یعنی اینکه بیش از یک نفر می‌تواند به صورت همزمان از یک کامپیوتر استفاده کند. در حالی که یک کامپیوتر معمولاً یک کیبورد و مانیتور دارد ولی باز هم قابلیت استفاده توسط چند کاربر را داراست. برای مثال اگر یک کامپیوتر به شبکه یا اینترنت متصل باشد، کاربران ریموت می‌توانند اپلیکیشن‌های گرافیکی را اجرا رده و رابط گرافیکی را در صفحه نمایش خود مشاهده کنند و با آن  کار خود را انجام دهند. سیستم Windows X نیز این ویژگی را به عنوان بخشی از طراحی اولیه خود پشتیبانی می‌کند.

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

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

مالکیت، گروه اعضا و دسترسی همگانی در لینوکس

اگر خاطرتان باشد در آموزش‌های قبلی وقتی سیستم را کاوش می‌کردیم ممکن بود زمان مشاهده فایلی مشابه /etc/shadow با مشکل زیر مواجه شویم:

علت به وجود آمدن این خطا این است که کاربران عادی دسترسی لازم برای خواندن این فایل را ندارند. وقتی که یک کاربر مالکیت یک فایل یا پوشه را دارد، بر روی دسترسی آن کنترل دارد. کاربران همچنین می‌توانند به نوبه خود عضو گروهی که شامل یک یا چند کاربر دیگر است نیز باشند که از ظریق مالکان این گروه دسترسی به فایل‌ها و پوشه‌های آن ایجاد شده است. علاوه بر این به منظور دسترسی یه یک گروه، مالک ممکن است برخی حقوق دسترسی را برای همگان آزاد بگذارند که در یونیکس به این منظور از واژه world (دنیا) استفاده می‌شود. برای اینکه به هویت خود در لینوکس پی ببرید دستور id را در خط فرمان به کار برید:

در خروجی مشاهده می‌شود که زمانی که حساب‌های کاربری ایجاد می‌شود، به کاربران یک شماره با نام user ID (uid) به معنی شناسه کاربر، اختصاص می‌یابد. در ادامه برای راحتی کار کاربران یک نام کاربری به این شناسه تخصیص داده می‌شود. کاربر همچنین یک شناسه گروهی Primary Group ID یا همان gid را به خود اختصاص می‌دهد که ممکن است به گروه‌های دیگر تعلق داشته باشد. مثالی که می‌بینید مربوط به یک سیستم فدورا است. این خروجی ممکن است در سیستم‌های دیگر مانند اوبونتو متفاوت باشد.

این اطلاعات از تعدادی فایل‌های متنی سرچشمه می‌گیرد. اطلاعات حساب‌های کاربری در فایلی با نام /etc/passwd و گروه‌های کاربری در فایلی با نام /etc/group تعریف می‌شود. هنگامی که کاربران و گروه‌ها ایجاد می‌شوند این فایل‌ها نیز ویرایش شده و در موازات آن فایل /etc/shadow که حاوی اطلاعات پسورد کاربر است نیز تغییر پیدا می‌کند. در هر حساب کاربری، فایل /etc/passwd موجب تغییر این موارد می‌شود: نام کاربری، uid و gid و نام واقعی حساب پوشه خانگی کاربر (Home Directory).

اگر محتویات /etc/passwd و /etc/group را بررسی کنید، متوجه خواهید شد که در کنار حساب‌های کاربری عادی حساب‌هایی برای کاربران ارشد (Superuser) و دیگر کاربران سیستم وجود دارد.

در حالی که بسیاری از سیستم‌های یونیکسی کاربران عادی را به یک گروه عمومی مثل گروه users اختصاص می‌دهند، لینوکس‌های مدرن یک گروه یگانه و تک کاربره به نام کارب ایجاد کرده و به وی اختصاص می‌دهند. این کاربر باعث می‌شود که اختصاص برخی انواع دسترسی‌ها آسان‌تر شود.

دسترسی‌های خواندن، نوشتن و اجرا

حقوق دسترسی به فایل‌ها و پوشه‌ها را با عبارات دسترسی خواند (Read Access)، دسترسی نوشتن (Write Access) و دسترسی اجرا (Execution Access) تعریف می‌کنند. اگر به خروجی فرمان ls در مثال زیر توجه کنیم، می‌بینیم که این دسترسی‌ها چگونه پیاده‌سازی شده‌اند.

 به کاراکتر اول در خروجی بالا توجه کنید. آن را به چهار بخش تقسیم کنید. کاراکتر اول از سمت چپ نوع فایل را مشخص می‌کند. جدول انواع فایل در زیر، مقادیر مختلف آن را توضیح داده است. ۹ کاراکتر باقیمانده را مشخصه‌های file mode می‌نامند. این کاراکترها را از سمت چپ سه یه سه از هم جدا کنید. اولین بخش سه‌تایی دسترسی‌ها برای مالک فایل یا همان کاربر (File’s Owner) را مشخص می‌کند. بخش سه‌تایی دوم دسترسی‌ها برای مالک گروه (Group Owner) را مشخص می‌کند.

این دسترسی‌ها به ترتیب با کاراکترهای اختصاصی rwx تعریف می‌شوند که r به معنی دسترسی خواندن (Read)، w به معنی دسترسی نوشتن (Write) و x به معنی دسترسی اجرا (Execution) می‌باشد. اگر هر کدام از این دسترسی‌ها از کاربر (User) یا گروه (Group) و یا همگان (World) منع شده باشد به جای آن علامت دش (-) گذاشته می‌شود.

جداول زیر این دسترسی‌ها را به تفصیل بررسی کرده:

جدول انواع فایل
جدول مشخصه‌های مجوزه‌های دسترسی
جدول مثال‌های مشخصه‌های مجوزه‌های دسترسی

منبع: کتاب The Linux Command Line نوشته William E. Shotts

نوشته آموزش خط فرمان: قسمت بیست و سوم، مجوزهای دسترسی (Permissions) اولین بار در لینوکس سیزن پدیدار شد.

توزیع پنجاه نسخه رایگان از «کتاب مدیریت محصول چابک با اسکرام اثر رومن پیچلر» برای دنبال کننده‌ها

این روزها اسکرام یکی از شیوه‌های رایج تیم‌های تولید محصول نرم افزاریه و یکی از درگیرهای ما اینه که محصولی که تولید می کنیم هم با اسکرام سازگار باشه یا بهتر بگم شکل طراحی اش مناسب با شکل پیاده سازی اش باشه و ظاهرا کتاب «مدیریت محصول چابک با اسکرام» در همین مورده. منم هنوز این کتاب رو نخوندم ولی حدس می زنم در این مورد است که مدیریت محصول اجایل چطوری باید باشه. مدیر محصولی شغلی است که تو ایران خیلی مرسوم نیست و آدم های حرفه ای زیادی هم براش نداریم و در نتیجه به نظرم اومد که این کتاب و معرفی اش مفیده. حالا اگر به خودم هم یکی جایزه دادن و خوندم در مورد محتوای کتاب دقیقتر حرف می زنم. اگر شما هم با کلیت اسکرام آشنا هستین یا در سیتمی کار می کنین که اسکرامی است یا مدیر محصول هستین یا می خواین بشین، این کتاب احتمالا به دردتون می‌خوره.

و خبر خوب؟ تیم پارسکدرز تصمیم گرفته ۵۰ جلد از این کتاب رو به رایگان بین مخاطب‌های جادی.نت نوزیع کنه (: اگر شما هم می خواین توی این قرعه کشی شرکت کنین کافیه بعد از فالو کردن من و گفتن به دویست تا از دوستاتون و تگ کردن و ریتوییت و چاپ و نصب در میدون شهر و. … این فرم آنلاین رو پر کنین و خب معلومه که بخش فالو و تگ و اینها شوخی بود (:

سعی می کنم هفته آینده یکشنبه قرعه کشی رو انجام بدم و برنده های خوش شانس ما از بین دنبال کننده‌های وبلاگ، توییتر، اینستاگرام و جاهای دیگه مشخص بشن (: