شاید برای شما هم پیش آمده باشد که درزمان تغییر پرمیژن یک فایل یا تغییر نام یک فایل در هاست لینوکسی خود با خطایی FileOp Failure: The system failed to change the permissions for filename with the error: Operation not permitted مواجه شده باشید. این خطا معمولاً به دلیل محدودیتهای مربوط به سطح دسترسی فایلها یا تنظیمات امنیتی سرور رخ میدهد. در این متن با هم دلایل متداول و راهحلهای پیشنهادی برای رفع این خطا را مرور خواهیم کرد.
1. فایل دارای مالکیت نادرست است
ممکن است فایل مربوطه مالکیتی غیر از کاربر حساب سیپنل داشته باشد.
راهحل:
وارد سرور شوید و با کاربر root این دستور را اجرا کنید تا مالکیت فایل را بررسی کنید(باید مسیر و نام فایل مورد نظر خود را به درستی وارد کنید):
ls -l /path/to/filename
اگر مالک فایل نادرست است، دستور زیر را برای تغییر مالکیت اجرا کنید:
chown username:username /path/to/filename
(جایگزین کردن username با نام کاربری صحیح).
2. فایل دارای پرچم غیرقابل تغییر است
گاهی اوقات ممکن است فایل دارای پرچم immutable باشد که مانع از تغییر دسترسی آن میشود.
راهحل:
پرچم فایل را بررسی کنید:
lsattr /path/to/filename
اگر علامتی مانند i در کنار فایل وجود دارد، پرچم را حذف کنید:
chattr -i /path/to/filename
3. محدودیتهای CloudLinux یا CageFS
اگر از CloudLinux یا CageFS استفاده میکنید، ممکن است محدودیتهای امنیتی مانع تغییر دسترسی شود.
راهحل:
وضعیت CageFS کاربر را بررسی کنید:
cagefsctl --list-enabled
اگر نیاز است کاربر را از CageFS موقتاً خارج کنید:
cagefsctl --disable username
و پس از انجام تغییرات دوباره فعال کنید:
cagefsctl --enable username
4. محدودیتهای LiteSpeed
در برخی موارد، تنظیمات LiteSpeed ممکن است از تغییر پرمیژن فایل جلوگیری کند.
راهحل:
بررسی کنید که آیا LiteSpeed از ویژگیهای امنیتی اضافی برای محافظت از فایلها استفاده میکند یا نه. برای این کار میتوانید تنظیمات ModSecurity یا قوانین خاص در LiteSpeed را بررسی کنید.
همچنین فایل مورد نظر را از نظر قوانین مرتبط با ModSecurity بررسی کنید.
5. سطح دسترسی والد (Parent Directory)
اگر فولدر والد سطح دسترسی لازم را ندارد، ممکن است خطای تغییر پرمیژن فایلها نمایش داده شود.
راهحل:
سطح دسترسی فولدر والد را بررسی کنید:
ls -ld /path/to/
مطمئن شوید سطح دسترسی مناسب (مانند 755) تنظیم شده است:
chmod 755 /path/to/
6. فایل در حال استفاده است
اگر فایل توسط یک فرآیند یا سرویس در حال استفاده باشد، تغییر پرمیژن ممکن نیست.
راهحل:
فرآیندهای در حال استفاده از فایل را بررسی کنید:
lsof | grep filename
فرآیند را متوقف کنید یا فایل را آزاد کنید.
برای رفع مشکل پیشنهاد میشود ابتدا مالکیت و پرچمهای فایل را بررسی کرده و در صورت نیاز محدودیتهای امنیتی CloudLinux یا LiteSpeed را نیز چک کنید. اگر باز هم مشکل برطرف نشد، لاگهای سیپنل و سیستم را برای جزئیات بیشتر بررسی کنید.