Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 29, 2013 11:01:45

quadright
Зарегистрирован: 2013-07-26
Сообщения: 75
Репутация: +  1  -
Профиль   Отправить e-mail  

Apache -> subprocess.Popen -> permission denied

Django запущено через apache+wsgi.
Запускаю сторонний скрипт из джанги:

cmd = 'cat <<EOF >>  test2.txt\n test EOF'
subprocess.Popen( cmd, shell = True, stdout=open('test.log','w') )
Вываливается ошибка: Permission denied: ‘test.log’
Конкретно с лог-файлом всё понятно, если выставить файлу права 777, то лог запишется. Но если нужно запустить скрипт с доступом к БД или еще чему-нить этакому.
Вопрос: как задать юзера от которого будет выполняться скрипт? Или это надо в апаче настройки крутить? Подскажите
Документацию на англ. читал, но видимо недостаточно моего английского чтоб найти / понять этот ньюанс.

Отредактировано quadright (Ноя. 29, 2013 11:29:21)

Офлайн

#2 Ноя. 29, 2013 18:54:29

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Apache -> subprocess.Popen -> permission denied

Изменить пользователя может только root. Но я бы не запускал скрипты из под него. Можете приспособить sudo или suid. Если родительский и дочерний процесс могут работать под одним пользователем, есть вариант настроить Apache так, что бы родительский процесс (скрипт FCGI я полагаю) запускался под кем надо.

..bw



Офлайн

#3 Дек. 2, 2013 08:32:24

quadright
Зарегистрирован: 2013-07-26
Сообщения: 75
Репутация: +  1  -
Профиль   Отправить e-mail  

Apache -> subprocess.Popen -> permission denied

Решение простейшее, для тех кто знаком с chmod в linux'e. Сегодня после выходных, разобрался как это делается
Апач запускается из под пользователя www-data, посредством chmod просто надо обеспечить этому пользователю весь необходимый доступ к стороннему скрипту. И понятно если в скрипте подгружаются доп.модули, то и до них доступ обеспечить.

Всё больше linux начинаю любить

Отредактировано quadright (Дек. 2, 2013 08:33:25)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version