Pregunta

Tengo un proceso de PHP que:

  • comienza como raíz
  • escribe y luego cierra un archivo PID en /var/run/
  • chown()S dijo el archivo PID a otro usuario
  • Cambios a ese usuario a través de posix_setuid()
  • intenta eliminar el archivo PID al final del proceso

Ahora, aunque lo soy chown()Información del archivo PID al usuario actual, no puede eliminar el archivo que reclama "permiso denegado" en el unlink() llamar. Eso significa que aunque el usuario efectivo posee el archivo y el archivo no está abierto en el proceso actual (o cualquier), todavía no hay permiso suficiente.

En una corazonada, intenté mover la ubicación del archivo PID a mi directorio de inicio, y esto funciona sin problemas. Tenga en cuenta que el usuario del proceso no es mi usuario personal, por lo que el usuario efectivo no tiene permisos de escritura en mi directorio de inicio, solo el archivo específico.

Entonces, ¿por qué no puedo eliminar el archivo PID cuando está en /var/run/?

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top