Esse problema pode depender do sistema operacional usado e de como está configurado. Algumas distribuições linux (principalmente aquelas baseadas em RHEL como CentOS ou Fedora) vêm com o SELinux ativado por padrão. Isso pode ser verificado e alterado temporariamente, com os seguintes comandos:
root@ls:~# /usr/sbin/getenforce
Enforcing
root@ls:~# /usr/sbin/setenforce Permissive
root@ls:~# /usr/sbin/getenforce
Permissive
Você também pode ter uma visão mais completa da configuração atual com:
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
Essa alteração pode ser permanente, editando o /etc/selinux/config
arquivo e defina a SELINUX
variável como permissive
ou disabled
.
Mas, a maneira correta de resolver esse tipo de problema , se você realmente estiver nessa situação, é verificar o /var/log/audit/audit.log
arquivo de log. Ele conterá todos os eventos relacionados às regras do SELinux. Você provavelmente deverá fornecer ao seu script o contexto correto, ou seja, estar autorizado a ser executado pelo usuário apache / php. A verificação do contexto de segurança do SELinux é feita com 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 ..
Esta lista o usuário, a função e o tipo de cada arquivo / diretório. Aqui, o httpd_sys_script_exec_t
tipo dá aos arquivos no diretório cgi a permissão para serem executados pelo httpd. Seu script de shell provavelmente deve ter o mesmo tipo.
Você também pode alimentar as audit.log
linhas para o audit2allow
comando. Ele fornecerá as alterações necessárias para tornar o SELinux feliz. Mas geralmente as alterações sugeridas precisam ser feitas na própria política do SELinux, que não é o que você deve fazer no seu caso (ainda assim, essa saída pode dar uma pista do que está acontecendo).
A página a seguir descreve um problema semelhante e diferentes maneiras de resolvê-lo: http://sheltren.com/stop-disabling-selinux
x
) no arquivo? Você especificou o interpretador de script em uma linha shebang?