در لینوکس ما دستوری با عنوان sudo داریم که زمانی کاربرد دارد که ما خواسته باشیم یک دستور سطح بالا را با حسابی غیر از حساب ریشه (root) اجرا کنیم. در قسمتهای قبلی ما طریقۀ ساخت یک کاربر دیگر و اعطاء دسترسیهای لازم به آن را یاد گرفتیم. اما اگر خواسته باشیم مثلاً دستور ویرایش پروندۀ پیکربندیِ SSH را اجرا کنیم، حتماً باید از sudo استفاده کنیم. در غیر این صورت سرور به ما خطایی را بر میگرداند که نشان میدهد کاربر فعلی قادر به اجرای چنین دستوری نیست.
خود عبارت sudo از superuser do به معنای انجام دادن یک کار توسط کاربر همه کاره است. این دستور امکان اجرای برخی یا همۀ دستورات لینوکس را به کاربران یا گروه خاصی از کاربران میدهد. در حالی که تمامی این دستورات گزارشگیری میشوند. یعنی در فایلهای گزارش ذخیره میشوند که مدیر سرور بتواند آنها را رصد کند. sudo به ازای هر دستور کار میکند. به این معنی که اگر در ابتدای هر دستور لینوکس sudo را وارد کنید، فقط همان یک دستور با دسترسیهای مدیر کل سرور اجرا خواهد شد.
حالا سرور آزمایشی خود را بالا بیاورید و با حساب کاربری غیر از root که ساختید وارد سرور شوید. چند تا از دستوراتی که نیاز به جوازهای دسترسیِ سطح بالا دارند را بزنید. از این نوع دستورات میتوان به ویرایش فایلهای سیستمی و رفتن به مسیر /root اشاره کرد. در تصویر زیر خطایی که با زدن این دستورات بر میگردد را میتوانید ببینید: Permission denied
اما اگر دستور visudo را به همراه sudo بزنید، میبینید که بدون برگرداندن خطا این کار برای شما انجام خواهد شد. در برخی از مواقع زمانی که از sudo استفاده میکنید، سیستم از شما رمز عبور خودتان را میخواهد که باید وارد کنید تا دستور مورد نظر اجرا گردد. اما اگر نخواسته باشید با هر بار استفاده از دستور sudo رمز عبوری را وارد کنید، باید تنظیماتی را در فایل sudoers انجام دهید که این کار به روشهای مختلفی قابل انجام است.
روش اول
دستور زیر را برای باز کردن پروندۀ اعطاء دسترسیها باز کنید:
sudo visudo
خط زیر را به انتهای این پرونده اضافه کنید. دقت کنید که با زدن دستور بالا، پرونده در ویرایشگر vi باز خواهد شد. پس از دستورات خاص آن باید استفاده کنید. اگر یادتان باشد، در زمان ساخت یک کاربر جدید در سرور لینوکس ما این پرونده را باز کردیم و نوعی از کد زیر را درون آن نوشتیم. میتوانید همان را ویرایش کنید که مربوط به کاربر user است. دقت داشته باشید که به جای user نام کاربری حسابِ مورد نظر را وارد کنید.
user ALL=(ALL) NOPASSWD: ALL
پرونده را ذخیره کنید و از آن خارج شوید: [Esc] [:][w][q]
روش دوم
روش بعدی این است که خودتان تعیین کنید که پروندۀ sudoers در کدام ویرایشگر (مثلاً nano) باز شود. پس دستور زیر را بزنید.
sudo nano /etc/sudoers
حالا دوباره به روش بالا آن را ویرایش کنید و خط زیر را اضافه یا ویرایش نمایید.
user ALL=(ALL) NOPASSWD: ALL
روش سوم
با حساب ریشه وارد سرور شوید و دستور زیر را بزنید. بدون اینکه خواسته باشید پروندهای چیزی باز کنید. باز هم فراموش نکنید که آن را باب نیاز خودتان ویرایش کنید.
echo 'user ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
دراصل این نوعی از اضافه کردن یک خط متن درون یک سند متنی در لینوکس است. به اجزاء آن نگاه کنید. اول متنی را با دستور echo چاپ میکند و خروجی آن را به پروندۀ sudoers که در پوشۀ etc قرار دادن اضافه میکند. در آموزشهای بعدی با این نوع ویرایش و افزودن متن به یک پرونده در لینوکس بیشتر آشنا خواهید شد.
دستور su
اما یک دستور دیگری هم داریم که تو مایههای sudo است و آن su است. اگر با حسابی به غیر از ریشه وارد سرور شده باشید، زمانی که این دستور را میزنید، میتوانید به طور کامل وارد حساب root شوید. البته پس از اینکه رمز عبور کاربر ریشه را وارد کردید. su از سرنام substitute user به معنای کابر جایگزین و برای جابهجا شدن در بین حسابهای کاربری به کار میرود.
دقت کنید حتی اگر ورود کاربر root به سرور با SSH را بسته باشید، با استفاده از دستور su زمانی که وارد یک حساب دیگر هستید، میتوانید به حساب root وارد شوید. در برخی از مواقع شاید خواسته باشید به طور کامل وارد حساب ریشه شوید که میتوانید از این دستور به تنهایی استفاده نمایید. اگر هم خواسته باشید وارد یک حساب دیگر به غیر از root شوید، باید در جلوی دستور su نام کاربری حساب مورد نظر را وارد کنید.
su jamal
حالا دیگر باید بدانید چرا در ابتدای دستورات لینوکس در خیلی از جاها sudo وارد شده است و گام دیگری برای آشنایی بیشتر با دستورات لینوکس برداشتیم که آن آشنایی با دستور sudo در لینوکس بود. در آموزش بعدی راجع به سرویسها یا همان نرم افزارهای لینوکس صبحت خواهیم کرد.
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#۱) Respect the privacy of others.
#۲) Think before you type.
#۳) With great power comes great responsibility.
مشکل من اینه هرچی رمز میزنم تایپ نمیشه
[sudo] password for
تمامیِ رمزهای عبور توی لینوکس زمانی که دارید رمز رو وارید می کنید، دیده نمیشن!!
شما رمزتون رو وارد کنید. بدون اینکه در نظر بگیرید که تایپ میشه یا خیر.