запустите crontab как www-data, чтобы создать файл с www-данными в качестве владельца

Canonical не несет ответственности за содержание пакетов, это все, что это значит.

2
задан 24 January 2018 в 15:15

6 ответов

Еще обходной путь, но вы также можете запустить свой скрипт как root, как он есть, и позволить файлу создавать файл root. И только добавьте в конец

&& sudo chown www-data <your Log file>

, чтобы окончательно передать право собственности на файл на www-data.

(Если файлов больше, чем вы, вероятно, также интересуетесь флагом -R для «рекурсивного», чтобы запустить chown на всю папку и содержимое)

1
ответ дан 17 July 2018 в 22:20
Я хочу сохранить все мои команды cron под пользователем root.

Чтобы сохранить все задания cron (которые могут запускаться как разные пользователи) в одном месте, забудьте команду crontab и измените общесистемный crontab в файле /etc/crontab или добавьте ваш собственный crontab в каталог /etc/cron.d. Как вы ожидали, для этого потребуется root-доступ.

Эти файлы похожи на любые другие crontab, но они включают столбец имени пользователя, поэтому вы можете просто указать целевого пользователя и не использовать sudo или такие вещи.

Имейте в виду, что в отличие от команды crontab вы непосредственно редактируете файлы конфигурации системы, поэтому ваши изменения не будут проверяться после выхода из редактора. Поэтому, пожалуйста, отредактируйте их с достаточным вниманием.

1
ответ дан 17 July 2018 в 22:20

Итак, вы хотите, чтобы

все ваши crontabs в одном месте под root выполняли некоторый код python каждые 5 минут, запускаем скрипт с помощью пользователя www-data

Поскольку su недоступен для www-данных, как описано в комментариях, можно использовать sudo вместо этого, если он доступен в системе. С man-страницы это говорит

sudo, sudoedit - выполнить команду как другой пользователь

В вашем случае это будет означать, что вы используете

sudo crontab -e

для редактирования ваш crontab в качестве пользователя root. Внутри команды crontab prepend sudo -u www-data python выполнить python пользователь объявления www-data.

*/5 * * * * sudo -u www-data python /my/python/log/script.py
1
ответ дан 17 July 2018 в 22:20

Еще обходной путь, но вы также можете запустить свой скрипт как root, как он есть, и позволить файлу создавать файл root. И только добавьте в конец

&& sudo chown www-data <your Log file>

, чтобы окончательно передать право собственности на файл на www-data.

(Если файлов больше, чем вы, вероятно, также интересуетесь флагом -R для «рекурсивного», чтобы запустить chown на всю папку и содержимое)

1
ответ дан 23 July 2018 в 22:58
Я хочу сохранить все мои команды cron под пользователем root.

Чтобы сохранить все задания cron (которые могут запускаться как разные пользователи) в одном месте, забудьте команду crontab и измените общесистемный crontab в файле /etc/crontab или добавьте ваш собственный crontab в каталог /etc/cron.d. Как вы ожидали, для этого потребуется root-доступ.

Эти файлы похожи на любые другие crontab, но они включают столбец имени пользователя, поэтому вы можете просто указать целевого пользователя и не использовать sudo или такие вещи.

Имейте в виду, что в отличие от команды crontab вы непосредственно редактируете файлы конфигурации системы, поэтому ваши изменения не будут проверяться после выхода из редактора. Поэтому, пожалуйста, отредактируйте их с достаточным вниманием.

1
ответ дан 23 July 2018 в 22:58
  • 1
    по какой-то причине, @ shadow0359 хотел поддерживать все команды cron под root , а не в пользовательском разделе crontab или crontab.d. Редактирование /etc/crontab не является хорошей идеей. – ukos 5 February 2018 в 20:42

Итак, вы хотите, чтобы

все ваши crontabs в одном месте под root выполняли некоторый код python каждые 5 минут, запускаем скрипт с помощью пользователя www-data

Поскольку su недоступен для www-данных, как описано в комментариях, можно использовать sudo вместо этого, если он доступен в системе. С man-страницы это говорит

sudo, sudoedit - выполнить команду как другой пользователь

В вашем случае это будет означать, что вы используете

sudo crontab -e

для редактирования ваш crontab в качестве пользователя root. Внутри команды crontab prepend sudo -u www-data python выполнить python пользователь объявления www-data.

*/5 * * * * sudo -u www-data python /my/python/log/script.py
1
ответ дан 23 July 2018 в 22:58
  • 1
    su недоступно для www-data. Я пытался с sudo, но новый файл был создан с правами root – shadow0359 24 January 2018 в 15:51
  • 2
    Понимаю. Использовать cat / etc / passwd | grep www-data , чтобы увидеть свойства www-данных. Я бы этого не изменил. можете ли вы создать нового пользователя, такого как www-log, с командой adduser --system --no-create-home --disabled-login --группа www-data www-log и использовать эту? – ukos 24 January 2018 в 16:01
  • 3
    я хочу, чтобы пользователь был www-данными, поскольку другие скрипты выполняются apache – shadow0359 24 January 2018 в 16:03
  • 4
    sudo работал для меня. sudo -u www-data echo 1 – ukos 24 January 2018 в 16:06
  • 5
    так что владение - это www-данные в вашем случае? – shadow0359 24 January 2018 в 16:19

Другие вопросы по тегам:

Похожие вопросы: