برخی از کاربران حرفهایتر سرور لینوکس نیاز دارند تا به تمام ویژگیهای آن دسترسی داشته باشند. از طرفی نمیتوان چندین مدیر برای یک سیستم عامل تعرفی کرد و امنیت لینوکس را به خطر انداخت.
اینجاست که فرمان sudo از سری دستورات لینوکس به کار میآید. این قابلیت، اختیارات حساب کاربری شما را بهطور موقت در حد کاربر روت بالا میبرد. با اختیارات تازه، هرکاری که بخواهید در سیستمعامل میتوانید انجام دهید.
Sudo مخفف عبارت Super User Do است که برای استفاده از فایلها و عملیاتهای محدود شده استفاده میشود. لینوکس دسترسی به بخشهای خاصی از سیستم را بهطور پیشفرض محدود میکند تا فایلهای حساس در معرض خطر نیفتند.
هنگام استفاده از دستور sudo برخی از امتیازات و دسترسیهای شما بهطور موقت در حد کاربر روت بالا میرود تا بتوانید کارهای حساسی را انجام دهید. در ادامه با هم به یادگیری نحوه استفاده از دستور sudo میپردازیم.
پیشنیازهای استفاده از دستور sudo
- سیستمی که لینوکس را اجرا کند
- دسترسی به خط دستور / پنجره ترمینال (به آدرس Activities > Search > Terminal)
- حساب کاربری با امتیازات sudo یا root
چگونه از دستور sudo استفاده کنیم؟
Sudo طراحی شد تا راهی برای اعطای موقت حقوقِ مخصوصِ کاربر مدیر به دیگر کاربران باشد. برای استفاده از آن، لازم است دستور sudo را قبل از دستور محدود شده مدنظر بنویسید. سیستم از شما رمز عبور میخواهد. وقتی رمز عبور را وارد کردید، دستور فعال میشود.
سینتکس و شیوه نوشتن دستور sudo
سینتکس زیر را برای استفاده از sudo بهکار ببرید:
1 | sudo [command] |
زمانی که استفاده از دستور sudo را شروع میکنید، در لاگهای سیستمی یک مُهر زمانی میخورد. کاربر در مدت زمانی کوتاه (بهطور پیشفرض 15 دقیقه) میتواند کارهایی را انجام دهد که نیاز به امتیازات کاربر سطح بالا دارند. اگر کاربری بدون دسترسی به sudo از آن استفاده کند، یک اتفاق امنیتی ثبت میشود.
عملیاتهای مربوط به دستور sudo
دستور sudo را میتوان با عملیاتهای مختلفی استفاده کرد:
- ● -h – راهنما؛ سینتکس و عملیاتهای دستوری را نمایش میدهد
- ● -V – نسخه؛ نسخه حال حاضر برنامه sudo را نمایش میدهد
- ● -v – معتبرسازی؛ محدودیت زمانی sudo را بدون اجرای هیچ دستوری تمدید میکند
- ● -l – فهرست؛ امتیازات کاربر را نمایش میدهد یا دستوری خاص را بررسی میکند
- ● -k – تمامکردن؛ به امتیازات حالحاضر sudo را پایان میدهد
عملیاتهای اضافه را میتوانید با اجرای دستور –h ببینید:
توجه داشته باشید که لاگینماندن در نقش مدیریت سیستم، امنیت را به خطر میاندازد. ادمینها در گذشته از su (Substitute User) برای تغییر موقت نقش خود به مدیر استفاده میکردند. با این حال، دستور su به حساب کاربری و رمز عبور دومی نیاز دارد که همیشه امکانپذیر نیست.
اعطای امتیاز sudo به کاربران در لینوکس
کاربر در توزیعهای مدرنتر لینوکس، باید در گروه کاربران sudo، sudoers و wheel باشد تا بتواند از دستور sudo استفاده کند. سیستم تک کاربره بهطور پیشفرض امتیازات sudo را به کاربرش میدهد. سیستم یا سرور چند کاربره ممکن است برخی از حسابهای کاربری را از امتیازات sudo محروم سازد.
توصیه میکنیم تنها امتیازاتی را به کاربر بدهید که برای انجام وظایف روزانه خود به آن نیاز دارند. در بخشهای بعدی، چگونگی اضافهکردن کاربر را به گروه sudoers شرح میدهیم.
اعطای مجوز sudo در Redhat و CentOS
گروه wheel، کاربران sudo را در ردهت و CentOS کنترل میکند. با استفاده از دستور زیر، میتوانید کاربر را به گروه wheel اضافه کنید:
1 | Usermod –aG wheel [username] |
به جای [username]، نام کاربری واقعی مدنظر را بنویسید. احتملا لازم است برای انجام این کار با اکانت مدیر وارد شوید یا از دستور su استفاده کنید.
اعطای مجوز sudo دبیان و اوبونتو
گروه sudo، کاربران sudo را در دبیان و اوبونتو کنترل میکند. با استفاده از دستور زیر، میتوانید کاربر را به گروه sudo اضافه کنید:
1 | Usermod –aG sudo [username] |
به جای [username]، نام کاربری واقعی مدنظر را بنویسید. احتمالا لازم است برای انجام این کار با اکانت مدیر وارد شوید یا از دستور su استفاده کنید.
استفاده از visudo و گروه sudoers برای اعطای مجوز sudo
کاربران در برخی از نسخههای جدیدتر لینوکس، برای گرفتن امتیازات به فایل sudoers اضافه میشوند.
دستور visudo وظیفه انجام این کار را برعهده دارد.
- از دستور visudo برای ویرایش فایل پیکربندی استفاده کنید:
sudo visudo - مسیر /etc/sudoers در ادامه باز میشود. خط دستوری زیر را برای اضافهکردن کاربر و اعطای تمام امتیازات sudo بنویسید:
1 | [username] All=(All:All) All |
- فایل را ذخیره کنید و خارج شوید.
خط زیر، امتیازات اعطاشده بهصورت تفکیکشده است:
1 | [username] [any-hostname]=([run-as-username]:[run-as-groupname]) [commands-allowed] |
توجه داشته باشید که اضافهکردن کاربر به گروه sudo یا wheel برای اعطای امتیازات sudo سادهتر است. برای ویرایش فایل پیکربندی فقط از visudo استفاده کنید. برنامه visudo از قطعی، باگ و پیکربندی اشتباه جلوگیری میکند تا سیستمتان دچار مشکل نشود.
مثالهایی از sudo در لینوکس
sudo یکی از پرکاربردترین دستورات لینوکس است. در ادامه نمونه برخی از کاربردهایش را میبینید:
استفاده پایه از sudo
- پنجره ترمینال را باز کرده و دستور زیر را امتحان کنید:
1 | Apt-get update |
- در این مرحله باید پیام خطا نمایش داده شود. این خطا میگوید که شما مجوزهای لازم را برای اجرای این دستور ندارید.
- همین دستور را با sudo امتحان کنید:
1 | Sudo apt-get update |
- رمز عبور خواسته شده را بزنید. سیستم، دستور شما را اجرا و مخزنها را بهروزرسانی میکند.
اجرای دستور به جای کاربر متفاوت
- برای اجرای دستورات به عنوان کاربری متفاوت، دستور زیر را در ترمینال وارد کنید:
Whoami - سیستم، نام کاربری شما را نشان میدهد. بعد، دستور زیر را وارد کنید:
1 | Sudo –u [different-username] whoami |
- رمز عبور [different-username] را بزنید تا دستور whoami، اجرا شده و کاربر متفاوت را نمایش دهد:
تعویض به کاربر روت
فرمان زیر، خط فرمان شما را به پوسته BASH مخصوص کاربر روت تغییر میدهد.
1 | Sudo bash |
خط دستور شما باید به شکل زیر تغییر پیدا کرده باشد:
1 | root@hostname:/home/[username] |
مقدار hostname نام شبکه این سیستم و username هم کاربری است که هماکنون داخل سیستم لاگین کرده.
اجرای دستورهای قبلی با sudo
خط دستور لینوکس، تاریخچه دستورهای اجراشده قبلی را نگهداری میکند. با فشردن دکمه فلش بالا میتوانید به آنها دسترسی داشته باشید. از دستور زیر برای تکرار دستور قبلی با امتیازات ارتقایافته استفاده کنید:
1 | Sudo !! |
برای دستورات قدیمیتر نیز باید عدد آن را در خط فرمان جای دهید:
1 | Sudo !6 |
در این مثال، ششمین ورودی شما در تاریخچه sudo تکرار میشود.
اجرای چند دستور در یک خط با دستور sudo
چندین دستور را کنار هم به صف کرده و با نقطه ویرگول جدایشان کنید:
1 | Sudo ls; whmai; hostname |
اضافهکردن یک رشته متن به فایل موجود
برای آنکه بتوانید کارهایی مثل اضافهکردن نام مخزن نرمافزار به فایل منبع را بدون بازکردن ویرایشگر فایل انجام دهید، میتوانید از قابلیت اضافهکردن متن رشتهای به فایل موجود استفاده کنید. سینتکس زیر را با دستور echo، sudo و tee بهکار ببرید.
1 | echo 'string-of-text' | sudo tee –a [path-to-file] |
کد زیر مثالی از قابلیت اضافهکردن متن رشتهای به فایل است:
1 | echo "deb http://nginx.org/pachages/debian 'lsb_release -cs' nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list |
در این مثال، مخازن نرمافزار Nginx به سیستم شما اضافه شده است.
جمع بندی
sudo یکی از معروفترین دستورات لینوکس است که هم امنیت سیستم را حفظ میکند و هم کار راهانداز است. در این مقاله به چیستی فرمان sudo، کاربردهای آن، طرز نوشتن دستور sudo و استفاده از آن پرداختیم.
سوالات متداول
sudo چیست؟
sudo (Superuser Do) یکی از فواید سیستمهای لینوکس و یونیکس به شمار میرود. Sudo به برخی از کاربران امکان میدهد تا دستورهایی خاص در بالاترین سطح کاربری (کاربر روت) اجرا کنند. این قابلیت همچنین تمام دستورها و ورودیها را لاگ میکند.
استفاده دستور sudo چیست؟
با دستور sudo میتوانید برنامهها را با امتیازات امنیتی کاربری دیگر (بهطور پیشفرض Superuser) اجرا کنید. sudo از شما رمز عبور شخصیتان را میخواهد و با بررسی فایل sudoers، درخواست شما مبنی بر اجرای دستور را تایید میکند. مدیر سیستم، فایل sudoers را پیکربندی میکند.
چگونه از sudo در لینوکس استفاده کنید؟
در خط دستوری که کدهای خود را مینویسید، قبل از تایپ دستور مدنظر، عبارت sudo را وارد کنید. سپس، sudo از شما رمز عبور میخواهد. رمز عبور شما تا مدت زمان محدودی (بهطور پیشفرض 15 دقیقه) در حافظه sudo باقی میماند.
چگونه به روت متصل شویم؟
برای تعویض به کاربر روت روی سرور لینوکس، مراحل زیر را طی کنید:
– دسترسی روت / ادمین را برای سرور خودتان فعال کنید.
– از طریق SSH به سرورتان متصل شوید و دستور sudo –su را اجرا کنید.
– رمز عبور سرورتان را وارد کنید، حالا دسترسی روت دارید.