selinux!
Acontece que eu tinha selinux instalado e ativado. Com um pouco de configuração o problema foi embora
As pistas foram
- a string
context=user_u:system_r:httpd_sys_script_t:s0
na saída deid
- a presença de uma pasta
selinux
em/
Encontrei uma receita para a solução no link que me fez verificar a auditoria. log - Nele eu notei comm="lp"
e denied
(isto é, comando lp negado)
Detalhes importantes seguem no caso de ajudarem alguém
# grep 'comm="lp' /var/log/audit/audit.log | tail -n 2
type=AVC msg=audit(1346348949.002:30060): avc: denied { name_connect } for pid=20130 comm="lp" dest=631 scontext=user_u:system_r:httpd_sys_script_t:s0 tcontext=system_u:object_r:ipp_port_t:s0 tclass=tcp_socket
type=SYSCALL msg=audit(1346348949.002:30060): arch=c000003e syscall=42 success=no exit=-13 a0=4 a1=2b0a50c0b108 a2=10 a3=7ffffa3aeba4 items=0 ppid=20123 pid=20130 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="lp" exe="/usr/bin/lp.cups" subj=user_u:system_r:httpd_sys_script_t:s0 key=(null)
# grep 'comm="lp' /var/log/audit/audit.log | tail -n 3 | audit2allow
#============= httpd_sys_script_t ==============
allow httpd_sys_script_t ipp_port_t:tcp_socket name_connect;
# grep 'comm="lp' /var/log/audit/audit.log | tail -n 3 | audit2allow -M secommands
******************** IMPORTANT ***********************
To make this policy package active, execute:
semodule -i secommands.pp
# ls secom*
secommands.pp secommands.te
# /usr/sbin/semodule -i secommands.pp
# wget -O - http://localhost/cgi-bin/t4.pl
--2012-08-30 19:05:09-- http://localhost/cgi-bin/t4.pl
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/plain]
Saving to: 'STDOUT'
[<=> ] 0 --.-K/s TEST
# /usr/bin/lp -d laser1 /tmp/po-list.19025.ps
request id is laser1-23 (1 file(s))
# ls /home | wc -l
ls: /home: Permission denied
0
Finished
[ <=> ] 2,034 --.-K/s in 0.03s
2012-08-30 19:05:09 (56.9 KB/s) - '-' saved [2034]
O comando lp funciona, não estou realmente preocupado em não ser capaz de ls
on / home - esse é um recurso de segurança de que gosto.