У меня есть сценарий Python, который выполняется через PHP, но сценарий работает под пользователем ubuntu. Как мне изменить мой скрипт Python, чтобы он запускался от имени того же пользователя, что и мой скрипт PHP, который является www-данными?
Если это небезопасный способ сделать это, что будет?
Скрипт Python выполняет задачи с файлами, которые загружаются через PHP, а PHP автоматически устанавливает владельца и группу на www-data. Я выполняю сценарий python из командной строки, и он работает, но при выполнении через PHP сценарий Python не имеет разрешения на выполнение своей задачи для загруженных файлов.
Возможное решение - добавить пользователя ubuntu в группу www-data:
sudo usermod -a -G www-data ubuntu
Это будет работать, если файлы имеют разрешение на запись группы. В противном случае вам придется подробно описать, как вы выполняете свой скрипт python, чтобы определить, почему он запускается от имени пользователя ubuntu.
Доступ к оболочке отключен для www-данных. Вы можете добавить его другому пользователю в ту же группу, что и www-data: sudo useradd -G www-data {new_username} -s /bin/bash
Теперь измените пароль new_username на то, что хотите: sudo passwd new_username
Измените права доступа к каталогу, в котором вы хотите выполнить сценарий.
cd /project/path
sudo chown -R www-data:www-data project
cd project
find . -type f | xargs sudo chmod 660
find . -type d | xargs sudo chmod 770
Последние две строки разрешают доступ на запись только пользователям в группе www-data. Затем вы можете выполнить свой скрипт в каталоге как new_username: sudo new_username python myscript.py
. Или просто su new_username -
а потом python myscript.py
.