PHP Shell_Exec () وسودو: يجب أن يكون الجذر setuid

StackOverflow https://stackoverflow.com/questions/2230391

  •  19-09-2019
  •  | 
  •  

سؤال

انا املك shell_exec() الأمر الذي يصل إلى دليل أعلى من جذر المستندات لذلك أحتاج إلى استخدام Sudo "كجذر" لتحقيق ذلك. (أفهم مشكلات الأمان وأنا putitng في تدابير لمعالجة تكنولوجيا المعلومات).

القضية هي عندما أركض shell_exec() أحصل على خطأ "Sudo: Root Setuid" في ملف Apache Error_log الخاص بي.

اعتقدت أن الحل هو chmod 4750 سيناريو باش يسمى من قبل بلدي sheel_exec() لكن هذا لا يقوم بهذه المهمة.

ما هو بالضبط "sudo: يجب أن يكون الجذر setuid" تحاول أن تخبرني وكيف يمكنني حلها؟

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

المحلول

هل sudo قابل للتنفيذ نفسه الجذر setuid؟ قد تحتاج إلى

chown root: /usr/bin/sudo
chmod u+s /usr/bin/sudo

نصائح أخرى

بدلا من ذلك، تخطي sudo كليا. إذا كان البرنامج النصي مملوكا للجذر ولديه مجموعة بت Setuid الخاصة به، فلن تحتاج إلى استخدام Sudo للحصول على امتيازات الجذر. في الواقع، يمكن أن يكون أكثر أمانا بهذه الطريقة؛ يمكنك أن تضمن أن مستخدم الويب الخاص بك يمكنه فقط استخدام هذا البرنامج النصي، دون الحاجة إلى تحرير Sudoers. لنفعل ذلك، إزالة sudo من الخاص بك shell_exec() خط:

<?php
    shell_exec('/path/to/your/command');
?>

هل تحقق من أذونات البرنامج النصي الخاص بك؟

من هو امتلاك البرنامج النصي؟

هل مستخدم الويب لديه حقوق سودو؟

لإصلاح هذه المشكلة، تحتاج إلى ملف chmod sudo and chmod كجذر على النحو التالي.

chown root:root /usr/bin/sudo
chmod 4111 /usr/bin/sudo
chmod 0440 /etc/sudoers
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top