حالتی را در نظر بگیرید که بخواهید اجازه دسترسی به رابط کاربری خط فرمان را به کاربری بدهید و در عین حال کاربر تنها مجاز به اجرای برخی فرامین خاص سیستم عامل باشد. برای مثال فرض کنید بخواهید به کاربر تنها اجازه پیکربندی اولیه سیستم را با دستوراتی مثل ifconfig ، ip ، route ، date و . بدهید. برای انجام چنین کاری نیاز به رابط کاربری خط فرمان سفارشی دارید. در یکی از روش های ایجاد رابط کاربری خط فرمان سفارشی (محدود) را تشریح می کنم. انشاالله در پست های بعدی روش های دیگری برای ساخت رابط کاربری خط فرمان سفارشی تر! ارایه خواهد شد. لازم به ذکر است روش ارایه شده در این نوشتار تنها بر روی تست شده است. معرفی rbash نرم افزار rbash گزینه جایگزین حساب کاربری chroot شده است. ( chroot چیه؟ بعدا راجع بهش میگم) در واقع rbash همون هست با این تفاوت که برخی امکانات shell در اون غیر فعال شده است. برای مثال اگر shell یک کاربر رو rbash قرار بدیم امکان تغییر متغیر محلی PATH رو نخواهد داشت یا از آدرس کامل برای اجرای دستورات نمی تونه استفاده کنه و یا اینکه امکان تغییر مسیر جاری از طریق دستور cd را ندارد. اگر به مراجعه کنید، می تونید فهرست محدودیت هایی که rbash برای کاربر ایجاد می کنه رو مشاهده کنید. برخی از محدودیت ها رو اینجا فهرست کردم. تغییر مسیر جاری با دستور cd ذخیره و یا حذف مقادیر از متغیرهای SHELL ، PATH ، ENV و BASH _ ENV قرارگیری/ا سل ش) در نام دستور ذخیره خروجی دستور به کمک عملگرهای >, >|, > & , & > و >> استفاده از دستور exec برای جایگزینی shell با یک دستور دیگه خاموش کردن مد محدود شده با set + r و یا set + o restricted اگر به فهرست کامل موارد غیر فعال شده در rbash نگاهی بیندازید متوجه می شوید کاربر را تا حد زیادی محدود می کنه. در پست های بعدی به برخی از این روش های اشاره می کنیم. در این پست برای مساله کانفیگ اولیه سیستم که در مقدمه عنوان شده از روشی استفاده می کنیم که محدودیت بیشتری برای کاربر ایجاد کنه. چون rbash به تنهایی جلوی اجرای دستورات دلخواه توسط کاربر را نمی گیرد. اگر بخواهیم دستوراتی که کاربر قادر به اجرای اون هست رو هم محدود کنیم کار بیشتری باید انجام بشه. راه اندازی rbash ابتدا یک لینک از bash ایجاد کنید: کاربر جدیدی ایجاد نمایید. shell مربوط به این کاربر را rbash قرار دهید. در صورتی که کاربر از قبل وجود داشت کافی است با دستور زیر bash کاربر را به rbash تغییر دهید. (مستقیما هم می تونید فایل/ etc / passwd را ویرایش کنید و shell کاربر مورد نظرتون رو تغییر بدید) خوب حالا اگر کاربر localuser وارد سیستم بشه rbash براش فعال میشه و محدودیت هایی که گفتیم براش اعمال میشه. مثلا دیگه نمی تونه با cd از پوشه home ش خارج بشه. اعمال محدودیت بیشتر در خط فرمان خوب حالا می خوایم دستوراتی که کاربر میتونه اجرا کنه رو به تعدادی دستور خاص محدود کنیم. در مورد مثال کانفیگ ذکر شده در مقدمه می خوایم دستوراتی مثل ip , ifconfig , route , ping و date رو برای کاربر فعال کنیم. برای این کار در مسیر home کاربر یک پوشه به اسم bin (یا هر اسم دیگه ای) ایجاد می کنیم. سپس فایل. bash _ profile را در مسیر home کاربر ایجاد می کنیم. ( و در این فایل مقادیر زیر را می نویسیم: کلکی که از طریق این فایل زدیم اینه که پوشه bin کاربر رو به همونی که در مسیر home ش ساختیم محدود کردیم. خوب حالا کافیست لینک دستوراتی که میخواید کاربر بتونه اجرا کنه رو در پوشه bin کاربر قرار بدید. یعنی اینطوری: خوب اگر کاربر بخواد دستوری که در این لیست نیست رو اجرا کنه با پیام خطای زیر مواجه میشه: (اجرای دستور ls ) به همین راحتی! فقط یه کار دیگه مونده و اون هم جلوگیری از تغییر فایل. bash _ profile توسط خود کاربر هست. با دستور زیر می تونید جلوی تغییر این فایل رو بگیرید. اگر بعدا خواستید این فایل رو ادیت کنید باید قبلش دستور زیر رو اجرا کنید همانطور که قبلا هم گفتم روش ارایه شده در این پست قابل دور خوردن است. ولی شما در شرایطی خاص می تونید جلوی دور خوردنش رو بگیرید. برخی روش های دور زدن در نوشتاری دیگر تشریح خواهد شد!