Es posible ejecutar exec() como un usuario diferente (en mi cuadro se ejecuta como www-data). Deseo ejecutar un script que necesite acceso a archivos que no son propiedad de www-data.Ejecutándose en ejecución como un usuario diferente
Respuesta
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.
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?
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.
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.
- 1. Ejecución de pruebas como un usuario diferente en Visual Studio
- 2. Ejecución de comandos UNIX como usuario diferente, desde Java
- 3. como usuario diferente en Windows
- 4. Ejecutar código como un usuario diferente (C#)
- 5. Estoy ejecutándose como un servicio
- 6. Ejecutar como usuario diferente en FreeBSD
- 7. Iniciar un proceso .Net como un usuario diferente
- 8. mysql iniciando sesión como usuario diferente
- 9. ¿Cómo hacer svn commit como usuario diferente?
- 10. ¿Implementar como usuario de Jenkins o permitir que Jenkins se ejecute como un usuario diferente?
- 11. Java ejecutándose como un servicio de Unix
- 12. ¿Cómo se confirma el código como un usuario diferente?
- 13. Ejecución de ColdFusion como usuario específico
- 14. Usar Process.Start() para iniciar un proceso como un usuario diferente dentro de un servicio de Windows
- 15. ¿Cómo puedo depurar un servicio IIS local con Visual Studio ejecutándose como un usuario no administrador?
- 16. Ejecutar nuevo proceso como usuario diferente en vb.net
- 17. Cargando Properties.Settings de un archivo diferente en tiempo de ejecución
- 18. Meteor JS, ejecutándose en un depurador?
- 19. ¿Cómo ejecuto un comando como un usuario diferente de un cronjob raíz?
- 20. Código de ejecución en un procesador diferente (ensamblado x86)
- 21. Ejecución de una Proc almacenado de Oracle como otro usuario
- 22. ¿Es un servidor un bucle infinito ejecutándose como un proceso en segundo plano?
- 23. Inicie sesión como un usuario diferente al utilizar la Autenticación de Windows integrada
- 24. ¿Problema de permisos al iniciar la aplicación .NET del servicio .NET como un usuario diferente?
- 25. ¿Cómo puedo tener archivos de escritura MySQL como un usuario diferente?
- 26. ¿Cómo depuro un programa ejecutado por un usuario diferente?
- 27. ¿Cómo ejecuto nohup como un usuario diferente sin generar dos procesos?
- 28. iphone ios ejecutándose en un hilo separado
- 29. Un registro diferente para cada usuario que usa Log4j
- 30. Obteniendo un cerebrito Hola mundo ejecutándose en la instancia EC2
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
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