创建子域名 - 权限

创建子域名 - 权限

在我的工作中,我有时会在基于 Web 的平台 (LAOP-jQuery) 上编写小型可视化信息应用程序。我的一些同事也开始这样做,以便更好地获取信息。然而,他们并不像我一样熟悉命令行 Linux(而我实际上只是个新手),所以每次有人想创建一个新应用程序时,他们都会联系我,我会创建一个虚拟子域(服务器上的一个新文件夹),并使用请求的名称,然后让他们接管。我所做的只是复制一个文件夹,其中包含一个标准的 html-php 模板以及我们使用的一些函数和数据库连接。

我目前正在尝试通过创建一个小应用程序来限制我的工作量,该应用程序可以为我完成这项工作。这真的很简单而且很愚蠢。他们转到我提供的链接,输入密码和他们选择的域名,然后单击“创建”。在后台,会调用一个 php-system() 函数,将名为“dummy”的目录复制到 /var/www/oursite/apps/。

示例:Jane 进入“创建新域名”页面。她输入正确的密码,并为她的域名选择一个名称“foobar”。

调用一个系统函数:

系统('cp -r ../../dummy ../../apps/'.filter_input(INPUT_POST,'domain_name'));

// 转换为:system('cp -r ../../dummy ../../apps/foobar');

因此,我现在有一个目录 /apps/foobar

问题来了,“foobar”的权限如下:

drwxr-xr-x 6 www-data www-data 4096 3月 1 11:48 foobar

也就是说,由用户和组 www-data:www-data 拥有

当我使用开发人员用户“dev”连接到该文件夹​​(通过 NetBeans)时隶属于 www-data 集团我可以下载文件,但无法编辑它们,因为组 www-data 对新创建的“foobar”目录没有写权限。

我怎样才能让它按我想要的方式工作?

提前感谢 Benedikt

答案1

我得到了一位朋友的帮助。他基本上告诉了我有关 php 中的 unmask 函数的信息,尽管它可能不是最安全的方法,也不是“最佳实践”,但我还是这样做了:

$old = umask(0); // clear permissions for new files/dirs

system('cp -r ../../dummy ../../apps/'.filter_input(INPUT_POST,'domain_name')); // copy the dummy

chmod('../../apps/'.filter_input(INPUT_POST,'domain_name'),0775); // grant the group www-data permissions to edit the file/dir

umask($old); // restore original mask

如果有人有更好的方法,我仍然想听听。

感谢大家

本笃十六世

答案2

您可以采取的巧妙技巧是执行以下命令:sudo adduser yourusername www-data

功能:此命令将您添加到 www-data 组,从而为您打开访问权限,让您可以对文件进行操作。

相关内容