¿Cómo le doy permiso a un script CGI para acceder al Calendario?

3

Cuando ejecuto mi secuencia de comandos desde la línea de comandos que puedo usar, se me solicita que use - Preferencias del sistema para agregar ssh-keygen-wrapper para que esté autorizado a acceder al Calendario.

Pero cuando ejecuto el script como un programa CGI, no está autorizado para acceder al Calendario, se ejecuta como nobody y falla, y no sé cómo otorgarle el permiso necesario al script invocado por CGI. / p>

Una pregunta relacionada es si I debería dar a nobody acceso al calendario ... pero ese es un problema aparte.

[FYI]
macOS High Sierra Python CGI script usando un AppleScript para leer eventos del calendario

    
pregunta iainH 12.10.2017 - 11:47

2 respuestas

1

Por supuesto, @Sirens señala la falla obvia en mi enfoque. Había utilizado el AppleScript como una forma fácil de acceder a los calendarios disponibles en la línea de comandos del usuario en el que había iniciado sesión, pero, por supuesto, no estaba disponible para nadie .

Consideré con gratitud la respuesta de @ Siren y estuve de acuerdo con él en que mi enfoque era básicamente erróneo y que una solución alternativa era demasiado peligrosa o desagradable como para seguir estudiando.

Espero que esto constituya una respuesta, útil para cualquiera que también haya tomado este giro incorrecto, ya que parece obvio buscar una táctica mejor informada utilizando las bibliotecas de Python disponibles para crear un script CGI donde yo (y nadie ) puede proporcionar explícitamente el Calendario con credenciales de cliente independientemente del usuario o la máquina que ejecuta el script.

He usado caldav como prueba de concepto pero encontré algunos problemas al hacerlo, así que ahora estoy mirando CalDAVClientLibrary de Apple que parece ser un poco más completo.

    
respondido por el iainH 15.10.2017 - 12:17
2

El usuario de nobody no es interactivo y no tiene calendarios de todos modos. Necesitará tener algún componente (tal vez otra aplicación / proceso personalizado) ejecutándose mientras entrega la información del calendario.

Realmente tienes dos opciones, una de las cuales es muy mala.

En primer lugar, puede hacer que sus scripts CGI se ejecuten como usted. Esto no es difícil pero es muy peligroso y no se recomienda.

En segundo lugar, puedes construir lo que es esencialmente un proxy de calendario. Este podría ser otro programa (ejecutándose como usted) que cada cinco minutos lee los datos del calendario y los escribe en un archivo que nadie, la cuenta, puede leer. Parece que ya estás familiarizado y funciona bien con los calendarios, así que esto no debería ser un problema, es solo otra secuencia de comandos que programas con cron.

Otra cosa, aunque realmente no estoy seguro de si funcionará para nadie, es que puedes ejecutar sudo su nobody y luego lanzarlo. Como OSX sabe que el PTTY está adjunto a su sesión de usuario, mostrará el aviso allí para que lo acepte. Si bien aún no podrá acceder a los calendarios de sus usuarios, este truco es útil si tiene que usar este tipo de permisos como root, quien tampoco tiene una sesión gráfica.

    
respondido por el Sirens 13.10.2017 - 18:45

Lea otras preguntas en las etiquetas