2011-01-17 13 views

Respuesta

4

Tuve un requerimiento similar hace algunos años que requería algunos scripts PHP para hablar con un puerto serie. El primer puerto serie es típicamente/dev/ttyS0, propiedad de root y en el grupo de marcación.

Para mi configuración inicial, agregué mi usuario de apache al marcado de grupo. Los scripts PHP podían comunicarse directamente con el puerto serie sin ningún problema. Sin embargo, solo una instancia de una secuencia de comandos podría abrir el puerto serie en cualquier momento, por lo que esta solución no podría funcionar.

Luego creé un daemon que proporcionaba una capa entre el puerto serie y los scripts PHP. Los scripts de PHP hablarían con el daemon a través de un conducto con nombre, y el daemon formateará las solicitudes y las pasará al puerto serie, haciendo un poco de almacenamiento en caché a lo largo del camino.

Por lo tanto, agregue www-data, o lo que sea su usuario de apache, al grupo que posee esos archivos, otorgando permisos de ejecución grupal, o use un proxy como el que yo tenía. Si la seguridad te preocupa, entonces me iría con el último.

0

Puede cambiar el usuario con el que se ejecuta su servidor. Esto se puede hacer fácilmente usando la versión de Windows de apache (Apache se ejecuta allí como servicio y es fácil configurar el usuario bajo el cual apache se ejecuta).

¿Qué plataforma de servidor usas?

+0

Estoy usando ubuntu lúcido. No quiero cambiar el usuario con el que apache se ejecuta, ya que esto sería un riesgo de seguridad, pero he creado algunas aplicaciones de back-end que requieren acceso a archivos que no son propiedad de www-data. ¿Qué hay de seguir la línea de crear un grupo que contenga www-data y el propietario de los archivos? – mrwooster

+0

esa sería otra opción que funcionaría. cambiar al usuario de apache es solo un riesgo de seguridad si yozu asigna un usuario con permisos de alto nivel (como root) – Thariama

1

No, no directamente. Si está en una máquina Linux y tiene los derechos, puede establecer el conjunto del bit de setuid en su archivo.

Tenga en cuenta que el servidor web se ejecuta como un usuario diferente por un motivo. Es un mecanismo de seguridad muy importante y al solucionarlo, puede causar una vulnerabilidad de seguridad.

6

Si tiene acceso a la configuración del servidor (suponiendo que sea Apache), puede considerar usar suPHP. En una máquina virtual de configuration se puede establecer explícitamente el usuario y grupo para el que se ejecuta un script PHP:

<VirtualHost 192.168.1.1:80> 
... 
suPHP_UserGroup user group 
... 
</VirtualHost> 

Este ajuste está disponible para configuraciones suPHP construidas con la opción --with-setid-mode=paranoid.

Otra forma de cambiar la ID de usuario sería posix_setuid() para la cual se requieren los privilegios apropiados. Eso significaría ejecutar sus scripts PHP como root, que es un problema de seguridad serios.

Cuestiones relacionadas