Permission Denied یکی از خطاهی رایج در سیستم عامل لینوکس است که کاربران زیادی با آن مواجه شده اند. در این بخش با ما همراه باشید تا روش های رفع ارور Permission Denied در لینوکس را یاد بگیرید.
روش های رفع ارور Permission Denied در لینوکس
حل مشکل Permission denied
رفع ارور Permission denied در کالی لینوکس تنها برای کاربرانی ممکن است که امتیاز Sudo دارند. با استفاده از دستور Chmod در اوبونتو میتوانید دسترسیها را تغییر دهید.
Flags گزینههای اضافی هستند که کاربران میتوانند آنان را تنظیم کنند. Permissions هم نشاندهنده این است که کاربر میتواند فایلها را ویرایش کند یا خیر.
Filename نام فایلی است که مجوز و دسترسی آن تغییر کرده است. در ادامه مثالی درباره امکان خواندن، نوشتن و اجرا کردن یک فایل توسط کاربر میآوریم. این مثال در حالی است که گروه و دیگران تنها میتوانند فایل را بخوانند.
- chmod u=rwx,g=r,o=r file
- R: به معنای مجوز خواندن
- W: مجوز نوشتن
- X: مجوز اجرا کردن
- chmod 744 file
- ۴: مجوز خواندن
- ۲: مجوز نوشتن
- ۱: مجوز اجرا کردن
- ۰: عدم مجوز
- از مجموع این مجوزها برای توضیح دادن هر یک از انواع Author استفاده میشود.
- انواع Flags شامل موارد زیر میشوند:
- –help: باز کردن منوی Help
- –version: نشان دادن شماره نسخه
- -R, –recursive: تغییر مجوزها به صورت بازگشتی
- –reference=file: تنظیم مجوزهای مشابه با فایل
- –preserve-root: به صورت بازگشتی ‘/’ را فعال نکنید.
- –no-preserve-root: به صورت بازگشتی پیش فرض ,’/’ فعال شود.
- -v, –verbose: ارسال پیام برای هر فایل
- -f, –silent, –quiet: از پیامهای ارور خروجی نگیرید
- -c, –changes: گرفتن خروجی Verbose به هنگام ایجاد تغییر
تغییر پرمیشن در لینوکس
یکی از راههای جلوگیری از این ارورها دسترسی روت دادن به یوزر در لینوکس است. در این حالت کاربر میتواند از دستور SUID در لینوکس استفاده کند. البته این راهحل راه آن چنان توصیه نمیکنیم زیرا دسترسیهای غیرضروری به تمامی فایلهای روت سیستم ایجاد میشود.
برای رفع ارور Permission denied در کالی (ارور مربوط به اسکریپتنویسی شل) مثالی میآوریم. فرض کنید پس از اسکریپنویسی شل ارور زیر برایتان نمایان میشود:
- [root@rhel tmp]# ./myshell.sh
- -bash: ./myshell.sh: Permission denied
- [root@rhel tmp]#
- حال برای جلوگیری از چنین مواردی باید مجوز «X» را با استفاده از دستور Chmod به فایل myshell.sh اضافه کنید:
- [root@rhel tmp]# ls -l myshell.sh
- -rw-r–r– 1 root root 27 Jan 25 00:31 myshell.sh
- [root@rhel tmp]# chmod u+x myshell.sh
- [root@rhel tmp]# ls -l myshell.sh
- -rwxr–r– 1 root root 27 Jan 25 00:31 myshell.sh
- [root@rhel tmp]#
همان طور که میبینید در آخرین خروجی حرف X وجود دارد که به معنای مجوز اجرا است. این حرف بعد از اجرای دستور Chmod اضافه میشود. در نتیجه، دفعه بعدی که بخواهیم اسکریپتنویسی شل انجام دهید، دیگر ارور نخواهید دید.
- [root@rhel tmp]# cat myshell.sh
- echo “My name is Manmohan”
- [root@rhel tmp]# ./myshell.sh
- My name is Manmohan
- [root@rhel tmp]#