Tal problema puede depender del sistema operativo que use y de cómo esté configurado. Algunas distribuciones de Linux (principalmente aquellas basadas en RHEL como CentOS o Fedora) vienen con SELinux activado por defecto. Esto se puede verificar y cambiar temporalmente con los siguientes comandos:
root@ls:~# /usr/sbin/getenforce
Enforcing
root@ls:~# /usr/sbin/setenforce Permissive
root@ls:~# /usr/sbin/getenforce
Permissive
También puede tener una vista más completa de la configuración actual con:
root@ls:~# /usr/sbin/sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: enforcing
Policy version: 21
Policy from config file: targeted
Este cambio puede hacerse permanente editando el /etc/selinux/config
archivo y estableciendo la SELINUX
variable en permissive
o disabled
.
Pero, la forma correcta de resolver este tipo de problema , si realmente se encuentra en esta situación, es verificar el /var/log/audit/audit.log
archivo de registro. Contendrá todos los eventos relacionados con las reglas de SELinux. Entonces, probablemente debería darle a su script el contexto correcto, es decir, estar autorizado para ser ejecutado por el usuario apache / php. La comprobación del contexto de seguridad de SELinux se realiza con ls -Z
:
root@ls:~# ls -alZ /var/www/cgi-bin/
drwxr-xr-x root root system_u:object_r:httpd_sys_script_exec_t .
drwxr-xr-x root root system_u:object_r:httpd_sys_content_t ..
Esto enumera el usuario, el rol y el tipo de cada archivo / directorio. Aquí el httpd_sys_script_exec_t
tipo otorga a los archivos en el directorio cgi el permiso para ser ejecutado por httpd. Su script de shell probablemente debería tener el mismo tipo.
También puede alimentar las audit.log
líneas al audit2allow
comando. Le dará los cambios necesarios para hacer feliz a SELinux. Pero, por lo general, los cambios sugeridos deben realizarse en la propia política de SELinux, que no es lo que debe hacer en su caso (aún así, este resultado puede dar alguna pista de lo que está sucediendo).
La siguiente página describe un problema similar y diferentes formas de resolverlo: http://sheltren.com/stop-disabling-selinux
x
) en el archivo? ¿Especificó el intérprete de guiones en una línea shebang?