اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

تفاوت بین دستور su و sudo و نحوه تنظیمات sudo در لینوکس

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    تفاوت بین دستور su و sudo و نحوه تنظیمات sudo در لینوکس

    سیستم عامل لینوکس از هر یک از همتاهای خود امنیت بیشتری دارد. یکی از راه های پیاده سازی امنیت در لینوکس، policy های مربوط به مدیریت یوزر و سطح دسترسی یوزر میباشد و اینکه یوزرهای معمولی برای انجام دادن هرگونه عملیاتی در سیستم مجاز نیستند. اگر یک یوزر معمولی برای انجام عملیات روی هر سیستمی قصد تغییرات گسترده داشته باشد، برای تغییرات به هر دوی دستورات su و sudo نیاز خواهد داشت.

    تفاوت بین دستور su و sudo در لینوکس




    نکته : این مقاله بیشتر برای توزیع های خانواده Ubuntu قابل اجرا هست، همچنین بر روی اکثر توزیع های معروف لینوکس قابل اجرا میباشد.


    su در مقابل sudo

    "su" شما را مجبور میکند پسورد root خود را برای یوزرهای دیگر به اشتراک بگذارید در حالیکه "sudo" باعث میشود دستورات سیستم بدون پسورد root اجرا شوند. sudo اجازه میدهد تا شما پسورد خودتان را برای اجرای دستورات سیستمی مانند امکان اجرای مسئولیت های سیستمی (بدون پسورد root)، استفاده کنید.



    sudo چیست ؟

    "sudo" یک setuid باینری root میباشد، که دستورات root را با یوزر های مجاز اجرا میکند و یوزرها نیاز دارند برای اجرا کردن دستورات سیستمی رمز عبورشان را توسط sudo وارد کنند.



    چه کسی میتواند sudo را اجرا کند ؟

    بمنظور اضافه/حذف لیست کسانی که بتوانند sudo را اجرا کنند باید دستور /usr/sbin/visudo را اجرا کنیم.
    کد PHP:
    sudo /usr/sbin/visudo 
    درتصویر زیر یک نمونه از فایل /usr/sbin/visudo را مشاهده میکنید :
    تفاوت بین su و sudo در linux




    بصورت پیشفرض لیست sudo شبیه به string زیر می باشد :
    کد PHP:
    root ALL=(ALLALL 
    نکته : تنها root میتواند فایل /usr/sbin/visudo را ویرایش کند.



    اعطای دسترسی sudo به کاربر

    در بسیاری از مواقع، ادمین سیستم، خصوصا ادمین هایی که تازه در این زمینه وارد شدند string بالا “root ALL=(ALL) ALL” را به عنوان یک tamplate تلقی میکنند و دسترسی نامحدود به کاربران دیگر میدهند که ممکن است به صورت بلقوه برای سیستم بسیار مضر باشد.

    با ویرایش فایل ‘/usr/sbin/visudo’ به چیزی شبیه به patern زیر ممکن است بسیار خطرناک باشد مگر اینکه شما از تمام یوزرهای لیست شده کاملا مطمئن باشید.
    کد PHP:
    root ALL=(ALLALL
    adam ALL
    =(ALLALL
    tom ALL
    =(ALLALL
    mark ALL
    =(ALLALL 


    پارامترهای Sudo :

    یک sudo درست کانفیگ شده بسیار انعطاف پذیری دارد و تعداد دستورهایی که نیاز است اجرا شود به دقت کانفیگ شده اند.

    ساختار خط sudo کانفیگ شده همانند زیر میباشد :
    کد PHP:
    User_name Machine_name=(Effective_usercommand 

    ساختار بالا را به چهار بخش میتوان تقسیم کرد :

    User_name : نام یوزر sudo میباشد.
    Machine_name : در حقیقت host name ی میباشد که دستور sudo برای آن معتبر (valid) است، این گزینه زمانی مفید است که چندین هاست داشته باشیم.
    (Effective_user) : کاربران ‘Effective user’ که مجاز به اجرا کردن دستورها هستند. این مورد به شما این امکان را میدهد که به کاربران اجازه اجرا کردن دستورات سیستمی را بدهید.
    Command : دستور یا مجموعه ای از دستوراتی که کاربر ممکن است اجرا کند.


    توصیه میشود مطالعه شود :

    10 مورد از تنظیمات مفید Sudoers برای تعریف sudo در لینوکس



    در زیر یکسری موقعیت ها و خطهای sudo مربوط به آنها را لیست کردیم :


    1 - شما یک کاربر به نام mark دارید که ادمین یک دیتابیس است شما قصد دارید که فقط همه دسترسی های روی سرور دیتابیس (beta.database_server.com) و نه هر هاست دیگری را به این کاربر بدهید.

    برای موقعیت بالا خط sudo میتواند به شیوه زیر نوشته شود.
    کد PHP:
    mark beta.database_server.com=(ALLALL 

    2 - شما یک کاربر به نام tom دارید که میخواهید دستورات سیستم را به عنوان یک یوزر غیر از root و روی همان سرور دیتابیس که در بالا توضیح دادیم اجرا کند.

    برای موقعیت بالا خط sudo میتواند به شیوه زیر نوشته شود.
    کد PHP:
    mark beta.database_server.com=(tomALL 

    3 - شما یک یوزر sudo به نام cat دارید و میخواهید تنها دستور dog را اجرا کند.

    برای اجرا کردن شرایط بالا sudo را همانند زیر میتوانید بنویسید.
    کد PHP:
    mark beta.database_server.com=(catdog 

    4 - اگر نیاز باشد که به یک کاربر اجازه اجرا کردن چندین دستور را بدهیم چه ؟

    اگر تعداد دستوراتی که یک کاربر قرار هست بتواند اجرا کند زیر 10 عدد باشد ما میتوانیم تمام آن دستورات را به همراه خط sudo و با استفاده از یک فاصله بین هر کدام مشخص کنیم :
    کد PHP:
    mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ... 
    اگر تعداد این دستورات از یک رنج مشخص تغییر کند و به صورت منطقی امکان تایپ هر دستور به صورت دستی نباشد ما نیاز داریم که از aliases استفاده کنیم. aliases یکی از ابزارهای لینوکسی است که با آن دستورات طولانی یا یک لیستی از دستورات را میتوان با یک کیبرد کوتاه و راحت جایگزین کرد.

    تعداد کمی از مثال های alias که میتوان در خط فایل کانفیگ sudo مورد استفاده قرار داد به شرح زیر میباشد :
    کد PHP:
    User_Alias ADMINS=tom,jerry,adam
    user_Alias WEBMASTER
    =henry,mark 
    کد PHP:
    WEBMASTERS WEBSERVERS=(wwwAPACHE
    Cmnd_Alias PROC
    =/bin/kill,/bin/killall, /usr/bin/top 
    امکان مشخص کردن یک system groups به جای کاربرهایی که به آن گروه متعلق هستند نیز با استفاده از پیشوند ٪ همانند زیر امکان پذیر میباشد.
    کد PHP:
    %apacheadmin WEBSERVERS=(wwwAPACHE 

    5 - امکان اجرا کردن یک دستور sudo بدون وارد کردن پسورد

    ما میتوانیم یک دستور sudo را بدون وارد کردن پسورد و با استفاده از آپشن‘NOPASSWD‘ اجرا کنیم.
    کد PHP:
    adam ALL=(ALLNOPASSWDPROCS 

    اینجا یوزر adam قادر به اجرا کردن تمامی دستورات alias شده تحت PROCS را بدون وارد کردن پسورد میباشد.


    توصیه میشود این مقاله را هم مطالعه فرمایید :

    بی احترامی sudo به کاربری که پسورد اشتباه وارد کند


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


    برای اضافه کردن کاربری با نام bob به لیست sudo تنها کافیست که دستور زیر را با root اجرا کنید.
    کد PHP:
    adduser bob sudo 
    موفق باشید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-02-2021, 12:03 PM.
    Instagram : https://www.instagram.com/iranlinuxforum

    Voip Trainer - Asterisk - Elastix - Agi Programming- NewRock

    Voip Expert :ASTERISK-ELASTIX-NewRock Certified-With Experience of Working With
    Sangoma-Digium-Openvox-Synway-Atcom-Quintum Tenor-Polycom-Yealink-Rtx-Snom
    Cisco Collaboration - CME-CUCM-CUPs-CUC-WEBEX
    LPI ( Fundamental - LPI1 and LPI2 ) - Monitoring: ZABBIX-VOIPMONITOR-NAGIOS - CCNA

    Linkedin Profile : https://www.linkedin.com/in/masuma-vahid-26b17b66/

درباره انجمن منطقه لینوکسی ها

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

شبکه های اجتماعی
در حال انجام ...
X