آموزش امروز را به بررسی 9 پیکربندی مفید Sudoers برای تنظیم sudo در لینوکس اختصاص خواهیم داد. در لینوکس و سایر سیستمعاملهای مشابه یونیکس، امکان اجرای دستورات تنها برای کاربران root امکان پذیر است.
آنها می توانند عملیات حیاتی خاصی را نیز بر روی سیستم انجام دهند. این عملیات شامل، فرآیند نصب و بهروزرسانی، حذف بستهها، ایجاد گروه هایی برای کاربران، تغییر فایلهای پیکربندی مهم برای سیستم و موارد دیگر می باشند.
در کنار این موارد، مدیران وبسایت که نقش کاربر اصلی را بر عهده دارند، می توانند امکان دسترسی سایر کاربران عادی را نیز برای پیکربندی سیستم با کمک دستور sudo فراهم کنند تا آنها نیز بتوانند برخی از دستورات را اجرا کنند. همچنین، تعدادی از عملیات حیاتی سیستم مانند مواردی که در بالا به آنها اشاره شد نیز بر آنها خواهد بود.
علاوه بر این، مدیران سیستم می توانند رمز عبور کاربر root را به اشتراک گذاشته تا کاربران عادی سیستم نیز از طریق دستور Sudo به حساب کاربری root دسترسی داشته باشند.
فهرست مطالب
بررسی 9 پیکربندی مفید Sudoers برای تنظیم sudo در لینوکس
sudo به کاربر این اجازه را می دهد تا دستوری را به عنوان کاربر root و یا کاربر دیگر اجرا کند. کاربرد های Sudo شامل موارد زیر می باشد:
- دستور /etc/sudoers را خوانده و تجزیه می کند. همچنین، کاربر مجوزهای لازم را می تواند جستجو کند.
- دستور invoking user برای درخواست رمز عبور مورد استفاده قرار می گیرد. معمولاً این رمز عبور مربوط به دسترسی کاربر Root خواهد بود که می تواند در این میان برای رمز عبور کاربر هدف نیز مورد استفاده قرار گیرد.
- sudo یک فرآیند child نیز ایجاد می کند که در آن setuid() را فراخوانی کرده و می تواند کاربر مورد نظر را پیکربندی کند.
- در مرحله بعد، این دستور می تواند یک پوسته یا دستوری را که به عنوان arguments در فرآیند child مورد استفاده قرار گرفته است را نیز اجرا کند.
در این قسمت، به ده پیکربندی فایل /etc/sudoers برای تغییر رفتار دستور sudo با استفاده از ورودی های پیش فرض اشاره کردیم:
sudo cat /etc/sudoers
This file MUST be edited with the 'visudo' command as root. Please consider adding local content in /etc/sudoers.d/ instead of directly modifying this file. See the man page for details on how to write a sudoers file. Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" Defaults logfile="/var/log/sudo.log" Defaults lecture="always" Defaults badpass_message="Password is wrong, please try again" Defaults passwd_tries=5 Defaults insults Defaults log_input,log_output
انواع ورودی های پیش فرض
Defaults parameter, parameter_list #affect all users on any host Defaults@Host_List parameter, parameter_list #affects all users on a specific host Defaults:User_List parameter, parameter_list #affects a specific user Defaults!Cmnd_List parameter, parameter_list #affects a specific command Defaults>Runas_List parameter, parameter_list #affects commands being run as a specific user
برای دامنه، به اولین نوع پیش فرض در فرم های zero down می رویم.
پارامترهای مورد استفاده ممکن است به صورت flags ،integer ،values ،strings یا lists باشند.
باید توجه داشته باشید که flag ها به طور ضمنی Boolean هستند و میتوان با استفاده از «!» آن را خاموش کرد.
Defaults parameter OR Defaults parameter=value OR Defaults parameter -=value Defaults parameter +=value OR Defaults !parameter
تنظیم یک مسیر امن
این مسیر برای هر دستوری که با sudo اجرا می شود قابل استفاده می باشد، از مزایای این دستور می توان به موارد زیر اشاره کرد:
از این دستور زمانی استفاده می شود که مدیر وبسایت از داشتن متغیر محیطی PATH ایمن، برای جدا کردن «root path» و «user path» کاربران sudo مطمئن نیست، فقط کاربرانی که توسط exempt_group تعریف شدهاند تحت تأثیر این تنظیم قرار نمیگیرند.
برای تنظیم می توانید از دستور زیر را استفاده کنید:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
فعال کردن sudo در TTY User Login Session
به منظور فعال کردن sudo برای فراخوانی از یک tty واقعی از دستور زیر استفاده کنید. اما توجه داشته باشید که در موقع اعمال روشهایی مانند اسکریپتهای cron یا cgi-bin از این دستور استفاده نمی شود:
Defaults requiretty
اجرای دستور Sudo با استفاده از pty
مهاجمان چندین بار می توانند یک برنامه مخرب را مانند یک ویروس یا بدافزار را با استفاده از sudo اجرا کنند، اجرای دستور می تواند دوباره یک فرآیند پس زمینه را ایجاد کرده که حتی پس از اتمام اجرای برنامه اصلی نیز در دستگاه ترمینال کاربر باقی می ماند.
برای جلوگیری از چنین پیشامدی، میتوانید sudo را طوری پیکربندی کنید که فرمانهای دیگر را فقط از یک psuedo-pty و همچنین با استفاده از پارامتر use_pty اجرا کند. توجه کنید که به هنگام ورود به سیستم، این گزینه ممکن است روشن باشد و یا غیر فعال باشد:
Defaults use_pty
ایجاد یک فایل Sudo Log
به طور پیش فرض، sudo از طریق syslog ثبت می شود. با این حال، برای تعیین یک فایل ثبت سفارشی، از پارامتر logfile مانند زیر می توانید استفاده کنید:
Defaults logfile="/var/log/sudo.log"
برای log hostname و four-digit year در فایل ثبت سفارشی، به ترتیب از پارامترهای log_host و log_year به صورت زیر استفاده می شود:
Defaults log_host, log_year, logfile="/var/log/sudo.log"
در تصویر زیر نمونه ای از فایل ثبت سفارشی sudo نشان داده شده است:
وارد کردن دستور Input یا Output
Sudo، پارامترهای log_input و log_output را قادر میسازد تا دستوری را به صورت شبه tty اجرا کند و تمام ورودیهای کاربر و همه خروجیهای ارسال شده به صفحه را ثبت کند.
دایرکتوری پیش فرض ورود/خروج به صورت /var/log/sudo-io می باشد. توجه کنید اگر شماره ترتیب جلسه وجود داشته باشد در این دایرکتوری ذخیره می شود. شما می توانید یک دایرکتوری سفارشی را از طریق پارامتر iolog_dir مشخص کنید.
Defaults log_input, log_output
در این میان برخی از آنها از دنبالههای فرار پشتیبانی میشوند، برای مثال %{seq} که به صورت یک عدد دنباله پایه-36 و به صورت یکنواخت افزایش مییابد. اگر بخواهیم یک مثال بیان کنیم، 000001 که در آن از هر دو رقم برای تشکیل یک فهرست جدید استفاده میشود. یا در مثال 00/00/01 به صورت زیر عمل می کنیم:
cd /var/log/sudo-io/ ls cd 00/00/01 ls cat log
با استفاده از دستور cat می توانید بقیه فایل های آن دایرکتوری را مشاهده کنید.
نمایش پیام سفارشی به هنگام وارد کردن رمز عبور نامعتبر
زمانی که کاربر رمز عبور خود را به صورت اشتباه وارد می کند، پیامی در command line نمایش داده می شود. این پیام به صورت پیشفرض sorry و try again نمایش داده می شود. شما میتوانید پیام را با استفاده از پارامتر badpass_message به صورت زیر تغییر دهید:
Defaults badpass_message="Password is wrong, please try again"
بالا بردن میزان حد امتحان رمز عبور
پارامتر passwd_tries برای تعیین تعداد دفعاتی که کاربر میتواند رمز عبور خود را وارد کند، استفاده میشود.
این مقدار پیش فرض، 3 تعیین شده است:
Defaults passwd_tries=5
برای تنظیم زمان گذرواژه که به صورت پیشفرض 5 دقیقه می باشد، با استفاده از پارامتر passwd_timeout دستور زیر را اضافه کنید:
Defaults passwd_timeout=2
دریافت پیام Sudo Insult به هنگام وارد کردن رمز عبور اشتباه
در صورتی که کاربر رمز عبور خود را به صورت اشتباه تایپ می کند، sudo پیامی را با پارامتر insults در ترمینال نشان می دهد. این به طور خودکار پارامتر badpass_message را خاموش خواهد کرد.
Defaults insults
یادگیری بیشتر تنظیمات Sudo
شما میتوانید پیکربندی دستورات بیشتری از sudo را با خواندن، بررسی تفاوت های ما بین su و sudo، همچنین نحوه پیکربندی sudo در لینوکس را بیاموزید.
آذرسیس، ارائه دهنده سرور مجازی لینوکس و سرور مجازی ویندوز با بالاترین کیفیت و تحویل فوری می باشد. شما پس از خرید از وبسایت، سرور خود را به صورت فوری پس از پرداخت وجه تحویل خواهید گرفت. خبر خوب این که پس از خرید از وبسایت، خدمات کانفیگ به صورت رایگان برای شما انجام خواهد گرفت.
سخن آخر
در این آموزش 9 پیکربندی مفید Sudoers برای تنظیم sudo در لینوکس را بررسی کردیم. اگر شما نیز در این زمینه فعالیت می کنید، خواندن این مقاله می تواند برای شما مفید واقع شود. ممنون که تا انتهای این آموزش همراه ما بودید، در صورت داشتن سوال، از بخش نظرات با ما در ارتباط باشید.
تعریف از فایل پیکربندی sudo در لینوکس چیست؟
فایل پیکربندی، sudo /etc/sudoers می باشد که همیشه باید با دستور visudo(8) ویرایش شود. visudo فایل sudoers را قفل کرده، ویرایشها را در یک فایل موقت ذخیره میکند و قبل از کپی کردن آن در /etc/sudoers آن را برای خطاهای syntax بررسی می کند