تفاوت بین sudo و su چیست؟
دستورات sudo و su متعلق به گروهی از دستوراتی هستند که هر کاربر لینوکس با آن روبرو میشود. از آنجایی که آنها از نظر سینتکس مشابه هستند و عملکردهای همپوشانی دارند، بسیاری از کاربران مبتدی مطمئن نیستند که چه زمانی باید از کدام استفاده کنند. در این مطلب، همه چیز را در مورد تفاوت بین su و sudo یاد بگیرید.
مقایسه su و sudo
هم su و هم sudo امتیازات اختصاص داده شده به کاربر فعلی را افزایش میدهند.
تفاوت اصلی بین آنها، این است که su به رمز عبور اکانت هدف، نیاز دارد ولی sudo به رمز عبور کاربر فعلی نیاز دارد. بنابراین، استفاده از sudo بسیار ایمنتر است زیرا شامل تبادل اطلاعات حساس نمیشود.
علاوه بر این، توصیه میشود هنگام انجام کارهایی که نیاز به امتیازات root دارند، به sudo پایبند باشید. با انجام این کار، به کاربر فعلی فقط برای دستور مشخص شده امتیاز داده میشود. از سوی دیگر، su به طور کامل به کاربر اصلی سوئیچ کرده و کل سیستم را در معرض تغییرات تصادفی احتمالی قرار خواهد داد.
آموزش استفاده از دستور su
دستور su مخفف substitute user است و بیشتر برای جابجایی از یک کاربر به کاربر دیگر استفاده میشود. این کار را با راه اندازی یک shell ورود در دایرکتوری و محیط فعلی (su) یا با تغییر کامل به تنظیمات کاربر هدف (su -) انجام میدهد.
سینتکس اصلی این است:
su [user_name]
su - [user_name]
اگر دستور بدون آرگومان استفاده شود، به حساب superuser (root) تغییر میکند.
دستور su چگونه کار میکند؟
برای فراخوانی شل کاربر دیگر، از دستور su (بدون خط فاصله) استفاده کنید.
به عنوان مثال، برای کار به عنوان یک کاربر به نام parsdev، اجرا کنید:
su parsdev
سپس رمز عبور اکانت parsdev را وارد کرده و Enter را بزنید.
شل باید تغییر کند، نشان میدهد که اکنون به حساب مشخص شده اپراتور دسترسی دارید. با این حال، محیط کاربری همانند تصویر زیر باقی میماند:
دستور su – [hyphen] چگونه کار میکند؟
برای انتقال به کاربر دیگر و تغییر به محیط کاربر هدف، از دستور su - استفاده کنید.
بنابراین، برای جابجایی به کاربر parsdev، دستور را تایپ کنید:
su - parsdev
رمز عبور اکانت parsdev را تایپ کرده و برای تایید Enter را بزنید. خروجی باید مشابه تصویر زیر ظاهر شود:
خرید سرور مجازی در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
آموزش استفاده از دستور sudo
sudo به عنوان پیشوند دستورات لینوکس استفاده میشود، که به کاربر وارد شده اجازه میدهد تا دستوراتی را اجرا کند که به امتیاز root نیاز دارند. برخلاف su، دستور sudo در لینوکس نیاز به ارائه رمز عبور برای کاربری دارد که این دستور را اجرا می کند.
همه وظایف administrative و اجرایی نیاز به حداکثر مجوز دارند (که توسط root نگهداری میشوند). در چنین مواقعی استفاده از sudo توصیه می شود.
سینتکس اصلی این است:
sudo [command]
قبل از اینکه سیستم دستور را اجرا کند، رمز عبور کاربر فعلی را می خواهد.
به خاطر داشته باشید که گزینه sudo فقط توسط کاربرانی که متعلق به گروه sudoers هستند قابل استفاده است.
افزودن کاربر به گروه Sudoers
برای اینکه کاربر دستوری را اجرا کند که به پیشوند sudo نیاز دارد، باید بخشی از گروه sudoers باشد.
برای افزودن یک کاربر به گروه sudoers، دستور زیر را اجرا کنید (به عنوان root یا حسابی که از قبل دارای امتیازات sudo است):
usermod -aG sudo [user_name]
به عنوان مثال، برای اضافه کردن حساب کاربری parsdev، باید تایپ کنید:
sudo usermod -aG sudo parsdev
برای مشاهده لیستی از حساب های متعلق به گروه sudoers اجرا کنید:
sudo getent group sudo
خروجی باید حساب اضافه شده در مرحله قبل را نمایش دهد:
چگونه sudo و su روی توزیعهای مختلف لینوکس کار میکنند
su یک فرمان قدیمیتر اما با ویژگیهای کاملتر است که در تمام توزیع های لینوکس گنجانده شده است. این روش سنتی برای جابجایی به حساب root است.
لینوکس از کار کردن به عنوان root جلوگیری میکند زیرا ممکن است باعث تغییرات ناخواسته در سراسر سیستم شود و به جای آن از sudo استفاده کنید. به همین دلیل، همه نسخههای مبتنی بر اوبونتو فقط sudo هستند، به این معنی که حساب root به طور پیشفرض فعال نیست.
در حین نصب سیستم عامل اوبونتو، یک کاربری ایجاد میکنید که به طور خودکار به عنوان بخشی از گروه sudoers برچسب گذاری شده است. با این حال، هیچ راه اندازی حساب کاربری root وجود ندارد. برای فعال کردن کاربر root، باید آن را به صورت دستی فعال کنید.
از طرفی دیگر توزیع های لینوکس مانند فدورا پس از نصب یک حساب کاربری root و کاربری ایجاد میکنند.
فعال کردن اکانت root
اگر از یک توزیع مبتنی بر اوبونتو استفاده میکنید و سعی میکنید به کاربر root سوئیچ کنید، خروجی به شما اطلاع میدهد که یک Authentication خراب شده (Authentication failure) است.
برای فعال کردن کاربر root، دستور passwd را اجرا کنید:
sudo passwd root
در مرحله بعد، خروجی از شما میخواهد که رمز عبور را برای کاربر اصلی تنظیم کنید. رمز عبور امن را تایپ کرده و تایید کنید، سپس Enter را بزنید. سیستم باید به شما اطلاع دهد که رمز عبور با موفقیت به روز شده است.
با تغییر پوسته ورود به آن با su -، تایید کنید که کاربر root فعال است.
ویژگیهای اضافی
اگرچه sudo بیشتر به اجرای دستورات با امتیازات root مرتبط است، اما میتوان از آن برای تغییر کاربر root نیز استفاده کرد. به کاربر root بروید و محیط root را با:
sudo -i
رمز عبور کاربری که در حال حاضر استفاده می شود را وارد کنید. اکنون باید در پوسته root باشید.
به همین ترتیب، su همچنین می تواند به عنوان sudo عمل کند و یک فرمان را به عنوان root اجرا کند:
su -c [command]
نتیجه گیری
پس از خواندن این مطلب، باید تفاوت بین دستور sudo و su را درک کنید. به خاطر داشته باشید که هر زمان که می توانید از sudo برای جلوگیری از مشکلات احتمالی امنیتی و سیستم استفاده کنید.