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

permission-denied-error
دسته بندی : آموزش لینوکس

حل خطای Permission Denied در لینوکس با ۳ روش اصلی

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

اگر موقع تعامل با فایل یا دایرکتوری موردنظر خود با خطای Permission Denied در لینوکس مواجه شدید، باید بدانید که دستور موردنظر شما نیازمند یک سری مجوزها است که کاربر موردنظر از آنها برخودار نیست و لینوکس هم با نمایش این خطا مانع اجرای آن می شود.

همه فایل های موجود در لینوکس دارای مجوزهای کاربری/گروهی هستند که سطح دسترسی کاربر برای اجرای عملیات موردنظر را مشخص می کنند. در صورت اجرای یک دستور ناسازگار با این مجوزها با ارور Permission Denied مواجه می شوید که با راهکارهایی مثل استفاده از امتیازات sudo، تغییر مجوز فایل و تغییر مالکیت فایل قابل حل هستند.

اگر می خواهید صاحب یک سرور لینوکس با عملکرد عالی شوید و محدودیتی در اجرای دستورات و تسک های موردنظر نداشته باشید، می توانید به صفحه خرید سرور مجازی لینوکس (Buy Linux VPS) مراجعه کنید و پلن ایده آل خود را سفارش دهید.

خطای Permission Denied در لینوکس چیست؟

تمام فایل های موجود در سیستم لینوکس دارای مجوزهای خاص خود هستند که همین مجوزها مانع یک سری تعاملات کاربری می شوند. به عنوان مثال، اگر مجوز نوشتن یک فایل را نداشته باشید، نمی توانید با استفاده از دستور cat آن را ویرایش کنید. 

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

حالا اگر با اجرای یک دستور یا اسکریپت، سعی کنید این مجوزها را دور بزنید و دستورات موردنظر خود را به طور غیرمجاز اجرا کنید، با خطای Permission Denied در لینوکس مواجه خواهید شد.

اگر می خواهید مجوز مربوط هر کدام از فایل های موجود در مسیر موردنظر را ببینید، می توانید از دستور ls کمک بگیرید.

ls -la

ستون اول این خروجی نشاندهنده مجوز فایل ها و دایرکتوری های موجود در این مسیر هستند. مجوزها از ۳ قسمت تشکیل شده اند. مجوزهای فایل در خروجی دستور ls

از سمت چپ به راست:

۳ حرف اول نشاندهنده مجوز r (خواندن)، w (نوشتن) و x (اجرا) برای کاربر مالک فایل است.

۳ حرف دوم نشاندهنده مجوز r (خواندن)، w (نوشتن) و x (اجرا) برای گروهی است که فایل یا فولدر به آن تعلق دارد.

۳ حرف سوم نشاندهنده مجوز r (خواندن)، w (نوشتن) و x (اجرا) برای کاربران دیگر به غیر از مالک و گروه است.

با بررسی این مجوزها می توانید متوجه شوید که مجوز لازم برای اجرای دستور یا اسکریپت موردنظر را دارید یا نه که البته خطای Permission Denied موقع اجرای دستور نشان واضحی از این موضوع است.

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

پیش نیازهای حل ارور Permission Denied 

قبل از اجرای راه حل های زیر، این پیش نیازهای پایه را در نظر بگیرید:

  • سیستم یا سرور با سیستم عامل لینوکس
  • یک کاربر غیرروت با امتیازات sudo

روش های رفع خطای Permission Denied در لینوکس 

  • از دستور sudo استفاده کنید.
  • مجوز فایل یا دایرکتوری را تغییر دهید.
  • مالکیت فایل را تغییر دهید.

۱. استفاده از دستور sudo

گاهی اوقات مواجه شدن با ارور Permission Denied به خاطر از دست دادن امتیازاتی است که می توان با اضافه کردن sudo به ابتدای دستور آن را جبران کرد. 

به این صورت که اگر کاربر معمولی هستید و امتیازات شما در فایل sudoers تعریف شده است، برای دسترسی به امتیازات خود حتماً باید دستور sudo را هم به ابتدای دستور موردنظر اضافه کنید و سپس رمز حساب خود را وارد کنید تا دستور با موفقیت اجرا شود.

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

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

apt-get install neofetch

خطای permission denied در لینوکس موقع اجرای دستور نصبی

برای حل این خطا کافیست دستور sudo را به ابتدای این دستور نصبی اضافه کنید:

sudo apt-get install neofetch

اجرای موفقیت آمیز دستور نصبی موردنظر

۲. تغییر مجوز فایل یا فولدر

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

کلیک کنید  به دنبال یک کسب و کار موفق هستید؟ روی لینوکس تمرکز کنید.

