آموزش ویرایش فایل Sudoers در لینوکس Ubuntu و CentOS

آموزش ویرایش فایل Sudoers در لینوکس Ubuntu و CentOS

تفکیک سطوح دسترسی یکی از اساسی ترین الگوهای امنیتی اجرا شده در لینوکس و سیستم عامل های شبه یونیکس است. دسترسی کاربران عادی به منظور کاهش دامنه نفوذشان به سیستم عامل، محدود میشود. کاربر ویژه، که روت نامیده میشود به عنوان یک super user از دسترسی های کاملی برخوردار است و در واقع یک اکانت اجرایی و مدیریتی محسوب میشود. کاربران می توانند دستورات را با روش های مختلف با دسترسی کاربر روت اجرا کنند.

در این مقاله، روش صحیح و مطمئن به دست آوردن دسترسی کاربر روت را با ویرایش فایل  /etc/sudoers آموزش خواهیم داد. این مراحل روی یک VPS اوبونتو انجام خواهد شد، اما اغلب توزیع های مدرن لینوکس نیز، به شیوه ی مشابه عمل می کنند.

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

چگونگی دستیابی به دسترسی روت

سه راه اساسی برای به دست آوردن دسترسی کاربر روت وجود دارد:

ورود به سیستم به عنوان کاربر روت

ساده ترین و مستقیم ترین روش برای به دست آوردن دسترسی روت، این است که در ابتدا به عنوان کاربر روت به VPS خود وارد شوید.

اگر از دکمه “Console Access”  در droplets page استفاده میکنید، هنگامی که از شما خواسته شد به سادگی نام کاربری و پسورد روت را وارد کنید.

آموزش ویرایش فایل Sudoers در لینوکس Ubuntu و CentOS

آموزش ویرایش فایل Sudoers در لینوکس Ubuntu و CentOS

اگر از طریق سیستم SSH وارد شوید، قبل از آدرس IP یا نام دامین ، نام کاربر روت را وارد کنید:

 

سپس وقتی از شما خواسته شد پسورد روت را وارد کنید.

استفاده از “su” برای تبدیل شدن به کاربر روت 

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

راه بعدی برای به دست آوردن این دسترسی ، استفاده از دستور “su” است که مخفف substitute user می باشد.

 

پس از اجرای این دستور باید پسورد کاربر روت را وارد کنید . هنگامی که کارهای اجرایی نیازمند به دسترسی روت ، به پایان رسید با اجرای دستور زیر به shell عادی خود بازگردید :

 

استفاده از “sudo” برای اجرای دستورات به عنوان کاربر روت

استفاده از دستور sudo برای به دست آوردن دسترسی کاربر روت، آخرین و پیچیده ترین راه است.این دستور به شما اجازه می دهد تا دستورات را بدون نیاز به وارد شدن به یک پوسته دیگر  با دسترسی کاربر روت اجرا کنید:

 

بر خلاف su ، دستور sudo پسورد کاربری که دستور را فراخوانی کرده است، درخواست میکند ( نه پسورد کاربر روت )

آموزش ویرایش فایل Sudoers در لینوکس Ubuntu و CentOS

آموزش ویرایش فایل Sudoers در لینوکس Ubuntu و CentOS

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

در ادامه، چگونگی ایجاد تغییر در تنظیمات را با جزئیات بیشتر توضیح خواهیم داد :

Visudo

دستور sudo از طریق فایلی که در /etc/sudoers  واقع شده ، پیکربندی میشود.

نکته: هرگز این فایل را با یک ادیتور معمولی ویرایش نکنید و همیشه از دستور visudo استفاده کنید!

از آنجا که تنظیمات نادرست فایل sudoers می تواند دسترسی شما را به سیستم قطع کند ، بنابراین استفاده از دستور visudo برای ویرایش فایل لازم است.

دستور visudo به طور پیشفرض این فایل را با استفاده از ادیتور ” vi ” باز می کند و پس از تایید ،  تغییرات در فایل ذخیره میشود . هرچند که لینوکس اوبونتو به گونه ای پیکربندی شده که visudo از ادیتور “nano” استفاده کند . برای تغییر آن به ادیتور “vi” دستور زیر را اجرا کنید :

 

 

