如何覆盖/ tmp中Apache / PHP存储的文件的默认权限?

显然,我在Linux上. PHP脚本似乎在’www-data用户下运行.我还可以看到上传文件最终出现在认的/ tmp目录中,每个目录的名称都以“PHP”为前缀.我猜所有的标准.所有这些文件的权限是-rw ——-即600,用户www-data’,组’www-data’.问题是我有一个用户’postgres’下运行的Postgresql数据库服务器,它需要能够读取这些文件,因为它将它们的内容插入到数据库中.目前它不能,显然.当然,作为一项规则,数据库查询函数用户连接到数据库的任何地方运行(我也以“www-data”形式连接),但这里我们讨论的服务器端函数必须被调用为’postgres’ .这是Postgresql限制,无论好坏.

我确实考虑过安全性,但我认为如果我允许postgres读取这些文件,或者放宽这些文件的权限,世界就不会受到影响.

如何控制使用这些文件创建的权限?显然,PHP会自己创建它们,例如在POST文件上传,但我找不到任何配置开关.此外,我的/ tmp具有权限’drwxrwxrwt'(777)并且由用户’root’,组’root’拥有.

我试图用’PHP_value upload_tmp_dir’更改上传目录,但它似乎没有效果,似乎 – PHP仍然在/ tmp中存储临时文件.

我不想使用’move_uploaded_file’或’chmod’,因为它们写入文件系统,我想避免这种情况,除了数据库服务器插入记录.

解决方法:

您可以尝试在/ etc / apache2 / envvars中更改Apache的umask设置

我没试过这个,但是把它添加到我的envvars文件中,它看起来像这样:

# envvars - default environment variables for apache2ctl

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2.pid

## The locale used by some modules like mod_dav
export LANG=C
## Uncomment the following line to use the system default locale instead:
#. /etc/default/locale

export LANG

umask 022

据我所知,这将使Apache创建具有644权限的文件.rw-r – r–

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...