¿Cómo consigo SELinux para permitir Apache y Samba en la misma carpeta?


26

En la configuración que tengo, deseo permitir que samba y apache accedan a / var / www. Puedo establecer un contexto para permitir el acceso a samba, pero luego httpd no tiene acceso. El uso de setenforce a 0 elimina los problemas, así que sé que es SELinux.

Además: ¿Cómo puedo ver el contexto de una carpeta, y puede una carpeta tener múltiples contextos?

(CentOS)


¿Has intentado usar la opción booleana de system-config-selinux?

Respuestas:


39

En primer lugar, puede ver el contexto de algo con ls usando ls -Z

[root@servername www]# ls -dZ /var/www
drwxr-xr-x  root root system_u:object_r:httpd_sys_content_t /var/www

En segundo lugar, hay dos opciones para dar acceso a Samba y Apache al mismo directorio.

La manera simple es permitir el acceso de lectura / escritura de samba a todas partes con:

setsebool -P samba_export_all_rw 1

Es simple, fácil y no se mete con ninguna propiedad extraña de SELinux.

Si le preocupa que Samba tenga acceso completo a todos los directorios y solo quiera cambiar / var / www, intente:

chcon -t public_content_rw_t /var/www
setsebool -P allow_smbd_anon_write 1
setsebool -P allow_httpd_anon_write 1

Esto permitirá el acceso de escritura de Samba y Apache a cualquier directorio con el contexto public_content_rw_t. Tenga en cuenta que chcon solo está modificando / var / www. Cualquier directorio nuevo creado en / var / www será public_content_rw_t, pero no los directorios existentes como / var / www / html o / var / www / manual. Si desea cambiar todo, agregue un -R a chcon:

chcon -R -t public_content_rw_t /var/www

Puede consultar esta página wiki de CentOS para obtener pistas sobre otros booleanos de SELinux.


Intenté esto y se queja de que un contexto ya está definido.
— Joshua Enfield

Tienes razón, parece que las cosas han cambiado desde la última vez que me metí con SELinux. Actualizaré mi respuesta con algunas otras opciones.
— David

3
@Dave me salvaste el trasero. Nos vemos en el trabajo mañana.
— Joel E Salas

Quería mencionar que si su raíz web está anidada en un recurso compartido de samba, también necesitará establecer el contexto en los directorios principales. Por ejemplo:chcon -t public_content_rw_t /mnt/share/webroot(/.*)? chcon -t public_content_rw_t /mnt/share
— Greg Sheremeta

1
Gracias, estaba luchando con algo similar pero con ftp, y todo funciona después de hacerlosetsebool -P ftpd_full_access=1
— giorgiline

9
SHARING FILES
   If you want to share files with multiple domains (Apache,  FTP,  rsync,
   Samba),  you can set a file context of public_content_t and public_content_rw_t.
   These context allow any of the above domains  to  read  the
   content.   If  you want a particular domain to write to the public_con‐
   tent_rw_t   domain,   you   must   set   the    appropriate    boolean.
   allow_DOMAIN_anon_write.  So for samba you would execute:

       setsebool -P allow_smbd_anon_write=1

Por ejemplo:

semanage fcontext -a -t public_content_rw_t '/var/www(/.*)?'
restorecon -R /var/www
setsebool -P allow_smbd_anon_write 1
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.