لا تقوم صفحة الويب PHP بتشغيل أمر Unix حتى بعد تحديث Sudoers

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

  •  02-07-2019
  •  | 
  •  

سؤال

أحاول بشكل أساسي إعادة تشغيل خدمة من صفحة ويب php.

هنا هو الرمز:

<?php
exec ('/usr/bin/sudo /etc/init.d/portmap restart');
?>

ولكن في /var/log/httpd/error_log, ، انا حصلت

غير قادر على التغيير إلى sudoers gid:عملية غير مسموحة

وفي /var/log/messages، أحصل على

22 سبتمبر 15:01:56 نواة ري:التدقيق(1222063316.536:777):ايه في سي:تم رفض { getattr } لـ pid=4851 comm="sh" name="var" dev=dm-0 ino=114241 scontext=root:system_r:httpd_sys_script_t tcontext=system_u:object_r:var_t tclass=dir
22 سبتمبر 15:01:56 نواة ري:التدقيق(1222063316.549:778):ايه في سي:تم رفض { setrlimit } لـ pid=4851 comm="sudo" scontext=root:system_r:httpd_sys_script_t tcontext=root:system_r:httpd_sys_script_t tclass=process
22 سبتمبر 15:01:56 نواة ري:التدقيق (1222063316.565:779):ايه في سي:تم رفض { قراءة } لـ pid=4851 comm="sudo" name="shadow" dev=dm-0 ino=379669 scontext=root:system_r:httpd_sys_script_t tcontext=system_u:object_r:shadow_t tclass=file
22 سبتمبر 15:01:56 نواة ري:التدقيق(1222063316.568:780):ايه في سي:تم رفض { قراءة } لـ pid=4851 comm="sudo" name="shadow" dev=dm-0 ino=379669 scontext=root:system_r:httpd_sys_script_t tcontext=system_u:object_r:shadow_t tclass=file
22 سبتمبر 15:01:56 نواة ري:التدقيق (1222063316.571:781):ايه في سي:تم رفض { setgid } لـ pid=4851 إمكانية comm="sudo"=6 scontext=root:system_r:httpd_sys_script_t tcontext=root:system_r:httpd_sys_script_t tclass=capability
22 سبتمبر 15:01:56 نواة ري:التدقيق(1222063316.574:782):ايه في سي:تم رفض { setuid } لـ pid=4851 إمكانية comm="sudo"=7 scontext=root:system_r:httpd_sys_script_t tcontext=root:system_r:httpd_sys_script_t tclass=capability
22 سبتمبر 15:01:56 نواة ري:التدقيق (1222063316.577:783):ايه في سي:تم رفض { setgid } لـ pid=4851 إمكانية comm="sudo"=6 scontext=root:system_r:httpd_sys_script_t tcontext=root:system_r:httpd_sys_script_t tclass=capability

في visudo الخاص بي، أضفت تلك السطور

User_Alias ​​WWW=apache

WWW ALL=(ALL) NOPASSWD:ALL

هل تستطيع مساعدتي رجاء ؟أفعل شيئا خاطئا ؟

شكرا لمساعدتك،

تيبون

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

المحلول

المشكلة ليست مع Sudo في الوقت الحالي، ولكن مع SELinux, ، والذي تم تعيينه (بشكل معقول) لمنع HTTPD من الحصول على امتيازات الجذر.
ستحتاج إما إلى السماح بذلك بشكل صريح (يمكنك استخدام Audit2allow لهذا)، أو قم بتعيين SELinux ليكون متساهلًا بدلاً من ذلك.أود أن أقترح السابق.

نصائح أخرى

يبدو أن الخطأ الذي يظهر لك مرتبط بتكوين SELinux الخاص بك.يمكنك محاولة تعطيل ذلك مؤقتًا.

جانبًا، أقترح بشدة أن تقوم بتعديل إعدادات Sudo الخاصة بك لتكون أكثر تقييدًا.

User_Alias WWW=apache
Cmnd_Alias WEBCMDS=/etc/init.d/portmap
WWW ALL=NOPASSWD: WEBCMDS

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

تابع الجزء السابع من الرابط التالي: https://wiki.centos.org/HowTos/SELinux.

هل grep مع httpd_sys_script_t.

الخطوات في الأساس هي:

# grep httpd_sys_script_t /var/log/audit/audit.log | audit2allow -M httpdallowsudo
# semodule -i httpdallowsudo.pp

ربما يرجع هذا إلى شيء مثل محاولة تنفيذ Sudo في غلاف غير تفاعلي.

إذا قمت بإجراء grep لـ "sudo" في سجل بريد مستخدمي Apache، فقد تجد أشياء مثل هذه

سودو:آسف، يجب أن يكون لديك tty لتشغيل Sudo

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