در این پست برای مساله کانفیگ اولیه سیستم که در مقدمه عنوان شده از روشی استفاده می کنیم که محدودیت بیشتری برای کاربر ایجاد کنه. چون rbash به تنهایی جلوی اجرای دستورات دلخواه توسط کاربر را نمی گیرد. اگر بخواهیم دستوراتی که کاربر قادر به اجرای اون هست رو هم محدود کنیم کار بیشتری باید انجام بشه.
ابتدا یک لینک از bash ایجاد کنید:
# ln -s /bin/bash /bin/rbash
کاربر جدیدی ایجاد نمایید. shell مربوط به این کاربر را rbash قرار دهید.
# useradd -s /bin/rbash localuser
در صورتی که کاربر از قبل وجود داشت کافی است با دستور زیر bash کاربر را به rbash تغییر دهید. (مستقیما هم می تونید فایل /etc/passwd را ویرایش کنید و shell کاربر مورد نظرتون رو تغییر بدید)
# usermod -s /bin/rbash localuser
خوب حالا اگر کاربر localuser وارد سیستم بشه rbash براش فعال میشه و محدودیت هایی که گفتیم براش اعمال میشه. مثلا دیگه نمی تونه با cd از پوشه homeش خارج بشه.
خوب حالا می خوایم دستوراتی که کاربر میتونه اجرا کنه رو به تعدادی دستور خاص محدود کنیم. در مورد مثال کانفیگ ذکر شده در مقدمه می خوایم دستوراتی مثل ip, ifconfig, route, ping و date رو برای کاربر فعال کنیم.
برای این کار در مسیر home کاربر یک پوشه به اسم bin (یا هر اسم دیگه ای) ایجاد می کنیم.
# mkdir /home/localuser/bin
سپس فایل .bash_profile را در مسیر home کاربر ایجاد می کنیم. ( /home/localuser/.bash_profile
) و در این فایل مقادیر زیر را می نویسیم:
# cat /home/localuser/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$HOME/bin
export PATH
کلکی که از طریق این فایل زدیم اینه که پوشه bin کاربر رو به همونی که در مسیر homeش ساختیم محدود کردیم. خوب حالا کافیست لینک دستوراتی که میخواید کاربر بتونه اجرا کنه رو در پوشه bin کاربر قرار بدید. یعنی اینطوری:
# ln -s /sbin/ifconfig /home/localuser/bin/
# ln -s /bin/ping /home/localuser/bin/
# ln -s /sbin/route /home/localuser/bin/
# ln -s /sbin/ip /home/localuser/bin/
# ln -s /bin/date /home/localuser/bin/
خوب اگر کاربر بخواد دستوری که در این لیست نیست رو اجرا کنه با پیام خطای زیر مواجه میشه: (اجرای دستور ls)
[localuser@example ~]$ ls -rbash: ls: command not found
به همین راحتی!
فقط یه کار دیگه مونده و اون هم جلوگیری از تغییر فایل .bash_profile توسط خود کاربر هست. با دستور زیر می تونید جلوی تغییر این فایل رو بگیرید.
# chattr +i /home/localuser/.bash_profile
اگر بعدا خواستید این فایل رو ادیت کنید باید قبلش دستور زیر رو اجرا کنید
# chattr -i /home/localuser/.bash_profile
همانطور که قبلا هم گفتم روش ارائه شده در این پست قابل دور خوردن است. ولی شما در شرایطی خاص می تونید جلوی دور خوردنش رو بگیرید. برخی روش های دور زدن در نوشتاری دیگر تشریح خواهد شد!
مطالب مرتبط:
مجازی سازی ARMv8-A – مقدمه
مجازی سازی ARMv8-A – مجازی سازی در حالت AArch64
دیدگاهتان را بنویسید