rbash یا Restricted Bash چیست؟

در دنیای لینوکس و سیستم‌های شبه‌یونیکس (Unix-like)، امنیت بسیار مهم است، به خصوص زمانی که چندین کاربر یک سیستم را به اشتراک بگذارند. یکی از راه‌های افزایش امنیت استفاده از شل‌های محدود شده (restricted) است. یکی از این شِل‌ها rbash یا  Restricted Bash است.
این مطلب توضیح می‌دهد که rbash چیست، چه تفاوتی با shell ‌معمولی Bash دارد و مثال‌هایی از کاربرد آن ارائه می‌شود.


شِل (Shell) چیست؟

شل برنامه‌ای است که کاربران را قادر می‌سازد تا از طریق یک رابط خط فرمان با سیستم لینوکس تعامل داشته باشند. دستورات وارد شده توسط کاربر را تفسیر نموده و برای اجرای آن دستورات با سیستم ارتباط برقرار می‌کند.
Bash (Bourne Again SHell) یکی از پرکاربردترین شل‌ها در محیط لینوکس است.

rbash چیست؟

rbash یک نسخه محدود از پوسته Bash است که برای محدود کردن دسترسی کاربران به دستورات و ویژگی‌های خاص طراحی شده است که امنیت سیستم را افزایش می‌دهد.
هنگامی که کاربر با استفاده از rbash وارد سیستم می‌شود، نمی‌تواند کارهایی را انجام دهد که موجب خطر برای سیستم یا سایر کاربران شود.

تفاوت‌های کلیدی Bash و rbash چیست؟

در ادامه برخی از تفاوت‌های کلیدی بین bash و rbash آورده شده است:

  • در rbash کاربران نمی‌توانند دایرکتوری خود را با دستور cd تغییر دهند. آنها فقط می‌توانند در دایرکتوری home خود کار کنند.
  • دستورات خاصی مانند exec، set و unset محدود شده‌اند و از تغییر محیط شل توسط کاربران جلوگیری می‌کنند.
  • کاربران نمی‌توانند متغیرهای محیطی را تغییر دهند که می‌تواند بر سایر کاربران یا تنظیمات سیستم تاثیر بگذارد.
  • در rbash، کاربران نمی‌توانند ورودی یا خروجی را تغییر مسیر دهند(redirect input or output)، و اجرای دستوراتی را که می‌توانند به فایل های خارج از مناطق تعیین شده خود دسترسی یا دستکاری کنند، دشوارتر می‌کند.

این محدودیت‌ها، rbash را برای سناریوهایی مناسب می‌سازد که می‌خواهید با حفظ سطح امنیت، دسترسی محدودی را برای کاربران فراهم کنید.

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

موارد استفاده از rbash

در اینجا مواردی وجود دارد که استفاده از rbash مفید است:

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


آموزش راه اندازی rbash در لینوکس

راه اندازی rbash در سیستم لینوکس، یک فرآیند ساده است، تنها کاری که باید انجام دهید این است که مراحل زیر را دنبال کنید:

  1. Bash را در لینوکس نصب کنید

اکثر توزیع‌های لینوکس دارای Bash هستند که به‌طور پیش‌فرض نصب شده است، می‌توانید با اجرا کردن دستور زیر،  نصب بودن آن را بررسی کنید:


bash --version

آیا روی سرور من bash نصب شده است؟
  1. یک کاربر Restricted Shell ایجاد کنید

شما می‌توانید به طور خاص برای rbash یک کاربر ایجاد کنید.


sudo adduser parsdev

ایحاد کاربر جدید در لینوکس

پس از ایجاد کاربر، شل پیش فرض آنها را به rbash تغییر دهید:

sudo usermod -s /bin/rbash restricteduser

برای محدود کردن بیشتر محیط این کاربر، می‌توانید یک دایرکتوری خاص ایجاد و آن را به عنوان دایرکتوری home آنها تنظیم کنید:


sudo mkdir /home/parsdev/bin

سپس، می‌توانید هر اسکریپت یا دستوری را که می‌خواهید کاربر به آن دسترسی داشته باشد، در این دایرکتوری bin قرار دهید.

فعال کردن rbash برای کاربران در لینوکس

برای محدود کردن دستورات در دسترس کاربر، متغیر PATH او را طوری تنظیم کنید که فقط دایرکتوری bin را شامل شود:

echo 'export PATH=$HOME/bin' | sudo tee -a /home/parsdev/.bashrc

اکنون می‌توانید به عنوان یک کاربر محدود وارد شوید:

su - parsdev

آموزش استفاده از rbash در لینوکس

بیایید چند مثال عملی را برای نشان دادن نحوه عملکرد rbash بررسی کنیم.

مثال 1: تلاش برای تغییر دایرکتوری

پس از ورود به عنوان کاربر محدود، سعی کنید دایرکتوری‌ها را تغییر دهید:

cd /tmp

یک پیغام خطا مانند rbash: exec: restricted- دریافت خواهید کرد که تایید می‌کند کاربر نمی‌تواند خارج از دایرکتوری اصلی خود حرکت کند.

خطای rbash: exec: restricted-

مثال 2: اجرای دستورات محدود

سعی کنید دستوراتی مانند exec یا set را اجرا کنید:

exec bash

با خطایی مانند rbash: exec: restricted- مواجه می‌شوید که نشان می‌دهد کاربر مجاز به اجرای نمونه‌های جدید شل نیست.

خطای rbash: cd: restricted-

مثال 3: تغییر مسیر فایل

تلاش برای تغییر مسیر خروجی به یک فایل:

echo "Test" > test.txt


یک پیغام خطایی دریافت خواهید کرد که نشان می‌دهد کاربران نمی‌توانند خروجی را به فایل‌ها ریدایرکت کنند.


-rbash: test.txt: restricted: cannot redirect output

خطای test.txt: restricted: cannot redirect output

مثال 4: دستورات مجاز

برای مشاهده اینکه کاربر محدود شده چه دستوراتی را می‌تواند اجرا کند، می توانید یک اسکریپت ساده در دایرکتوری bin آنها ایجاد کنید.

به عنوان مثال، یک فایل به نام hello.sh ایجاد کنید:


echo "echo 'Hello, World!'" > /home/restricteduser/bin/hello.sh
chmod +x /home/restricteduser/bin/hello.sh

اکنون، زمانی که کاربر محدود اجرا می‌شود:


. hello.sh

Hello, World! را خواهند دید! روی صفحه چاپ شده و نشان می دهد که می توانند دستورات مجاز را اجرا کنند.

اجرای اسکریپت توسط کاربر محدود شده

نتیجه گیری

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