首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dba_open文件权限

dba_open文件权限
EN

Stack Overflow用户
提问于 2015-02-04 02:21:33
回答 1查看 273关注 0票数 1

我尝试在php脚本(handler.php)中打开不在DocumentRoot(/var/www/api)下的目录中的bdb文件:

代码语言:javascript
复制
<?php
$db = dba_open("/data/bdb/current.dbm", "r", "db4");

...
?>

在apache日志中:

代码语言:javascript
复制
[Mon Feb 02 23:03:59 2015] [error] [client 54.149.49.76] PHP Warning:  dba_open(/data/bdb/current.dbm): failed to open stream: Permission denied in /var/www/api/handler.php on line 6

/data/bdb/current.dbm是指向/data/bdb/test.dbm的符号链接

我确保目录、符号链接和文件权限都是world +rw,并且仍然收到权限错误。

我这样做了:"su - apache;php test.php“,其中test.php包含dba_open调用,它工作得很好。它在httpd下是不能工作的。

我假设我需要在apache conf中设置一些指令才能正常工作,我只是不知道具体是什么。

EN

回答 1

Stack Overflow用户

发布于 2015-02-04 02:47:43

创建一个新组(www-pub)并将用户添加到该组

groupadd www-pub

usermod -a -G www-pub usera ##必须使用-a附加到现有组

usermod -a -G www-pub userb

组用户A ##显示用户的组

将/var/www下的所有内容的所有权更改为root:www-pub

chown -R根目录:www-pub /var/www递归的## -R

将所有文件夹的权限更改为2775

Chmod2775 /var/www ##数据组id,7=rwx代表所有者(根用户),7=rwx代表组(www-pub),5=rx代表所有用户(包括apache www- 2=set用户)

设置组ID (SETGID)位(2)可将组(www-pub)复制到在该文件夹中创建的所有新文件/文件夹。其他选项是SETUID (4),用于复制用户id,以及粘滞(1),我认为它只允许所有者删除文件。

有一个-R递归选项,但它不会区分文件和文件夹,所以你必须使用find,如下所示:

查找/var/www -type d -exec chmod 2775 {} +

将所有文件更改为0664

查找/var/www -type f -exec chmod 0664 {} +

将用户的umask更改为0002

umask控制默认的文件创建权限,0002表示文件将具有664和目录775。设置它(在我的例子中是通过编辑/etc/profile底部的umask行)意味着由一个用户创建的文件将可以被www-group中的其他用户写入,而不需要chmod它们。

通过创建文件和目录并使用ls -l验证所有者、组和权限来测试所有这些。

注意:您需要注销/登录才能使对组所做的更改生效!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28306011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档