هوتن کاظمی

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

هوتن کاظمی

این محتوا بدون نظارت تیم سکان آکادمی تولید شده و صرفاً نظرات شخصی هوتن کاظمی می‌باشد.

خب همونطور که میدونید ما در لینوکس چند راه داریم برای مقابله با تهدید‌ها (و یا اشتباهات خودمون ?) که مالکیت فایل (file ownership)، مجوز‌های فایل‌ها (file permissions) و دسترسی root رو شامل میشه.

معمولا دستور su رو به عنوان super user میشناسیم، ولی در حقیقت مخفف substitute user هست و به ما این امکان رو میده که به فایل های بقیه یوزر ها دسترسی داشته باشیم و اونا رو اجرا کنیم. درست مثل اکانت adminstrator.

حالا اکانت ادمین چی هست اصلاً؟

اکثر سیستم‌عامل‌های مطرح قابلیت حساب کاربری مدیر (administrator account) رو دارند. این حساب کاربری دسترسی‌های بیشتری نسبت به حسابهای کاربری معمولی دارد.
کاربران معمولی فقط اجازه دسترسی به فایلهای خودشان رو دارند و نمی‌توانند به فایلهای دیگران دسترسی داشته باشند و همچنین فقط اجازه خواندن (read-only access) فایلهای سیستمی رو دارن.

ولی، حساب ادمین علاوه بر امکان تغییر فایلهای سیستم، که شامل نصب برنامه‌های جدید یا بروزرسانی برنامه‌های نصب شدست، (معمولا) امکان مشاهده فایلهای بقیه کاربرها رو هم داره.

مدیر سیستم، با این فرض که نسبت به کاربر عادی اطلاعات بیشتری داره و آگاهانه در حال کار روی سیستمه، اجازه اعمال تغییرات حجیم‌تر و اساسی‌تری روی سیستم، بدون ایجاد اشکال در سیستم رو داره. کاربران عادی بدون این مجوزهای لازم اجازه انجام کارهای ذکر شده رو ندارند، بنابراین احتمال ایجاد اخلال در سیستم توسط آنها کم است.

در اکثر سیستم‌های یک کاربره، همون کاربر، مدیر سیستمه و توانایی انجام هرکاری روی سیستم داره.

حالا توی لینوکس، ما این فرض رو داریم که تمام کاربران یوزر عادی هستند، و فقط یک SU داریم. و هرکس بخواد کاری انجام بده که نیاز به دسترسی بالا داره باید وارد اکانت SU بشه و کارش رو انجام بده.

برای وارد شدن میتونید خیلی ساده از دستور su استفاده کنید. ازتون پسورد میخواد و شما دسترسی root خواهید داشت.

در بعضی موارد، استفاده از دستور su زیاد جالب نبود. بنابراین دستور sudo، (از ترکیب su + do از لحاظ معنایی درست شده ?) به وجود اومد. فقط کافیه su شما رو در لیست sudoers قرار بده و اون موقع میتونید از دستور sudo قبل از دستورات خودتون استفاده کنید. (یه چیزی مشابه run as adminstrator در ویندوز)

فرقشون چیه؟

1. دستورات sudo کاملا log میشن. ینی به عنوان ادمین میتونید ببینید چه اتفاقی در سیستم افتاده.

2. کسی که میخواد از su استفاده کنه ممکنه یوزرنیم و پسورد رو فاش کنه. که از نظر امنیتی امن نیست.

بعضی از توزیع‌های گنو/لینوکس ترجیح می‌دهند تا فقط از دستور sudo پشتیبانی کنند و بنابراین دستور SU را غیرفعال می‌کنند تا کاربر عادی قادر نباشد در تمام مدت به عنوان یک کاربر ریشه، سطح دسترسی بالا به سیستم داشته باشد. اینکار همچنین از مشکلات حفره‌های امنیتی روز صفر (zero-day) نیز جلوگیری میکند. در‌نتیجه تنها با فعال بودن sudo، بدافزار مجبور خواهد شد تا پسوورد حساب کاربر را حدس بزند تا بتواند سطح دسترسی بالا به سیستم پیدا کند.

حالا انتخاب شماست که از کدوم راه استفاده می کنید و کاملا به خودتون بستگی داره. به نظر شما کدوم راه حل بهتره و از کدوم استفاده میکنید؟ نظرتون رو در کامنت ها به اشتراک بزارین.

منبع: https://www.makeuseof.com/tag/su-important-using-linux-effectively/

پ.ن: میتونید از دستور sudo bash به جای su استفاده کنید. این کار یک bash جدید با دسترسی su باز میکنه.

ایدهٔ خود را در سکان‌پلاس بنویسید!

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
۱۳۹۷/۱۱/۲۹
👏👏👏
امیرحسین مجیری
امیرحسین مجیریدوست‌دار داده‌ها، پی‌اچ‌پی و پژوهش روی زبان
۱۳۹۷/۰۳/۰۳
من که همیشه از sudo استفاده می‌کنم. تهش باید بگیم فرق چندانی ندارند و جفتشون کارای عادی رو راه می‌ندازن
rhdan
rhdan
۱۳۹۷/۰۲/۳۱
بسیار عالی