سؤال

لذلك لدي مشكلة Linux قليلا، جيز الذي سوف يعلمني أن أقضي سنوات عديدة على النوافذ. على أي حال، قمت بتطبيق Java Little، ملفوفة بشكل جيد مع البرنامج النصي Wrapper Service Java، ولكن عندما أركض هذا البرنامج النصي:

sh ./wrapper.sh console

أحصل على إذن تم رفضه على الفور. رسالة تم رفض الإذن مثل هذا:

eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied

بلدي الغلاف الصغير يعيش في مجلد myapp / bin. يحتوي الدليل MyApp / Bin / Wrapper على ملفين 2

  • المجمع Linux-X86-32
  • المجمع Linux-X86-64

كاختبار ركضت أمر Chmod التالي:

chmod a=rwx MyApp -R

لقد تحققت من أن كل شيء كان RWX، حتى في مجلدات الفرعية وحاول تشغيل البرنامج النصي مرة أخرى، مع نفس النتيجة الدقيقة ... تم رفض إذن.

أي شخص لديه أي فكرة عما يمكن أن أحاول بعد ذلك لجعل هذا الطفل يعمل؟

شكرا، لانسلوت

هل كانت مفيدة؟

المحلول

لقد لاحظت فقط رسالة الخطأ مراجع اسم الدليل استضافة ملفك:

eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied

نحن نعلم أنه دليل منذ أن ذكرت "الدليل MyApp / Bin / Wrapper يحتوي على 2 ملفات".

هل يمكنك التحقق من البرنامج النصي الخاص بك على سبيل المثال حيث تستخدم اسم الدليل كأمر مثل استخدام التفاف (وهو اسم الدليل) بدلا من المجمع / Wrapper-Linux-X86-32 (الذي سيكون اسم ملف) أو أخطاء مشابهة؟

غالبا ما تظهر أخطاء مماثلة عند استخدام المسافات في أسماء الملفات ونسيان الاقتباس المذكورة المذكورة (ربما لا تكون الحال هنا، على الرغم من ذلك.)

فشل ذلك، هل يمكنك تعديل سؤالك لتضمين محتويات البرنامج النصي التجمع الذي تتصل به؟

(إجابة جديدة لأنها لا علاقة لها تماما بفكرة NOEXEC السابقة، ويمكن للمرء أن يبقى للإشارة.)

نصائح أخرى

قد يتم تركيب نظام الملفات الذي يستضيف البرنامج النصي الخاص بك مع noexec علم. تحقق من إدخال / إلخ / fstab لنظام الملفات هذا وإذا كان هناك noexec هناك حاول إزالة ذلك ثم قم بإعادة تحميل نظام الملفات mount /path/to/mountpoint -o remount

في الفكر الثاني، تحقق من إخراج mount أمر مثيلات NOEXEC بدلا من / إلخ / fstab (ربما تم تركيب نظام الملفات بشكل حيوي.)

قد تضطر أيضا إلى منح نص التنفيذ أيضا إلى التفاف الخاص بك

chmod + x التفاف

تحرير: لقد لاحظت للتو أن Wrapper.sh موجود في مجلد MyApp الخاص بك / تحرير

أيضا، إذا كنت تأكد من أن لديك

#!/bin/sh

في الجزء العلوي من ملف .sh الخاص بك، يمكنك تنفيذه مثل هذا:

.wrapper.sh.

أولا، حاول فتحه في محرر نصوص، للتأكد من أن لديك الوصول إلى القراءة. إذا كان الأمر كذلك، افعل

chmod +x wrapper.sh

وتأكد من أن لديك #!/bin/sh في بداية البرنامج النصي

قد تحاول تنفيذ الملف الذي كان هناك في الدليل الرئيسي للمستخدم الآخرين، يمكنك إعطاء إذن للمستخدم "مستخدم"

chmod -r a + x / home / user1 أو chmod -r o + x / home / user1 chmod -r g + x / home / user1

على الرغم من أن مشكلتي مختلفة بعض الشيء ظهرت هذه السؤال في بحثي عدة مرات أثناء البحث عن مشكلة مماثلة، إلا أنني سأقوم بنشر النتائج الخاصة بي هنا.

كانت مشكلتي أنني لم أستطع الوصول إلى التخزين / المجلد بعد قيادة Chmod.

بعد تنفيذ الأمر:

sudo chmod -755 storage -R    //notice -755 is wrong, it should be 755

لم أستطع الوصول إلى التخزين / المجلد بعد الآن.

لقد حاولت ls -l:

storage permissions d---------

أيضا بعد ذلك git status:

storage/.gitignore: Permission denied

بعد تنفيذ الأمر الصحيح:

sudo chmod 755 storage -R // without -

كل شيء عاد مرة أخرى إلى وضعها الطبيعي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top