نوشته شده توسط فرشید نوتاش حقیقت.
اگر شما از جمله کاربران لینوکس میباشید، احتمالاً به sudo و su برخوردهاید. حال سوال اینجاست که sudo با su چه تفاوتی دارد؟
su و sudo دو روش مختلف برای بهدست آوردن دسترسیهای root میباشد.
کاربر root
su و sudo هر دو برای اجرای فرامین با پرمیژنهای root مورد استفاده قرار میگیرد. کاربر root (ریشه) معادل کاربر Administrator در ویندوز میباشد. کاربر ریشه دارای تمامی پرمیژنهاست که با آن میتوانید هر کاری را در سیستم انجام دهید. کاربران معمولی در لینوکس با پرمیژنهای کمتری کار میکند. به عنوان مثال کاربران عادی نمیتوانند نرمافزار نصب کنند. برای انجام کاری که نیازمند این پرمیژنهاست میبایست از su یا sudo کمک گرفت.
su در مقابل sudo
وقتی فرمان su را بدون هیچ گزینه اضافهای اجرا میکنید به super user یا کاربر ریشه سوئیچ میشوید که میبایست رمز عبور حساب کاربری root را وارد کنید. همچنین فرمان su میتواند برای سوئیچ به هر حساب کاربری بهکار گرفته شود. اگر فرمان su bob را اجرا کنید، از شما رمز عبور Bob خواسته میشود و پوسته به حساب کاربری Bob تغییر خواهد کرد.
پس از اتمام اجرای فرامین در پوسته root باید exit را برای خروج تایپ کرده تا از پوسته ریشه خارج شده و به حالت دسترسی محدود وارد شوید.
Sudo یک فرمان واحد را با امتیازات root اجرا میکند. وقتی فرمان sudo را اجرا میکنید، سیستم قبل از اجرای فرمان به عنوان کاربر ریشه از شما رمز عبور کاربر فعلی را خواستار میشود.
Su شما را به کاربر root سوئیچ میکند و از شما رمز عبور حساب کاربری root را میخواهد. این یکی از کلیدیترین تفاوتهای su و sudo میباشد.
Sudo یک فرمان واحد را با امتیازات root اجرا میکند و حساب کاربری را به کاربر root تغییر نمیدهد.
اوبونتو در مقابل سایر توزیعات لینوکسی
فرمان su روشی مرسوم برای دستیابی به پرمیژنهای ریشه در لینوکس میباشد. فرمان sudo برای مدت طولانی وجود داشته اما اوبونتو اولین توزیع محبوب لینوکسی است که بهطور پیشفرض با sudo کار میکند.
زمانی که اوبونتو را نصب میکنید، یک حساب root استاندارد ایجاد میشود، اما هیچ رمز عبوری برای آن اختصاص داده نمیشود. شما نخواهید توانست به عنوان root وارد سیستم شوید مگر آن که یک رمز عبور برای حساب کاربری root تخصیص دهید.
استفاده از sudo بهجای su دارای مزایای زیادی است. کاربران اوبونتو فقط باید یک کلمه عبور را به یاد داشته باشند در حالی که فدورا و سایر توزیعها نیاز به ایجاد رمزهای عبور ریشه و کاربر بهصورت جداگانه در هنگام نصب دارند.
مزیت دیگر این است که اجازه ورود به سیستم بهعنوان کاربر root و یا استفاده از su را برای دریافت پوسته root نمیدهد.
توزیعات مبتنی بر اوبونتو از جمله لینوکس مینت بهطور پیشفرض از sudo بهجای su استفاده میکنند.
چندین ترفند
برای اجرای یک فرمان بهعنوان کاربر ریشه با su فرمان زیر را اجرا کنید:
su -c ‘command’
این فرمان مشابه اجرای فرمان با sudo است، اما به جای رمز عبور حساب کاربری فعلی به رمز عبور root نیاز دارید.
برای دریافت کامل پوسته ریشه، فرمان sudo –i را اجرا کنید.
شما باید رمز عبور حساب کاربری فعلی را به جای گذرواژه حساب کاربری root وارد کنید.
فعال کردن کاربر ریشه در اوبونتو
برای فعال کردن حساب کاربری root در اوبونتو، از فرمان زیر برای تنظیم رمز عبور برای آن استفاده کنید.
sudo passwd root
پیش از آنکه بتوانید رمز جدیدی را تنظیم کنید، sudo از شما رمز عبور فعلی حساب کاربری را درخواست خواهد کرد.
از طریق ترمینال با رمز عبور جدید وارد حساب کاربری root شده و یا از فرمان su کمک بگیرد. هرگز نباید محیط گرافیکی را به عنوان کاربر root اجرا کنید. این کار از نظر امنیتی کار بسیار خطرناکی است.
افزودن کاربران به فایل sudoers
فقط حسابهای administrator میتوانند فرامین را با sudo اجرا کنند. شما میتوانید نوع حساب کاربری را از پنجره User Accounts configuration تغییر دهید.
اوبونتو بهطور خودکار حساب کاربری ایجاد شده در هنگام نصب را بهعنوان حساب administrator تعیین میکند.
اگر از توزیع لینوکسی دیگری استفاده میکنید، میتوانید یک پرمیژن کاربری را برای استفاده از sudo با اجرای فرمان visudo با امتیازات root ایجاد کنید. (پیش از آن su یا su –c را اجرا کنید.)
خط زیر را به فایل اضافه کنید و بهجای user نام حساب کاربری را قرار دهید:
user ALL=(ALL:ALL) ALL
ابتدا Ctrl+X را زده و سپس Y را برای ذخیره فایل بفشارید. همچنین میتوان یک کاربر را به یک گروه مشخص شده در فایل اضافه کنید.
نسخههای گرافیکی su
لینوکس نسخههای گرافیکی su را نیز پشتیبانی میکند و خواستار رمز عبور در محیط گرافیکی میشود. بهعنوان مثال، میتوان فرمان زیر را برای دریافت یک درخواست رمز عبور گرافیکی اجرا نمود و مرورگر ناتیلوس را با پرمیژنهای root اجرا نمود. Alt+F2 را بفشارید تا فرمان را از یک نمایشگر گرافیکی اجرا کنید بدون آنکه از ترمینال استفاده کرده باشید.
gksu nautilus
gksu در پشت پرده از su یا sudo مبتنی بر توزیع لینوکس استفاده میکند.
منبع: howtogeek.com
نوشته تفاوت su و sudo در لینوکس اولین بار در لینوکس سیزن پدیدار شد.