Tale problema potrebbe dipendere dal sistema operativo utilizzato e dalla sua configurazione. Alcune distro di Linux (principalmente quelle basate su RHEL come CentOS o Fedora) vengono fornite con SELinux attivato di default. Questo può essere verificato e temporaneamente modificato, con i seguenti comandi:
root@ls:~# /usr/sbin/getenforce
Enforcing
root@ls:~# /usr/sbin/setenforce Permissive
root@ls:~# /usr/sbin/getenforce
Permissive
Puoi anche avere una visione più completa della configurazione corrente 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
Questa modifica può essere resa permanente modificando il /etc/selinux/config
file e impostando la SELINUX
variabile su permissive
o disabled
.
Tuttavia, il modo corretto di risolvere questo tipo di problema , se si è effettivamente in questa situazione, è controllare il /var/log/audit/audit.log
file di registro. Conterrà tutti gli eventi relativi alle regole SELinux. Probabilmente dovresti quindi dare al tuo script il contesto corretto, ovvero essere autorizzato ad essere eseguito dall'utente apache / php. Il controllo del contesto di sicurezza di SELinux viene eseguito 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 ..
Questo elenca l'utente, il ruolo e il tipo di ciascun file / directory. Qui il httpd_sys_script_exec_t
tipo dà ai file nella directory cgi il permesso di essere eseguito da httpd. Lo script della shell dovrebbe probabilmente avere lo stesso tipo.
Puoi anche alimentare le audit.log
righe al audit2allow
comando. Ti darà le modifiche necessarie per rendere felice SELinux. Ma di solito le modifiche suggerite devono essere fatte sulla stessa politica SELinux che non è ciò che dovresti fare nel tuo caso (tuttavia, questo output può dare qualche indizio su cosa sta succedendo).
La pagina seguente descrive un problema simile e diversi modi per risolverlo: http://sheltren.com/stop-disabling-selinux
x
) sul file? Hai specificato l'interprete di script in una riga shebang?