我有一个通过 PHP 执行的 Python 脚本,但该脚本在用户 ubuntu 下运行。如何将我的 Python 脚本更改为以与我的 PHP 脚本 www-data 相同的用户身份运行?
如果这不是一种安全的方法,那什么才是安全的呢?
Python 脚本对通过 PHP 上传的文件执行任务,并且 PHP 会自动将所有者和组设置为 www-data。我从命令行执行 Python 脚本,它可以正常工作,但是当通过 PHP 执行时,Python 脚本没有权限对上传的文件执行其任务。
答案1
一种可能的解决方案是将 ubuntu 用户添加到 www-data 组:
sudo usermod -a -G www-data ubuntu
如果文件具有组写入权限,则此方法有效。否则,您必须详细说明如何执行 python 脚本,以确定它为何以 ubuntu 用户身份运行。
答案2
www-data 的 Shell 访问已被禁用。您可以让其他用户将其添加到与 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
。