شما برای مطالعه این مقاله فقط 4 دقیقه وقت نیاز دارید

sudo-command-not-found
دسته بندی : آموزش لینوکس

راه حل سریع رفع خطای sudo: command not found در لینوکس

5/5 - (1 امتیاز)

با دستور sudo می توانید دستور موردنظر خود را به عنوان یکی از کاربران موجود در فایل sudoers اجرا کنید و به صورت موقت از امتیازات آنها بهره ببرید ولی اگر سیستم یا سرور لینوکس شما مجهز به پکیج sudo نباشد، مسیر دایرکتوری آن قابل شناسایی نباشد یا کاربر موردنظر شما دارای امتیازات sudo نباشد، به احتمال زیاد موقع اجرای دستور sudo با خطای sudo: command not found مواجه می شوید.

با راهکارهایی مثل نصب پکیج sudo در سیستم، اضافه کردن دایرکتوری sudo به PATH یا اضافه کردن کاربر موردنظر به فایل sudoers می توانید خطای command not found را برطرف کرده و به کار خود ادامه دهید.

روش ۱. پکیج sudo را نصب کنید.

پکیج sudo به طور پیش فرض در اکثر سیستم های لینوکس نصب است که برای بررسی این موضوع می توانید از دستور زیر کمک بگیرید:

sudo -v

اگر sudo در سیستم شما نصب باشد، این دستور از شما پسورد می خواهد ولی در غیر این صورت، با پیام خطا روبرو می شوید که با دیدن آن باید بلافاصله نسبت به نصب پکیج sudo اقدام کنید چون بدون آن عملاً نمی توانید از دستورات sudo استفاده کنید.

برای نصب پکیج sudo باید طبق مراحل زیر جلو بروید:

  • ترمینال لینوکس را باز کنید.
  • با استفاده از دستور زیر به عنوان کاربر روت وارد ترمینال شوید:

* برای نصب sudo به امتیازات کاربر روت نیاز دارید.

su -
  • پسورد کاربر روت را وارد کنید تا این دسترسی کامل شود.
  • دستور نصب sudo در توزیع لینوکس خود را اجرا کنید:

Debian/Ubuntu

apt update -y

apt install sudo

CentOS/Fedora/Rocky Linux/Alma Linux

yum install sudo

یا

dnf install sudo

Arch Linux

pacman -Sy sudo
  • کاربر موردنظر را به گروه sudo اضافه کنید.

بعد از نصب موفقیت آمیز sudo، نوبت به اضافه کردن کاربر موردنظر به گروه sudo می رسد.

برای این کار می توانید از دستور زیر استفاده کنید:

usermod -aG sudo asam_user

محض احتیاط می توانید مجوزهای مربوط به کاربر موردنظر را از طریق فایل sudoers بررسی کنید:

nano /etc/sudoers

بعد از اینکه متوجه شدید عملیات نصب sudo درست پیش رفته است و کاربر موردنظر شما هم یک کاربر sudo است، می توانید از آن برای اجرای دستورات موردنظر خود استفاده کنید.

روش ۲. دایرکتوری sudo را به متغیر PATH اضافه کنید.

PATH یک متغیر محیطی است که لیست مسیرهای فایل های اجرایی را نگهداری می کند. حالا اگر مسیر دایرکتوری sudo در فایل مربوط به این متغیر قرار نداشته باشد، موقع اجرای دستور sudo با خطای sudo: command not found مواجه خواهید شد.

برای بررسی path می توانید از دستور echo کمک بگیرید:

echo $PATH

با دیدن خطوط زیر در خروجی می توانید مطمئن شوید که دایرکتوری sudo در این فایل تعریف شده است:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

اضافه کردن مسیر sudo به path برای حل کردن خطای sudo: command not found در لینوکس

اگر این خط را پیدا نکردید، باید با استفاده از دستور زیر دایرکتوری sudo را فایل path اضافه کنید:

export PATH=$PATH:/usr/bin

بعد از اجرای این دستور، متغیر PATH می تواند دایرکتوری حاوی sudo را پیدا کند و به این ترتیب مشکل not found بودن sudo هم حل خواهد شد.

