Si un programa requiere permiso de escritura, ¿cómo debo configurarlo con chown? Específicamente, ¿cuáles serían los permisos del programa foo para resolver este error?
failed to create pid file '/var/run/bar.pid': Permission denied
permissions
el_pup_le
fuente
fuente
/var/run
Enfoque general: determine el usuario y el grupo del proceso que intenta acceder al archivo. Esto a menudo se encuentra en la configuración del software (como servidores web / servidores de correo / ...), pero si el software ya se está ejecutando, use esto:
Busque el proceso para el que desea configurar los derechos de acceso. La primera columna le dice con qué nombre de usuario se está ejecutando.
Esto le dirá a qué grupos pertenece el usuario.
Cambie el propietario o grupo del archivo para que coincida con el servicio.
Nota 1: Como la pregunta señala que el archivo está en / var / run / supongo que solo un proceso necesita acceso, si esto no es cierto, no debe cambiar el propietario o el grupo, pero podría considerar agregar el proceso 'usuario al grupo o creando un nuevo grupo para este archivo / carpeta.
Nota 2: pueden ocurrir cosas divertidas con apparmor, que es un sistema de seguridad: puede evitar que los procesos escriban en archivos y carpetas a los que tienen (en el nivel del sistema de archivos) todos los derechos necesarios. Con
aa-status
usted puede ver si una regla específica para su servicio está activa.fuente
Lo que hice fue simplemente agregar la creación de una carpeta justo antes de que se ejecute start-stop-deamon. Esto funciona porque el script generalmente se ejecuta como root durante el inicio. Simplemente crea la carpeta en / var / run y cambia el propietario de inmediato, por lo que se puede escribir un PID.
En el siguiente ejemplo, verifico la existencia de la subcarpeta de / var / run donde pongo los PID como el usuario de ejecución actual, en este caso el usuario 'pi' (ya que estoy en una frambuesa).
También revise este enlace ya que fue muy educativo para mí: el script Python para ejecutarse como servicio , sin embargo, no cubrió el problema discutido aquí.
Porción de ejemplo de mi script de shell:
fuente