شما برای مطالعه این مقاله فقط 5 دقیقه وقت نیاز دارید

how-to-restrict-log-in-capabilities-of-users-on-ubuntu

چگونه قابلیت های ورود کاربران را در اوبونتو محدود کنیم؟

4.5/5 - (2 امتیاز)

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

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

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

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

چطور با استفاده از etc/passwd/ دسترسی را محدود کنیم؟

یکی از روش‌های محدود کردن قابلیت ورود، تنظیم shell  ورود به حساب کاربری با مقدار خاص است.

یک مثال از این کاربر messagebus است که می‌توانید با استفاده از دستور grep درون پرونده etc/passwd/ جستجو کنید.

less /etc/passwd | grep messagebus

خروجی

messagebus:x:102:105::/nonexistent:/usr/sbin/nologin

مقدار نهایی به معنای پوسته یا دستوری است که هنگام موفقیت در ورود به سیستم اجرا می‌شود. در این مورد، مقدار به/usr/sbin/nologinتنظیم شده است.

اگر سعی کنید با استفاده از «sudo su» به کاربر «messagebus» سوئیچ کنید، این عملیات ناموفق خواهد بود:

sudo su messagebus

خروجی

This account is currently not available.

شما این پیام را دریافت کرده‌اید چون پوسته (shell) برای messagebus بر روی usr/sbin/nologin/ تنظیم شده است.

وقتی می‌خواهید از ورود به سیستم کاربری جلوگیری کنید، می‌توانید از ابزار usermod استفاده کنید تا پوسته ورود به سیستم پیش‌فرض کاربر (معمولاً /bin/bash) را به پوسته‌ای ناموجود مانند nologin تغییر دهید.

sudo usermod -s /usr/sbin/nologin username

چگونه با استفاده از etc/shadow/ دسترسی را محدود کنیم؟

روش مشابه دیگری برای محدود کردن دسترسی، استفاده از فایل etc/shadow/ است. این فایل حاوی مقادیر رمزنگاری شده رمز عبور هر کاربر در سیستم است.

شما می‌توانید از دستور less برای مشاهده کامل فایل استفاده کنید:

sudo less /etc/shadow

خروجی

Output
. . .
uuidd:*:19105:0:99999:7:::
tcpdump:*:19105:0:99999:7:::
sshd:*:19105:0:99999:7:::
pollinate:*:19105:0:99999:7:::
landscape:*:19105:0:99999:7:::
lxd:!:19180::::::
sammy:$y$j9T$4gyOQ5ieEWdx1ZdggX3Nj1$AbEA9FsG03aTsQhl.ZVMXatwCAvnxFbE/GHUKpjf9u6:19276:0:99999:7:::

در خط آخر، فیلد دوم (که با $y$j9T$4gyO… شروع می‌شود) شامل مقدار رمزعبور در فرم هش شده است.

حساب‌های سیستم با علامت ستاره (*) به جای یک مقدار هش پیچیده قرار دارند. حساب‌هایی با ستاره در فیلد دوم، هنوز رمزعبور تعیین نشده و بدون تغییر آن، نمی‌توان با رمزعبور وارد آن‌ها شد.

با قراردادن علامت تعجب (!) قبل از مقدار هش می‌توانید مقدار رمزعبور را غیرفعال کنید (با این کار، حساب با مقدار رمزعبور معادل علامت ستاره محسوب می‌شود).

دو ابزار می‌توانند با «قفل کردن» حساب مشخص شده، این کار را انجام دهند.

دستور passwd با پرچم l- قابل قفل کردن و با پرچم u- قابل باز کردن است.

sudo passwd -l Sammy
sudo less /etc/shadow | grep Sammy

خروجی

sammy:!$y$j9T$4gyOQ5ieEWdx1ZdggX3Nj1$AbEA9FsG03aTsQhl.ZVMXatwCAvnxFbE/GHUKpjf9u6:19276:0:99999:7::::::

همانطور که می‌بینید، رمزعبور هش شده حفظ شده است، اما با قرار دادن یک ! در ابتدای آن، نامعتبر شده است.

می‌توان با وارد کردن دستور مناسب، حساب کاربری را دوباره باز کرد.

sudo passwd -u sammy

با استفاده از دستور usermod، عملیات معادلی در دسترس است. پرچم‌های مربوطه به ترتیب L- برای قفل کردن و U- برای باز کردن حساب هستند.

sudo usermod -L sammy
sudo usermod -U sammy

توجه: اگرچه این روش محدود کردن دسترسی به تمام ورودهای مبتنی بر رمزعبور به درستی عمل خواهد کرد، اما روش‌های ورود بدون رمزعبور (مانند با کلیدهای ssh) همچنان می توانید دسترسی داشته باشید.

