PHP Shell_Exec () وسودو: يجب أن يكون الجذر setuid
سؤال
انا املك 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