Невозможно получить доступ к / var / tmp в подпроцессе через Django - PullRequest
0 голосов
/ 21 октября 2019

Я создал сценарий, который выводит результат выполнения сценария оболочки на веб-экран, используя Django и подпроцесс python.

В частности, были созданы следующие два сценария.

  • test.py
#!/usr/bin/python
import sys,os
import subprocess
import syslog

command_list = ['/bin/sh', '/var/tmp/test.sh']

proc = subprocess.Popen(args=command_list,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    cwd=os.path.dirname(command_list[0]),
    shell=False)

result = proc.communicate(input=None)

print str( result )
  • test.sh
#!/bin/bash

echo "begin"
cat /var/tmp/data.txt

  • data.txt
data1
data2

Были выполнены модульные тесты для двух сценариев, и было подтверждено, что они работают должным образом.

Однако, когда я использовал test.py через Django, команду "cat" test.sh и data.txt«Cat: /var/tmp/data.txt: такой файл или каталог не отображаются».

В чем причина?

версия

  • python 2.7.13
  • Джанго 1.11.20

1 Ответ

0 голосов
/ 24 октября 2019

Когда я установил для PrivateTmp значение PrivateTmp = false, httpd теперь может получить доступ к / var / tmp.

view /usr/lib/systemd/system/httpd.service
    PrivateTmp=false

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