japifer
Posts: 10
Joined: Sun Apr 27, 2014 4:46 am

error de permiso .py al escribir en logger-- cuando se ejec crontab

Thu Mar 12, 2020 11:38 pm

hola a todos, estoy haciendo un proyecto estos días y estoy atrapado en una cosa.

Resulta que estoy haciendo un scrip para mi raspberry en python, éste se ejecuta por medio del crontab. mi problema es que al ejecutarlo no me esta escribiendo en el archivo .log por falta de permiso, y no se como solucionar esto. intente con darle permiso de escritura de forma directa al .log por medio del chmod, pero tengo el problema que los log son rotativos por lo cual es el scrip quien los crea por lo mismo no tengo el control de permiso.

Saludos espero que me puedan orientar

mi crontab esta de la forma:

Code: Select all

@reboot sleep 60;      /usr/bin/python         /home/stations/StationsControl.py
StationsControl.py tiene todo los permisos, le puse chmod 777

el programa se tiene que ejecutar sin interfaz interfaz gráfica ya que estará corriendo la raspi en un lugar remoto

User avatar
lmarmisa
Posts: 1264
Joined: Thu Feb 14, 2013 2:22 am
Location: Jávea, Spain

Re: error de permiso .py al escribir en logger-- cuando se ejec crontab

Fri Mar 13, 2020 12:58 pm

¿El crontab está definido desde el usuario pi o desde el usuario stations?. Cada usuario tiene un crontab propio independiente de los demás. Además del problema potencial de contexto mínimo de arranque de las tareas de cron/crontab que te comenté en otro hilo, debes saber que las tareas arrancadas desde crontab corren como programas de usuario del crontab donde están definidas.

El error te lo da al intentar escribir el fichero log, no tiene nada que ver con los permisos del programa python. ¿En qué directorio se intenta escribir?. Eso dependerá de cómo lo hayas definido en el fichero python.
el programa se tiene que ejecutar sin interfaz interfaz gráfica ya que estará corriendo la raspi en un lugar remoto
Puedes tener perfectamente la interfaz gráfica activada en un sistema remoto del tipo "headless", es decir, sin pantalla, teclado ni ratón. De hecho podrías acceder a él remotamente en modo gráfico con RealVNC aunque no haya ninguna pantalla física a la que esté conectada la RPi y podrías usar sudo raspi-config para definir la resolución de la pantalla gráfica que quieres ver al conectarte remotamente con RealVNC.

japifer
Posts: 10
Joined: Sun Apr 27, 2014 4:46 am

Re: error de permiso .py al escribir en logger-- cuando se ejec crontab

Sat Mar 14, 2020 12:40 am

Hola lmarmisa, gracias por responderme nuevamente. me perdonas por lo cabeza dura, pero no logro entender bien esto de como arrancar un programa junto con el arranque de la Raspi.
Estoy haciendo un scrip en python que tiene que arrancar junto con la raspi, este scrip maneja un archivo logger, además de un subproceso que igual maneja su propio archivo log. dentro de lo que me has dicho, logre hacer que el log del scrp principal se pueda escribir, esto lo realice ubicando mi directorio en /home/stations/ y les di permisos chmod 777 al igual que al .py. el programa se ejecuta con sudo crontab, pero lo que aún no puedo hacer es que mi subproceso pope, pueda abrir su archivo de configuración para el log.
Ahora en base a lo que me indicas como puedo hacer que el programa pueda partir sin los problemas señalados y que no dependa de un usuario en particular?

desde ya gracias por tomarte el tiempo es responderme

User avatar
lmarmisa
Posts: 1264
Joined: Thu Feb 14, 2013 2:22 am
Location: Jávea, Spain

Re: error de permiso .py al escribir en logger-- cuando se ejec crontab

Sat Mar 14, 2020 5:06 pm

No sé si tienes claros los conceptos básicos de Linux.

En el sistema se definen usuarios. Hay un usuario con todos los privilegios (root) que puede ser accedido también con el comando sudo; y hay otros usuarios con menos privilegios que son adecuados para el uso personal de la máquina o el desarrollo de aplicaciones (usuario pi). También existe el concepto de grupo que proporciona cierto nivel de acesso a ficheros/servicios/programas a los usuarios que pertenezcan a dicho grupo. Normalmente cada usuario pertenece al grupo de su mismo nombre (pi:pi) y adicionalmente podrá también tener asignados otros grupos.

Cada fichero o directorio del disco tiene asignado un usuario y un grupo principal que son sus propietarios. Eso lo puedes ver con el comando

Code: Select all

ls -l
Por defecto todos los ficheros del usuario pi están situados bajo el directorio

Code: Select all

/home/pi
Y eso es lo normal con cualquier otro usuario adicional que creemos. Por ejemplo, si creáramos el usuario stations, sus ficheros estarían guardados bajo el directorio

Code: Select all

/home/stations
Además del concepto de usuario propietario (owner), cada fichero tiene unos permisos (rwx) en el ámbito de usuario, grupo y otros.

Veo en tu caso que almacenas el script en el directorio /home/stations. Eso es un poco raro. ¿Adicionalmente a pi has definido también otro usuario de nombre stations?.

Permisos y usuarios/grupos no son lo mismo. Hay que entender los conceptos básicos de Linux.

Si no explicas los detalles precisos de la estructura de usuarios de tu proyecto, no se te puede ayudar. ¿Has creado usuarios adicionales a pi?. ¿Por qué situaste el script en el directorio /home/stations?.

Return to “Español”