کلیک کنید  ایجاد امنیت SSH از طریق Port Knocking در اوبونتو و دبیان

روش ۳. کاربر موردنظر را به فایل sudoers اضافه کنید.

شاید دلیل اینکه موقع اجرای دستور sudo با خطای not found روبرو می شوید، قرار نداشتن کاربر موردنظر در فایل sudoers است.

اگر کاربر در این فایل تعریف نداشته باشد، عملاً از امتیازات sudo برخوردار نیست و شما هم موقع اجرای دستور sudo به عنوان کاربر موردنظر، از امتیازات موردنیاز محروم خواهید بود و این باعث بروز ارور sudo: command not found می شود.

برای اطمینان از sudo بودن کاربر موردنظر دو راه دارید:

۱. با دستور زیر، لیست گروه های کاربر موردنظر را بررسی کنید:

groups asam_user

۲. فایل sudoers را بررسی کنید:

nano /etc/sudoers

خط مربوط به کاربر موردنظر را پیدا کنید و لیست مجوزهای آن را بررسی کنید.

اگر بعد از امتحان کردن این دو راه، به این اطمینان رسیدید که کاربر موردنظر شما اصلاً جزو کاربران sudo نیست، می توانید از دستور زیر برای اضافه کردن آن به لیست کاربران sudo استفاده کنید:

usermod -aG sudo your_username

یا اینکه اگر از توزیع های لینوکسی استفاده می کنید که این دستور برای اضافه کردن کاربر به لیست sudo کارساز نیست می توانید مستقیماً از طریق فایل sudoers اقدام کنید:

با دستور زیر فایل sudoers را با امتیازات روت باز کنید:

visudo

* همیشه سعی کنید برای ویرایش فایل sudoers از ویرایشگر visudo استفاده کنید چون این ویرایشگر به طور خودکار خطاهای فایل را بررسی می کند و از مشکلات احتمالی جلوگیری می کند.

کاربر موردنظر را به صورت زیر به انتهای فایل اضافه کنید:

username ALL=(ALL:ALL) ALL

این خط تمام امتیازات را به کاربر می دهد ولی می توانید مجوز sudo کاربر موردنظر را به شکل دلخواه تنظیم کنید.

بعد از اینکه کارتان با فایل sudoers تمام شد، می توانید فایل را ذخیره کرده و آن را ببندید.

اکنون می توانید بررسی کنید که با کاربر موردنظر خود می توانید دستور sudo که می خواهید را اجرا کنید یا نه.

اگر با امتحان کردن این راهکارها باز هم به نتیجه نرسیدید که احتمال آن خیلی پایین است، می توانید از ابزار جایگزین آن یعنی su برای اجرای دستور موردنظر به عنوان کاربر روت استفاده کنید.

بررسی تفاوت های دستور su و sudo می توانید شما را به سمت یک تصمیم گیری درست هدایت کند.

سخن آخر

خطای sudo: command not found در لینوکس به دلایلی مثل عدم نصب بودن پکیج sudo، تعریف نشدن مسیر دایرکتوری su در path و sudo نبودن کاربر موردنظر اتفاق بیافتد که با امتحان کردن روش های بالا می توانید در عرض ۳ سوت این خطا را برطرف کنید و به اجرای دستورات موردنظر خود ادامه دهید.

مطالب مشابهی که شاید علاقمند باشید

من زهرا پیرجانی دانشجوی رشته نرم افزار هستم. علاقه ای که به یادگیری مطالب جدید دارم باعث شد که انگیزم برای فعالیت در حوزه تولیدمحتوا بیشتر شود. تمام تلاشم این است که با درک کامل موضوع، محتوایی ساده و کامل تهیه کنم که برای همه علاقمندان مفید و کاربردی باشد. یادگیری مطالب جدید و آموزش اونها به بقیه، بهترین کاری هست که می توانم برای رشد خودم و همچنین کمک به رشد علاقمندان به مباحث مورنظر انجام بدم.

دیدگاه های شما

برای دریافت این مقاله لطفا ایمیلتان را وارد کنید

می توانید مقاله را دانلود کنید یا پرینت بگیرید