تاریخچه sudo
قبل از شروع نوشتن این مطلب به شما بگم که این فرمان ۴ سال از بزرگتره هست و اولین بار در سال ۱۹۸۰ ارایه شده است، وقتی دیدم این پروژه هم از دل ساختار BSD برون اومده گفتم در تاریکی شب دست بکار بشم و این مطلب ساده رو بگم برای سایر کاربران دنیای Unix Linux و BSD شاید برای شما هم جالب باشه.
چند وقتی هست که درگیر مجدد استفاده از BSD در ساختارهای کاری شدم و یک بخش آموزشی جدید هم در خصوص PFsense و PF هم دارم طراحی می کنم که برای خود من بعد از گذشت ۵ سال جالب بود، داشتم کتاب مربوط به PF رو مطالعه می کردم که در بخش تاریخچه به این بحث جالب در خصوص sudo رسیدم که گفته بود این پروژه در ساختار OpenBSD هست ولی در سایر BSD ها باید نصب بشه!!! یک کمی به این بخش حساس شدم و رفتم سراغ man ساختار sudo که تا حالا در زندگی خودم حتی بازش هم نکرده بودم. تا کمال تجعب دیدم که در بالای این بخش نوشته شده BSD System Manager’s Manual جالبی برای من بیشتر شد و رفتن در بخش پایانی man و رسیدم به این لینک:
https://www.sudo.ws/contributors.html
وارد سایت sudo شدم و داستان این مقاله شروع شد، من همیشه از تاریخچه و این داستان ها فراری بودم ولی این بار فرق داشت برای من و رفتم به بخش تاریخچه این سایت و با متن زیر مواجه شدم:
Sudo was first conceived and implemented by Bob Coggeshall and Cliff Spencer around 1980 at the Department of Computer Science at SUNY/Buffalo. It ran on a VAX-11/750 running 4.1BSD. An updated version, credited to Phil Betchel, Cliff Spencer, Gretchen Phillips, John LoVerso, and Don Gworek, was posted to the net.sources Usenet newsgroup in December of 1985.
این بخش برای من نکات جالب داشت اولین بخش این بود که sudo در سال ۱۹۸۰ متولد شده است و بخش دوم هم این بود که برروی دستگاهی که از ساختار BSD4.1 استفاده می کرد اجرا شده است.
خب بریم سراغ تعریفی ساده از su do یا همان sudo که به هم چسبیده است، این برنامه به مدیر یک سیستم عامل یونیکسی و لینوکسی این امکان را می دهد که بتواند دسترسی خودش رو به کاربر و یا گروهی از کاربران تفویض اختیار کند و کاربران بتوانند همه فرمان ها و یا بخش خاصی از فرمان های سیستم رو با دسترسی کاربر root اجرا کنند، البته با رمزعبور خودشون و نه رمزعبور کاربر root.
یکی از روشهای قدیمی به اشتراک گذاری سطح دسترسی کاربر اصلی سیستم یا همان root با سایر کاربران این بود که اول کاربر root حتما باید فعال باشد و در سیستم حتما کلمه عبور داشته باشد و در مرحله دوم کاربر باید عضو گروه wheel باشد . مشکل اجرا این فرمان و این روش این بود که کاربر حتما باید رمزعبور کاربر root را هم داشته باشد و بعد از ارتقاع سطح دسترسی خود به همه بخشهای سیستم عامل دسترسی کامل دارد( این روش دسته که مشکل اشتراک رو حل می کنه ولی دسترسی رو به دسترسی نمی تونه مدیریت کنه و برای مواردی خوبه که برای مثال کاربر root اجازه ورود از راه دور یا کنسول رو نداشته باشه و کاربر دیگه امکان وارد شدن داشته باشه و بتونه دسترسی خودش رو ارتقاء بده). نکته جالب اینجاست که sudo بر اساس هر فرمانی که بهش داده میشه عمل می کنه و برخی از ویژگی های آن عبارت است از:
- توانایی محدود کردن دستوراتی که کاربر ممکن است بر اساس هر میزبان اجرا کند.
- ثبت دستورات اجرا شده، ارائه یک مسیر حسابرسی واضح از اینکه چه کسی چه کاری را انجام داده است.
- به صورت خوکار تا ۵ دقیقه احراز هویت کاربر رو در خودش ثبت و نگهداری می کند و فرمان های اجرا شده دیگر نیاز به وارد کردن رمزعبور کاربر ندارد.
جاگزین های برنامه sudo
یک نکته جذاب در این میان این است که در ساختار OpenBSD یک پروژه جدیدی به نام doas وجود دارد که در بسیاری از سیستم عاملها پیاده سازی است، اما جایگزین های دیگری هم در این میان وجود دارد:
vsys
GNU
userv
super
priv
calife
ssu
su1
op
برنامه های مشابه sudo در ساختار سیستم عاملهای ویندوزی:
Privilege Manager for Windows
gsudo
sudowin
suDown