شماره مورد نظر خود را انتخاب کنید .

در لینوکس CentOS، شما می توانید این مقدار را با اضافه کردن خط زیر به ~/.bashrc  تغییر دهید:

 

منبع فایل برای اجرای تغییرات:

 

پس از تنظیمات visudo ، برای دسترسی به فایل /etc/sudoers دستور زیر را اجرا کنید:

 

 آموزش ویرایش فایل Sudoers در لینوکس Ubuntu و CentOS

ویرایش فایل Sudoers 

شما می توانید فایل را با استفاده از ادیتور منتخب خود باز کنید . خطوط زیر از فایل  sudoers در  اوبونتو کپی شده ، این فایل در CentOS  حاوی خطوط بیشتری بوده که در این آموزش در مورد آنها بحث نخواهیم کرد :

 

توضیحات خطوط 

demo  ALL=(ALL:ALL) ALL

 

 این فیلد، نام کاربری با دسترسی sudo را نشان میدهد .

demo    ALL=(ALL:ALL) ALL

 اولین “ALL” نشان می دهد که این قانون در تمام هاست ها اعمال شده است.

demo     ALL=(ALL:ALL) ALL

این “ALL” نشان می دهد که کاربر demo  می تواند دستورات را مانند تمام کاربران اجرا کند.

demo     ALL=(ALL:ALL) ALL

 این “ALL” نشان می دهد که کاربر demo  می تواند دستورات را مانند همه گروه ها اجرا کند.

demo     ALL=(ALL:ALL)ALL

 آخرین “ALL” نشان می دهد که این قوانین به همه دستورات اعمال می شود.

این بدان معناست که “”root و “demo” تا زمان ارائه پسورد خود،  می توانند هر دستوری را با استفاده از sudo اجرا کنند.

دو خط آخر قوانین، دستور sudo را برای گروه مشخص میکند. نامی که که “٪”  شروع شود نشان دهنده نام گروه می باشد .

تنظیم قوانین دلخواه

  1. ایجاد نام های مستعار

فایل sudoer می تواند با گروه بندی  با انواع مختلف نام های مستعار به راحتی سازماندهی شود. به عنوان مثال، ما می توانیم سه گروه مختلف از کاربرانی که با یکدیگر تداخل عضویت دارند را ایجاد کنیم :

 

نام گروه باید با حروف بزرگ شروع شود.

میتوانید با ایجاد قانون زیر به اعضای GROUPTWO اجازه دهید دیتابیس apt-get را آپدیت کنند:

 

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

  1. کنترل بیشتر اجرای دستورات :

راه هایی وجود دارد که با استفاده از آن می توانید کنترل بیشتری بر روی نحوه واکنش sudo به فراخوانی دستور داشته باشید

دستور updatedb  نسبتا بی خطر است و اگر بخواهید به کاربران اجازه دهید برای اجرای آن با دسترسی روت، نیازی به وارد کردن پسورد نداشته باشند، قانون زیر را اجرا کنید :

 

NOPASSWD  تگی است که مشخص میکند هیچ پسوردی برای اجرای دستور لازم نیست . در صورتی که بخواهید برای دستوری ، وارد کردن پسورد را اجباری کنید از تگ PASSWD استفاده کنید  . به خط زیر توجه کنید :

 

یکی دیگر از تگ های مفید “NOEXEC” است که می تواند برای جلوگیری از برخی از رفتارهای خطرساز در برنامه های خاص مانند ” less”  استفاده می شود :

 

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

پاسخ به کلیه سوالات شما در زمینه وب هاستینگ و مدیریت سرور در انجمن کامپایلر

One thought on “آموزش ویرایش فایل Sudoers در لینوکس Ubuntu و CentOS

  1. حمید

    با سلام.
    دوست عزیز بخشی رو در دستور توضیح داده بودید که
    demo ALL=(ALL:ALL) ALL
    اولین “ALL” نشان می دهد که این قانون در تمام هاست ها اعمال شده است.
    هاست رو به ترمینال تغییر بدید چون منظور terminal هاییست که مشخص می گردند.

    root ALL=(ALL) ALL
    This line means: The root user can execute from ALL terminals, acting as ALL (any) users, and run ALL (any) command.
    با تشکر.

    Reply

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *