سودو ( sudo ) فرمانروای ارشد سیستمهای لینوکسی
سودو ( sudo ) یک کامند برای حکمرانی بهتمامی کامندها است . سودو مخفف کلمه “super user do” به معنی لغوی انجام توسط کاربر فوقالعاده است که توسط مدیران سیستمهای لینوکسی یا کاربران متخصص به این شکل “سوو دُو” تلفظ میشود . این کامند یکی از مهمترین ابزارهای موجود در ضرابخانه فرماندهی شماست . تابهحال پیشآمده که در زمان اجرای یک دستور با پیام Access denied مواجه شده باشید ؟ خب دقیقاً اینیک کامند برای همین مواقع است، البته توجه داشته باشید که هر میزان قدرت بیشتر میشود مسئولیت نیز سنگینتر میشود . با ادامه مقاله همراه باشید تا به شما بگوییم sudo چهکارهایی میتواند برای شما انجام دهد و چرا عدم ورود با کاربر root سیستم و استفاده از کامند sudo در مواقع لزوم بهتر است .
Sudo برای چه خوب است ؟
اما واقعاً سودو چهکاری انجام میدهد ؟ اگر sudo را در ابتدای هر کامند لینوکسی قرار دهید آن کامند با بالاترین سطح دسترسی اجرا میشود که برای اجرای برخی دستورات خاص حتماً نیاز به اجرا با سطح دسترسی روت دارید برای مثال اگر شما یک سرورLAMP (linux,apache,mysql,php) داشته باشید و قصد تغییر در فایلهای کانفیگ مثلاً آپاچی را داشته باشید، پس از ایجاد تغییرات باید حتماً اقدام به بازنشانی سرویس (restart service) آپاچی نمایید تا این تغییرات اعمال شوند اما ریست سرویسها نیاز به دسترسی روت دارد که این امر با قرار دادن sudo در ابتدا کامند ریست قابل انجام است . همچنین برای خاموش یا ریبوت کردن سرور نیز نیاز به استفاده از sudo قبل از دستور موردنظر خواهید داشت .
اگر شما با سیستمعامل ویندوز آشنایی داشته باشید حتماً در زمان اجرای فایلهای .exe یا برخی نرمافزارها و انجام برخی تغییرات در سیستم پیغام user control account را مشاهده نمودید، همان پیغامی که در یک دیالوگ باکس ظاهرشده و از شما درخواست تائید یا رد انجام عملیات را میکند و یا در سیستمهای با سیستمعامل mac در این مواقع یک پنجره بازشده و از شما درخواست نوشتن پسورد سیستم را دارد . برای درک بهتر sudo میتوانید آن را با مثالهای بالا همسانسازی کنید که البته شباهت بیشتری به مورد دوم یعنی سیستمهای mac دارد .
به مثال زیر که برای ریبوت کردن یک سیستم لینوکسی است توجه کنید:
در تصویر بالا مشاهده میکنید که ابتدا درخواست reboot به سیستم ارسالشده است که با پیغام must be superuser مواجه شدهایم و ریبوت سیستم انجام نشده است و در مرحله بعد با اجرای همان دستور اما افزودن sudo به ابتدای آن سیستم ابتدا درخواست ورود پسورد نموده و پس از ورود پسورد پیام موفقیت ریبوت نمایش دادهشده و ریبوت سیستم انجامشده است . البته باید بدانید که در این مرحله سیستم پسورد همان یوزری که با آن واردشدهاید را درخواست میکند و نه کاربر root را .
سودو شبیه یک فرمانروا در میدان جنگ عمل میکند که سربازان (سایر کامندها) باید بدون چونوچرا فرمان اورا اجرا کنند .
چرا استفاده از sudo بهتر از روشهای دیگر است ؟
برای اجرای دستورات با سطح دسترسی بالا روشهای دیگری مانند ورود مستقیم با کاربر root یا استفاده از دستور su برای جابهجایی بین کاربر فعلی با کاربر root وجود دارد که بهاینترتیب شما میتوانید تمامی دستورات را بدون قرار دادن sudo در ابتدای آن اجرا کنید . اما بهترین، سادهترین و امنترین روش همان روش استفاده از sudo است . فرض کنید شما با کاربر root در حال اجرای دستورات در سرور خود هستید و یک دستور اشتباه مانند rm که برای حذف فایلها است را اشتباهاً در دایرکتوریای که نباید وارد میکنید، به نظر شما چه اتفاقی رخ میدهد ؟! بومب تمامی اطلاعات شما حذف خواهد شد تجارت شما در کسری از ثانیه نابودشده است. شک نداشته باشید که بهترین روش روش استفاده از sudo برای اجرای دستورات در لینوکس است ، شاید با خود بگویید محال است چنین اشتباهی کنید اما باید عرض کنم ازآنچه تصور میکنید هم محتملتر است که چنین اشتباهی انجام دهید، حتی کارشناسان بسیار خبره لینوکس نیز از اشتباهات فردی و انسانی مستثنا نیستند. شاید با خواندن این متن با خود بگویید rm که پس از ورود برای حذف تأییدیه میگیرد، بله حق با شما است اما اکثراً -rf را به انتهای آن میچسبانیم که دیگر اجازه نخواهد گرفت و البته این فقط یک مثال دمدستی برای درک بهتر اهمیت sudo بود، اگر شما با کاربر root واردشده باشید ممکن است اتفاقات دیگری هم رخ دهد که تجربه آنها بسیار تلختر از روش ساده واردکردن sudo قبل از دستورات در لینوکس خواهد بود .
فایل کانفیگ sudo
بهطورکلی تمامی تنظیمات مربوط به sudo از فایل کانفیگ آن دریافت و اعمال میشود، این فایل مشخص میکند که چه کسی میتواند برای دریافت سطح دسترسی بالا از sudo استفاده کند معمولاً این فایل در /etc/sudoers
قرار دارد و شما میتوانید با هر ویرایشگر فایلی آن را بازکرده و اقدام به ویرایش آن کنید که البته پیشنهاد ما برای ویرایش امنتر آن استفاده از دستور visudo است، این کامند فایل کانفیگ sudo را با ویرایشگر vi و با سطح دسترسی بالا جهت ذخیره تغییرات شما باز میکند و همزمان یک filelock ایجاد مینماید تا در هنگام اعمال تغییرات شما شخص دیگری نتواند تغییری در این فایل اعمال کند . شدیداً پیشنهاد میکنم قبل از هرگونه تغییر در این فایل یک رونوشت (copy) از آن ایجاد نمایید تا در مواقع ضروری بهسرعت سیستم را به حالت قبل بازگردانید . روش استفاده از visudo بسیار بهتر از استفاده از سایر ویرایشگرهای متن لینوکس مانند nano یا حتی vi بهصورت مستقیم است، داخل این فایل پارامترهای زیادی را مشاهده خواهید کرد در مثال زیر ما به کاربر morteza و همچنین تمامی کاربرانی که در گروه کاربری wheel قرار دارند اجازه اجرای sudo را دادهایم :
username ALL=(ALL) ALL //gives user "username" sudo access %wheel ALL=(ALL) ALL //Gives all users that belong to the wheel group sudo access
تنظیمات مختلفی را از طریق این فایل میتوانید بر روی گروههای کاربری و کاربران اعمال کنید که حتماً در مقالات آتی به آن میپردازیم .
برخی گزینههای sudo
همانند خیلی از دستورات پرکاربرد که دارای گزینههای (options) مفید و پرکاربردی هستند، sudo نیز دارای گزینههای بسیار عالیای است که در زیر به آنها اشاره میکنیم .
sudo -b : گزینه -b در مقابل sudo دستور اجرایی شمارا در بکگراند اجرا خواهد کرد، به این معنا که دستور موردنظر شما در پس سیستم فعالیت خود را ادامه میدهد و دیگر نیاز نیست شما منتظر اتمام فعالیت سیستم و بعد ادامه کار یا خروج از سیستم باشید، یکی از کاربردهای این دستور در مواقعی است که میخواهید یک اسکریپت پس از خروج از سیستم یا در زمان انجام سایر فعالیتهای شما در حال اجرا باقی بماند.
sudo –s : گزینه -s محیط شل شمارا به محیطی با سطح دسترسی بالا تبدیل میکند، به این معنا که پسازآن نیاز به واردکردن sudo برای اجرای دستورات نخواهید داشت .
sudo -su : این گزینه شمارا به محیط root سیستم وارد میکند .
در پایان باید بدانید دستور sudo در تمامی توزیعهای لینوکس وجود دارد اما برخی جزئیات آن در توزیعهای مختلف متفاوت است، توضیحات فوق بیشتر مرتبط با ubuntu بود اما همین موارد در Centos نیز باکمی تفاوت صادق است . در آینده مقاله دیگری در خصوص تنظیمات کامل sudo و فایل کانفیگ آن با شما به اشتراک خواهیم گذاشت که امیدواریم مارا همراهی کنید .
1 نظر
به نظرم میتونست کاملتر باشه اما خوب بود