Я использую Ubuntu на своем сервере.
У меня есть два пользователя, пусть они будут user1 и user2
У каждого пользователя есть своисобственная папка проекта с разрешениями, установленными в соответствии с их потребностями.Но user1 необходимо запустить скрипт python, который находится в папке проекта другого пользователя.Я использую subprocess.Popen
для этого.Файл python имеет необходимые права доступа, поэтому у меня нет проблем с вызовом этого скрипта.Но файлы журналов (которые имеют разрешение для user2 ) вызывают ошибку permision denied (так как они принадлежат другому пользователю, а не тому, который мне нужен).
Итак, я попытался изменить пользователя с помощью
Popen("exit", shell=True, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE) #exit from current user, and be root again
Popen(["sudo", "user2"], shell=True, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE)
Popen("/usr/bin/python /some/file/directory/somefile.py param1 param2 param3", shell=True, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE)
Но второе Popen
завершилось неудачно с
su: должен запускаться с терминала
Есть ли способ изменить пользователя в оболочке Python?
PS: По некоторым причинам я не могу изменить права пользователя для файлов журнала.Мне нужно найти способ переключиться на другого пользователя ...
РЕДАКТИРОВАТЬ: Мне нужно сделать некоторые разъяснения, чтобы прояснить ситуацию ...
У меня запущены два разных проекта django.У каждого проекта есть пользователь, есть свои собственные пользовательские папки, в которых хранятся коды и журналы каждого проекта.
Теперь в некоторых случаях мне нужно перенести некоторые данные из проекта1 в проект2.Самый простой способ - это написать скрипт на python, который принимает параметры и выполняет соответствующую работу [вставку данных] во втором проекте.
Итак, когда некоторые определенные функции вызываются в project1, я хочу вызвать скрипт py, которыйнаходится в папке проекта project2, поэтому я могу выполнить обновление данных по второму проекту.
Но, так как я вызываю Popen
в пределах project1, текущий пользователь - user1.Но в моем скрипте (который в Project2) есть несколько файлов журналов, которые мне запрещены из-за разрешений на доступ ...
Так что, каким-то образом мне нужно переключиться с user1 на user2, чтобы у меня не было проблем с разрешениями, ипозвони в мой файл pythonИли найдите другой способ сделать это ..