روت (Root) در لینوکس چیست؟
ازجمله ایجاد یا حذف کاربر دیگر و ایجاد یا حذف فایل سیستمها. در این مقاله، حساب کاربری روت (Root) سیستمعامل لینوکس و مزایا و نکتههای مهم استفاده از آن را بررسی خواهیم کرد.
کاربر اصلی اَبَرکاربر لینوکس محسوب میشود. این کاربران به معنی واقعی کلمه میتوانند هر کاری در سیستمعامل مذکور انجام دهند و هیچ کاری برایشان محدود نیست. اینکه کاربر روت (Root) لینوکس کاربری خوب یا مخرب باشد، به این موضوع بستگی دارد که واقعاً چه کسی این دسترسی به سیستمعامل را اختیار دارد. اگر کاربر روت (Root) اشتباهی انجام دهد، احتمالاً اثرش فاجعهبار خواهد بود؛ بنابراین، ریشهٔ لینوکس به طور خاص باید فقط برای اهداف اداری استفاده شود.
به گزارش وبسایت HowToGeek، در لینوکس مفهوم کاربر روت (Root) از سیستمعامل یونیکس به ارث رسیده است. درواقع، یونیکس کاربری روت بهعنوان اَبَرکاربر اداری خود داشت؛ اما هنوز نمیتوان به قطع گفت که نام روت دقیقاً از کجا آمده است.
کن تامپسون و دنیس ریچی، دو تن از معماران و نویسندگان اصلی سیستمعامل یونیکس، قبلاً روی پروژهٔ مولتیکس (Multics) کارکرده بودند. مولتیکس فایل سیستمی داشت که از نقطهای به نام پوشهٔ روت (Root) یا «/» شروع میشد و همهٔ پوشهها و زیرشاخههای دیگر با ساختاری درختی وار از روت (Root) به سمت پایین و بیرون منشعب میشدند. این همان ساختار درختی است که یونیکس پذیرفته است؛ بنابراین، شاید یونیکس کاربر اصلی مولتیکس را نیز پذیرفته باشد.
با جستوجو در اسناد فنی مولتیکس، میتوان تعداد زیادی ارجاع به حجمهای منطقی روت، حجمهای فیزیکی روت (Root) ، کارتهای روت (Root) و پوشههای روت مشاهده کرد؛ ولی در این سندها بهحساب کاربری روت یا نام کاربری root اشارهای نشده است.
تئوری این است که پوشهٔ اصلی Superuser در روزهای اولیهٔ یونیکس، ریشه یا همان روت «/» فایل سیستم بود. اَبَرکاربر به نامی نیاز داشت تا بتواند دستورها را اجرا کند. اصطلاح کاربر روت (Root) بهجای نام رسمی استفاده شده بود؛ اما این اصطلاح ماندگار و مدتی بعد بهعنوان نام رسمی اَبَرکاربر یونیکس شناخته شد. این فقط در حد احتمال است و به نظر میرسد هیچکس نمیتواند به اطمینان دربارهٔ این موضوع صحبت کرد که نام کاربر روت (Root) چگونه و از کجا آمده است.
فرمان Sudo
بهترین روش این است که در هر سیستمعاملی از اَبَرکاربر فقط برای مقاصد اداری و از حساب کاربری معمولی برای سایر موقعیتها استفاده کنید. درحقیقت، بیشترِ توزیعهای مدرن لینوکس به شما اجازه نمیدهند بهعنوان کاربر اصلی وارد محیط سیستمعامل شوید. البته ازآنجاکه لینوکس سیستمعاملی متنباز و بسیار انعطافپذیر است، میتوان آن را به نحوی پیکربندی کرد که اجازهٔ ورود به سیستم را برای کاربر روت صادر کند.
باید اشاره کنیم هرچه زمان کمتری برای ورود به سیستم بهعنوان کاربر روت صرف کنید، بهتر است. علاوه بر محافظت از خود در برابر مشکلات ناشی از اشتباهات املائی حین ورود بهعنوان کاربر روت (Root) ، اگر نتوانید با این سطح کاربری وارد سیستمعامل شوید، هیچ فرد دیگری نیز نمیتواند این کار را انجام دهد. این یعنی کاربری که غیرمجاز به سیستم شما دسترسی داشته باشد، نمیتواند بهعنوان کاربر روت (Root) وارد سیستم شود و بیترتیب احتمال واردکردن آسیبهای احتمالی کاربران غیرمجاز کاهش خواهد یافت.
شاید اکنون این سؤال برایتان مطرح شده باشد که اگر ورود بهعنوان کاربر روت غیرفعال باشد، چگونه میتوان رایانهٔ لینوکسی خود را مدیریت کرد؟ در چنین شرایطی، میتوانید از دستور Sudo استفاده کنید. برای بهرهبردن از قابلیتهای این دستور به ورود بهعنوان کاربر روت نیازی نخواهید داشت. این دستور قدرتهای کاربر روت را موقتاً دردسترس شما قرار خواهد داد.
شما فقط در شرایطی میتوانید از این دستور بهره ببرید که پیشنیاز لازم را برای دسترسی به آن داشته باشید. به همین ترتیب، همهٔ کاربران نمیتوانند از دستور Sudo استفاده کنند. فرمان اشارهشده فقط در صورتی روت (Root) را به شما ارائه خواهد داد که پیشنیاز لازم برای استفاده از آن را داشته و به فهرست Sudoers سیستمعامل لینوکسی خود اضافه شده باشید.
دستور Su نیز مشابه فرمان Sudo است. برای احراز هویت در Sudo باید از رمز عبور استفاده کنید؛ اما برای استفاده از آن باید از رمز عبور کاربری اصلی استفاده کنید. این نکته از دو نظر مهم است:
- برای استفاده از دستور Su باید رمز عبور به کاربر روت اختصاص دهید. کاربر روت (Root) به طور پیشفرض هیچ رمز عبوری ندارد و تعیین رمز عبور میتواند به افزایش امنیت سیستمعامل کمک کند. اگر رمز عبوری برای کاربر روت خود ثبت نکرده باشید، نمیتوانید بهعنوان این کاربر وارد سیستم شوید؛
- اگر رمز عبور روت را تنظیم کنید، همهٔ کاربران برای استفاده از دستور Su باید به این رمز عبور دسترسی داشته باشند. اشتراکگذاری رمزهای عبور مشکلی امنیتی است و این مسئله برای رمز عبور کاربر روت (Root) لینوکس بیشتر اهمیت دارد. بهعنوانمثال، یکی از کاربرانی که به رمز عبور روت دسترسی دارد، میتواند این رمز را در اختیار فرد دیگری نیز قرار دهد. اگر قصد دارید رمز عبور روت (Root) رایانهٔ لینوکسی خود را تغییر دهید، باید این رمز عبور جدید را برای همهٔ افرادی ارسال کنید که به دانستنش نیاز دارند.
استفاده از فهرست Sudoers برای محدودکردن افرادی که میتوانند از دستور Sudo استفاده کنند، ایمنی بسیار بیشتری دارد؛ زیرا بدین ترتیب اجازه میدهیم هر فردی که به دسترسی روت نیاز دارد، از این رمز عبور برای احراز هویت استفاده کند.
استفاده از دستور Sudo
فایل “/etc/shadow” شامل نام کاربری حسابهای مختلف روی رایانهٔ لینوکسی شما است. همچنین، این فایل حاوی اطلاعات دیگری مثل رمز عبور رمزنگاری شدهای هریک از حسابهای کاربری و آخرین زمان تغییر رمز عبور و زمان منقضی شدن رمز عبور است.
ازآنجاکه اطلاعات بسیار حساسی روی این فایل ذخیره شده است، امکان دسترسی به آن فقط ازطریق کاربر روت امکانپذیر است. اگر بخواهیم از دستور wc برای خواندن خطوط و کلمات و کاراکترهای موجود در فایل استفاده کنیم، اجازه نخواهیم گرفت.
اگر در فهرست Suduers باشیم و از همان دستور Sudo در ابتدای خط استفاده کنیم، رمز عبور از درخواست و دستور برای ما اجرا خواهد شد. اگر شما تنها کاربر رایانهٔ لینوکسی خود هستید، پس از نصب سیستم به طور خودکار به فهرست Sudoers اضافه خواهید شد. ازآنجاکه این دستور را بهصورت روت اجرا میکنیم، دستور wc اجرا خواهد شد و در این شرایط هیچکس کاربر روت انکار نخواهد کرد.
دستور Sudo به معنای Superuser do است. این فرمان به شما اجازه میدهد دستور مدنظرتان را مثل هر کاربر دیگری اجرا کنید؛ بنابراین، نام آن به Substitute user do تغییر داده شد. این دستور بهگونهای اجرا میشود که گویی کاربر دیگری آن اجرا کرده است. اگر نام کاربری را مشخص نکردهاید، دستور Sudo به طور پیشفرض از Root استفاده خواهد کرد. اگر قصد دارید از کاربر دیگری برای اجرای دستور مدنظر بهره ببرید، از گزینه -u (user) استفاده کنید.
در تصویر زیر، دستور مدنظر بهعنوان کاربر دیگر اجرا خواهد شد.
اجرای دستور بهعنوان روت (Root) بدون استفاده از Su
مشکل Sudo این است که باید در شروع هر دستور از عبارت Sudo استفاده کنید. این امر در مواقعی که قصد دارید فقط یک یا دو دستور تایپ کنید، مشکل بزرگی محسوب نمیشود؛ اما وقتی به اجرای تعداد زیادی از دستورها نیاز داشته باشید، شاید تایپ Sudo برای هرکدام از این دستورها خستهکننده باشد. ناگفته نماند این ویژگی بهعنوان ابزار ایمنی مفیدی برای قابلیتهای کاربر روت عمل میکند و شما باید هر بار آگاهانه از این ایمنی گذر کنید.
روشی برای ورود مؤثر بهعنوان کاربر روت وجود دارد که به استفاده از Su و رمز عبور برای کاربر روت نیازی نخواهید داشت. به این نکتهٔ بسیار مهم توجه کنید که هنگام استفاده از این روش، باید بسیار مراقب باشید و بادقت عمل کنید؛ زیرا هر دستوری که صادر کنید، بدون هیچ محدودیتی اجرا خواهد شد؛ حتی اگر دستورهای مدنظر شما برای سیستمعامل مخرب باشد. با استفاده از Sudo برای اجرای پوستهٔ Bash، پوستهٔ جدید با Root بهعنوان کاربر باز خواهد شد.
توجه کنید که خط فرمان در این حالت تغییر خواهد کرد و کاراکتر نهایی دستور اکنون بهجای $ به هش # تبدیل شده است. نحوهٔ نمایش بدنهٔ خط فرمان در توزیعهای مختلف لینوکس متفاوت است. بهعنوانمثال، در اوبونتو به ما اطلاع داده میشود که کاربر به دسترسی روت دسترسی دارد و نام رایانه و پوشهٔ کاری فعلی نیز نمایش داده میشود. در این توزیع لینوکسی، رنگ اعلان نیز تغییر خواهد کرد. ازآنجاکه ما کاربر روت هستیم، میتوانیم دستورهایی را اجرا کنیم که معمولاً به استفاده از Sudo نیاز دارند
برای خروج از پوستهٔ کاربر اصلی، کلیدهای Ctrl+D را فشار دهید و Exit را تایپ کنید و سپس روی کلید Enter ضربه بزنید.
اگر نام کاربری شما در فهرست Sudoers قرار دارد، قدرت کامل ایجاد هر تغییر و اجرای هر دستوری را روی سیستمعامل لینوکسی خود خواهید داشت. فقط به یاد بسپارید که استفاده از سیستم بهعنوان کاربر روت، بهدقت بسیار زیاد نیاز دارد؛ زیرا همانطور که اشاره کردیم، هر دستوری که این کاربر از سیستمعامل درخواست کند، بدون محدودیت اجرا خواهد شد؛ حتی اگر این دستور برای خودِ سیستمعامل خطرناک یا زیانآور باشد.
بدین ترتیب، پیشنهاد ما این است سعی کنید تا حد ممکن از حساب کاربری معمولی خود استفاده کنید و فقط زمانی که واقعاً به قابلیتهای کاربر روت نیاز داشتید، از این دسترسی بهره ببرید.
منبع: زوم ایت