در محیط سیستم عامل های لینوکس و یونیکس شما باید از دستورات SU یا SUDO ( البته با حروف کوچک ) برای استفاده لحظه ای از سایر اکانت های موجود بر روی سیستم عامل استفاده کنید که البته در اکثر موارد این اکانت یا حساب کاربری همان کاربر root است. مشابه همین عمل اگر دقت کرده باشید گزینه Run as در سیستم عامل ویندوز است و در لینوکس با استفاده از یک کاربر محدود می توانیم به سیستم عامل لاگین کنیم و با دستور SU یا SUDO به دسترسی های یک کاربر دیگر دسترسی پیدا کنیم.
دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
کلمه SU مخفف Substitute User و کلمه SUDO مخفف Substitute User DO است. بعضا بسیاری از افراد با توجه به اینکه اکثرا از SU برای وارد شدن به یک حساب کاربری root استفاده می کنند به اشتباه فکر می کنند که کلمه SU مخفف Super User است ( به خدا خودم تا قبل از نوشتن این مطلب هم همین فکر رو می کردم اما خوب انسان هستیم و جایزالخطا D: )
sudo shutdown -r +15 "quick reboot"
-----------------------------------------
su
مهمترین تفاوتی که در بین دستورات SU و SUDO وجود دارد این است که معمولا شما بعد از اینکه دستور SU را وارد می کنید و نام کاربر جدید را وارد می کنید ، در واقع نام کاربر جدید یک پارامتر برای دستور SU محسوب می شود و در دستور خط بعد شما با دسترسی کاربر جدید دستورات را اجرا می کنید اما زمانیکه از دستور SUDO استفاده می کنید در همان لحظه یک پارامتر دستوری هم در ادامه دستور SUDO وارد می کنید بدین معنا که دستور مقابل را با دسترسی کاربری با دسترسی root ( البته معمولا ) اجرا کن.
بعد از وارد کردن SUDO و نام کاربری و بعضا رمز عبور مورد نیاز ، بعد از احراز هویت شدن کاربر مورد نظر ، دستوری که در ادامه SUDO وارد شده است با دسترسی کاربر مورد نظر جدید بلافاصله اجرا می شود. استفاده از SUDO زمانی بیشتر می شود که شما می خواهید فقط یک دستور را با استفاده از دسترسی root سیستم عامل اجرا کنید و نمی خواهید دسترسی همیشگی شما بر روی سیستم موجود root باشد ، دقیقا مشابه چیزی که در سیستم عامل ویندوز به نام Run as Administrator می شناسیم ، معادل SU نیز در سیستم عامل ویندوز Run as different user می باشد.
SUDO از این لحاظ بیشتر در میان Admin ها محبوب است که شما می توانید از قبل دستوراتی که با SUDO قرار است اجرا شود را برای آن تعریف کنید و حتی تعریف کنید که یک کاربر بتواند از SUDO استفاده کند یا خیر ، اینکار در اصطلاح تعریف کردن Constraint در لینوکس نام دارد و شما برای تعریف کردن constraint برای SUDO کافیست تغییرات خود را در فایل conf لینوکس انجام دهید.
اینکار انعطاف پذیری زیادی را برای Admin های سیستم ایجاد می کند به ویژه زمانیکه کاربران زیادی از سیستم می توانند استفاده کنند از لحاظ امنیتی تعریف کردن اینکه چه کسانی بتوانند از SUDO استفاده کنند بسیار مهم است.یکی دیگر از مزیت هایی که SUDO دارد Log ای است که از تمامی دستوراتی که توسط DUDO اجرا شده اند برداشته می شود. این Log به شما کمک می کند که متوجه شوید مشکلات از کجا و به وسیله چه کاربری و با چه دستوری ایجاد شده اند و براحتی می توانید آنها را رفع اشکال کنید.
با استفاده از SU معمولا کاربر یک کاربر دیگر با دسترسی root ایجاد می کند و این نام کاربری و رمز عبور را بین کاربران دیگر به اشتراک می گذارد که به خودی خود یک نقطه ضعف امنیتی به حساب می آید زیرا هیچ محدودیتی برای استفاده کاربران عادی از این نام کاربری و رمز عبور وجود نخواهد داشت. با استفاده از SUDO شما نیازی نیست که رمزهای عبور را به اشتراک بگذارید و تنها با وارد کردن دستور سطح دسترسی کاربر به منابعی که به آن دسترسی دارد و در حال حاضر به آنها اجازه دسترسی داده نمی شود بالاتر خواهد رفت .
به دلیل همین مزایایی که SUDO دارد این دستور نسبت به سایر دستوراتی که در لینوکس تقریبا کار مشابهی انجام می دهند اولویت و محبوبیت بیشتری دارد. SUDO را کاربران محدود نیز برای انجام وظایف خود با دسترسی super user استفاده می کنند و این دقیقا همانجایی است که SUDO را با Super User اشتباه می کنند. خارج از همه این مسائل دستور SU همچنان کاربردهای خاص خود را دارد ، به ویژه زمانیکه قرار است با نام کاربری دیگری از ترمینال لینوکس استفاده کنیم ، بصورت خلاصه تفاوت SU و SUDO به شکل زیر است :
- SUDO معمولا با یک دستور همراه است اما SU دستوری در ادامه ندارد
- SUDO دارای محدودیت های از قبل تعریف شده است اما SU این امکان را ندارد
- SUDO از تمامی دستوراتی که در آن استفاده می شود Log برداری می کند اما SU اینکار را نمی کند
- شما در SU باید رمز عبور را به اشتراک بگذارید اما در SUDO نیازی به اینکار نیست
- SUDO دسترسی کاربر فعلی را ارتقاء می دهد اما SU اینکار را نمی کند