کلیک کنید  آشنایی با دستور touch در لینوکس + مثال های پرکاربرد

راهنمای محدود کردن دسترسی با etc/nologin/

در برخی موارد، ممکن است نیاز به غیرفعال کردن تمام ورودهای حساب کاربری، به جز روت، وجود داشته باشد.

این مسئله ممکن است به دلیل نگهداری عمیق یا به دلیل هک شدن یک یا چند حساب کاربری شما باشد.

در هر صورت، این کار با ایجاد یک فایل در etc/nologin/ انجام می‌شود:

sudo touch /etc/nologin

این کار باعث می‌شود که هیچ حسابی که دسترسی سوپریوزر ندارد، نتواند وارد سیستم شود.

اگر فایل etc/nologin/ خالی باشد، کاربر فقط به پوسته محلی خود باز می‌گردد بدون توضیحی.

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

sudo sh -c 'echo "Planned maintenance. Log in capabilities will be restored at 1545 UTC" > /etc/nologin'

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

ssh sammy@host

خروجی

sammy@host's password: Planned maintenance. Log in capabilities will be restored at 1545 UTC Connection closed by host

کاربران روت هنوز هم می توانند به طور معمول وارد شوند (نحوه دادن دسترسی روت به یوزر در اوبونتو را می توانید در مقاله مطالعه کنید.). فایل etc/nologin/ را برای معکوس کردن محدودیت ورود حذف کنید:

sudo rm /etc/nologin

فرمان false

فرمان false یک فرمان ساده است که برای بازگشت یک کد وضعیت غیرصفر برای نشان دادن شکست استفاده می‌شود. بیایید این فرمان را اجرا کنیم و کد وضعیت آن را بررسی کنیم.

$ false $ echo $? 1

false برعکس دستور true است که همیشه یک کد وضعیت صفر را برمی گرداند که نشان دهنده موفقیت است:

$ true $ echo $? 0

می توانیم از آنها در دستور Bash while برای اجرای مکرر کد استفاده کنیم:

while false; do
    echo "This code will never run!"
done

while true; do
    echo "This code will run forever!"
done

اولین بلوک کد هرگز اجرا نمی شود زیرا false همیشه نشان دهنده شکست است، در حالی که true همیشه نشان دهنده موفقیت است:

$ ./script This code will run forever! This code will run forever! This code will run forever! ...

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

$ sudo usermod baeldung -s /bin/false  $ sudo su - baeldung $ echo $? 1

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

دستور کاربری usermod

به طریقی شبیه به دستور پسورد، می‌توانیم از دستور کاربری usermod با پرچم‌های L- یا U- برای قفل کردن یا بازکردن یک حساب کاربری استفاده کنیم.

$ sudo usermod -L baeldung
$ su - baeldung
Password: 
su: Authentication failure
$ sudo usermod -U baeldung
$ su - baeldung
Password: 
$ echo $? # Success
0

با استفاده از پوسته‌ی nologin، ورود برخی کاربران خاص را مسدود کنید.

پوسته‌ی nologin در مسیر/usr/sbin/nologinقرار دارد.

این دستور مکان پوسته‌ی nologin را به شما نشان می‌دهد.

$ which nologin/usr/sbin/nologin

حالا برای تنظیم پوسته کاربر به nologin، می‌توانید از دستور usermod استفاده کنید. در اینجا می‌خواهیم پوسته کاربر “priyanshu” را به nologin تغییر دهیم.

usermod -s /usr/sbin/nologin priyanshu

در نهایت شما می توانید یوزرهای لینوکس را لیست و مشاهده کنید که می توانید از طریق مقاله نحوه لیست و مشاهده یوزرهای لینوکس این کار را انجام دهید.

سخن آخر

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

سوالات متداول:

برای محدود کردن دسترسی کاربر با استفاده از دستور usermod، باید دستور زیر را به‌صورت sudo usermod -s /usr/sbin/nologin username وارد کنید. در این دستور، باید جایگزین username نام کاربری موردنظر خود را کنید.

استفاده از آپشن nologin در دستور usermod، به‌منظور ایجاد محدودیت در دسترسی کاربر به سیستم است.

بله، با ایجاد فایل /etc/nologin می‌توان دسترسی تمامی کاربران به جز کاربر root را محدود کرد.

مطالب مشابهی که شاید علاقمند باشید

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

دیدگاه های شما

برای دریافت این مقاله لطفا ایمیلتان را وارد کنید

می توانید مقاله را دانلود کنید یا پرینت بگیرید