فصل ‎22‎- پوسته‌های محدود

فرمان‌های غیر فعال در پوسته‌های محدود

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

فرمان‌ها و اعمال زیر غیر فعال می‌شوند:

  • کاربرد cd برای تغییر دایرکتوری کاری.

  • تغییر دادن مقادیر متغیرهای محیطی ‎$PATH‎‏، ‎$SHELL‎‏، ‎$BASH_ENV‎‏، یا ‎$ENV‎.

  • خواندن یا تغییر دادن ‎$SHELLOPTS‎، یا گزینه‌های محیطی(مترجم: گزینه‌هایی که با فرمان set تنظیم می‌شوند).

  • تغییر مسیر خروجی.

  • احضار فرمان‌های شامل یک یا چند کاراکتر /

  • فراخوانی exec جهت جایگزین کردن پردازش متفاوتی برای پوسته.

  • فرمان‌های متنوع دیگری که شیطنت با اسکریپت یا اقدام به خرابکاری کردن اسکریپت برای یک منظور ناخواسته را فعال می‌کنند.

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

مثال ‎22-1‎. اجرای یک اسکریپت در وضعیت محدود شده

#!/bin/bash

# شروع اسکریپت با «‎#!/bin/bash -r‎» تمام
#+اسکریپت را در وضعیت محدود اجرا می‌کند.

echo

echo "Changing directory."
cd /usr/local
echo "Now in `pwd`"
echo "Coming back home."
cd
echo "Now in `pwd`"
echo

#تا اینجا همه چیز عادی، یعنی در وضعیت غیر محدود است.

set -r
#          ‎set --restricted‎  نیز دارای همان اثر است.
echo "==> Now in restricted mode. <=="

echo
echo

echo "Attempting directory change in restricted mode."
cd ..
echo "Still in `pwd`"

echo
echo

echo "\$SHELL = $SHELL"
echo "Attempting to change shell in restricted mode."
SHELL="/bin/ash"
echo
echo "\$SHELL= $SHELL"

echo
echo

echo "Attempting to redirect output in restricted mode."
ls -l /usr/bin > bin.files
ls -l bin.files    #امتحان جهت لیست کردن فایلی که برای ایجاد آن تلاش شده.

echo

exit 0