ابتدا با استفاده از دستور ls -l از مجوز فایل موردنظر مطلع شوید. بعد نسبت به اخذ مجوزی که برای اجرای دستور نیاز است، اقدام کنید.

اگر می خواهید فایل متنی موجود در مسیر فعلی ترمینال را بخوانید ولی از مجوز r برخوردار نیستید، می توانید دستور زیر را اجرا کنید:

sudo chmod +r file.txt

اگر تمایل به اجرای فایل shell موردنظر دارید ولی از مجوز اجرا بهره مند نیستید، دستور زیر را اجرا کنید:

sudo chmod +x example.sh

اگر مایل به ویرایش فایل موردنظر هستید ولی موقع اجرای دستور نوشتن با خطای رد مجوز مواجه شدید، دستور زیر را اجرا کنید:

sudo chmod +w file.txt

همین کار برای تغییر مجوز دایرکتوری ها قابل انجام است. کافیست به جای فایل متنی، مسیر دایرکتوری موردنظر را لحاظ کنید.

البته، تکنیک دیگری هم برای تغییر مجوز فایل یا فولدر موردنظر وجود دارد. به این صورت که مجوز کاربر مالک، گروه و کاربران دیگر را به صورت یکجا تغییر دهید.

اگر می خواهید برای این کار از حالت نمادین استفاده کنید، از دستور زیر استفاده کنید:

sudo chmod u=rwx,g=r,o=r file

در صورت تمایل برای استفاده از حالت عددی می توانید از دستور زیر استفاده کنید:

chmod 744 file

در حالت کلی، این شما هستید که باید در مورد سطح دسترسی انواع کاربران تصمیم بگیرید و بعد متناسب با نیاز خود، مجوز دسترسی را به هر کدام از آنها اختصاص دهید.

۳. تغییر مالکیت فایل در لینوکس

در صورت نیاز می توانید به جای تغییر مجوز فایل، مالکیت فایل را در اختیار بگیرید و از مجوزهای مربوط به مالک فایل بهره مند شوید. برای این کار کافیست از دستور chown استفاده کنید.

به عنوان مثال، اگر می خواهید مالکیت فایل را کاربر Asam_user تغییر دهید، دستور زیر را اجرا کنید:

sudo chown Asam_user file.txt

حالا برای بررسی مالکیت فایل می توانید از دستور ls که جزو پرکاربردترین دستورات لینوکس است، کمک بگیرید.

نکات مهم برای خطایابی و حل سریع تر خطای Permission Denied در لینوکس

تشخیص علت اصلی ارور Permission Denied در لینوکس برای رفع آن ضروری است. با نکاتی که در این بخش بررسی می کنیم می توانید پروسه عیب یابی را به خوبی پشت سر بگذارید.

پیام های خطا را بررسی کنید: به پیام های خطایی که موقع اجرای اسکریپت یا دستور موردنظر اجرا می کنید، دقت کنید. این پیام ها اغلب حاوی اطلاعات ارزشمندی هستند که با بررسی آنها می توانید مجوزها و ماهیت فایل/دایرکتوری ها را کشف کنید. 

فایل های لاگ را بررسی کنید: گزارشی های سیستمی که در فایل هایی مثل var/log/syslog/ یا var/log/auth.log/ وجود دارند را بررسی کنید تا لاگ های مرتبط با مشکل مجوز را شناسایی کنید و از آنها برای رفع خطای Permission Denied در لینوکس استفاده کنید. دستور journalctl در لینوکس هم برای بررسی لاگ ها کاربردی است.

مجوز فایل ها را بررسی کنید: با استفاده از دستور ls -l می توانید مجوز فایل ها یا دایرکتوری های موجود در مسیر موردنظر را بررسی کنید و اطمینان حاصل کنید که تمام مجوزها به درستی تنظیم شده اند.

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

فضای دیسک را بررسی کنید: گاهی اوقات کمبود فضای دیسک هم می تواند دلیلی برای بروز خطای رد مجوز باشد. پس با استفاده از دستور df میتوانید فضای دیسک آزاد سیستم را بررسی کنید و از این قضیه مطمئن شوید.

امکان دسترسی ریموت را بررسی کنید: اگر می خواهید از طریق شبکه و به صورت ریموت به فایل ها یا دایرکتوری های موردنظر دسترسی پیدا کنید، مطمئن شوید که تنظیمات شبکه به درستی انجام شده اند و مجوز دسترسی ریموت را دارید.

سخن آخر

خطای Permission Denied در لینوکس حاصل عدم دسترسی به مجوزهایی است که برای اجرای دستور یا اسکریپت موردنظر ضروری هستند. برای حل این مشکل می توانید از روش های استفاده از امتیازات sudo، تغییر مجوز فایل و تغییر مالکیت فایل استفاده کنید.

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

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

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

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

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