разрешение crontab с помощью python cgi - PullRequest
1 голос
/ 11 декабря 2019

Я хочу использовать библиотеку Python crontab для взаимодействия с миссией crontab. Если я напишу код в файл Python, назовем его cron.py:

from crontab import CronTab
my_cron = CronTab(user=True)
job = my_cron.new(command='python test.py')
job.minute.every(1)
my_cron.write()

и запустим:

python cron.py

Я получу «Terminal» хотел бы администрировать ваш компьютер. Администрирование может включать изменение паролей, сетевых настроек и настроек системы. После того, как я разрешу это, миссия crontab может быть успешно добавлена. Однако, если я запишу тот же код в файл Python CGI и захочу использовать HTML-страницу для его запуска (например, на HTML-странице я нажимаю кнопку, затембудет запущен скрипт cgi), я получу эту ошибку:

Traceback (most recent call last):
  File "/Users/chuci/apa/CGI-Executables/create.py", line 58, in <module>
    my_cron.write()
  File "/anaconda3/lib/python3.6/site-packages/crontab.py", line 354, in write
    CRONCMD, ret, proc.stderr.read()))
OSError: Program Error: /usr/bin/crontab returned 1: b'crontab: tmp/tmp.8166: Operation not permitted\n'

Поэтому мне интересно, что мне делать, чтобы решить эту проблему с разрешениями? Я использую MacOS и Apache2 для веб-сервера и CGI. Я уже запустил «chmod 777 create.py» для моего файла CGI. Спасибо!

1 Ответ

0 голосов
/ 15 декабря 2019

После того, как я проконсультировался с разработчиком библиотеки crontab, вот его ответ:

Спасибо за сообщение о проблеме. Я думаю, что вы первый, кто сообщил об использовании модуля с macOS. Как UNIX, он должен быть совместимым, поскольку его crontab не очень сложен. Ошибка разрешений, о которой вы сообщили, согласуется с тем, что вы не являетесь пользователем root. Я не знаю, почему Mac потребуются дополнительные разрешения для записи в crontab пользователя, я подозреваю, что это имеет непосредственное отношение к их системе разрешений, но я понятия не имею, как это может работать. Если вы узнаете, в чем проблема, я бы приветствовал патч для улучшения поддержки Mac.

Так что решение таково: используйте его в Unix вместо macOS. macOS может иметь некоторую проверку безопасности, которая приведет к сбою.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...