لماذا يعرض SFTP رسالة permission denied
يعمل SFTP بالحساب الذي سجلت الدخول به، ولا يملك ما يعادل sudo. معظم الملفات في /etc مملوكة لحساب root، لذا يستطيع الحساب العادي قراءة بعضها ولا يستطيع الكتابة في أي منها. هذا سلوك صحيح، وليس مشكلة تُحل بإضعاف الصلاحيات.
ما ينبغي تجنبه
لا تشغّل chmod 777 على ملف إعداد، ولا تجعل حسابك مالكاً لملفات /etc، ولا تفعّل تسجيل دخول root بكلمة مرور لمجرد إجراء تعديل واحد. ترفض بعض الخدمات الملفات ذات الصلاحيات المتساهلة، وكل تغيير من هذا النوع يقلل أمان الخادم حتى بعد انتهاء التحرير بوقت طويل.
استخدم sudoedit في الطرفية
ينسخ sudoedit الملف إلى موقع مؤقت، ويفتحه في محررك بحسابك أنت، ولا يكتبه مجدداً في مكانه إلا بعد أن تحفظه. المحرر نفسه لا يعمل بحساب root.
sudoedit /etc/nginx/nginx.confارفع نسخة ثم ثبّتها في مكانها
إذا كنت تفضّل محرراً محلياً، فارفع الملف إلى المجلد المنزلي لحسابك ثم ثبّته باستخدام sudo. أنشئ أولاً نسخة احتياطية من الأصل في مكان لا تقرؤه أي آلية لتضمين ملفات الإعداد. يضبط الأمر install المالك ونمط الصلاحيات، وفي الأنظمة التي تستخدم SELinux يضبط restorecon السياق الصحيح. افحص مالك الأصل ونمط صلاحياته قبل نسخ هاتين القيمتين، فليست كل الملفات تستخدم root و644.
stat -c '%U %G %a' /etc/nginx/nginx.conf
sudo cp -a /etc/nginx/nginx.conf /root/nginx.conf.bak
sudo install -o root -g root -m 644 ~/nginx.conf.new /etc/nginx/nginx.conf
sudo restorecon -v /etc/nginx/nginx.confتحقق من الصحة قبل التطبيق
قد يتسبب ملف خاطئ الصياغة في توقف خدمة عند إعادة تشغيلها التالية. شغّل فحص الخدمة المعنية قبل إعادة تحميلها. وعند تغيير إعدادات SSH، أبق جلستك الحالية مفتوحة واختبر تسجيل دخول جديداً من نافذة ثانية.
sudo nginx -t
sudo sshd -t
sudo visudo -cf /etc/sudoers.d/exampleالتحرير باستخدام sudo في CH-J Server Manager
يعرض File Manager فتح الملف باستخدام sudo عندما يعجز حساب SSH عن قراءته، وينبّه إلى أن الحفظ سيحتاج إلى sudo. عند الحفظ، تُنقل البيانات إلى المجلد المؤقت الخاص بالحساب، وبعد التحقق ينقلها sudo إلى مكانها مع الحفاظ على المالك والصلاحيات وACL وسياق SELinux. يتيح خيار النسخ الاحتياطي حفظ نسخة من الأصل قبل استبداله. تُرسل كلمة المرور إلى sudo على الخادم فقط، ولا تُخزّن على القرص أو في السجلات. إذا كانت سياسة sudo تشترط طرفية (requiretty)، فلا يتجاوز التطبيق هذا الشرط. لا يتحقق التطبيق من صحة محتوى الملف، لذا شغّل فحص الخدمة بنفسك.