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