登录时更改访问者的权限组

Posted

技术标签:

【中文标题】登录时更改访问者的权限组【英文标题】:Change the visitor's permission group on login 【发布时间】:2014-05-28 10:30:48 【问题描述】:

我的服务器不允许用户在 php 中写入文件,因为据我看这与用户权限有关。但是解决这个问题会导致一个重大的安全漏洞。有关这些解决方案的更多信息,请参阅此处php won't create file 和此处How do I give PHP write access to a directory?

所以我的问题不是更改服务器权限,是否可以仅在用户登录应用程序后更改用户的权限或权限组?运行 login() 函数后的 php 术语。

我想要这个,因为我正在开发一个应用程序,它是 askozia(呼叫中心)管理面板上的扩展。每个用户都可以更改和查看自己的数据,而无法更改和查看管理员设置和其他用户的数据。然而,所有这些数据并没有保存在数据库中,而是保存在一个 XML 文件中,因此用户需要能够写入这个 XML 文件。

【问题讨论】:

【参考方案1】:

您不应该更改用户(这将是一个更大的安全漏洞)。您希望当前用户拥有一些权限。

对于 Windows: http://technet.microsoft.com/en-us/library/bb727008.aspx

对于 Linux http://www.computerhope.com/unix/uchmod.htm

不要忘记:您的网络服务器的用户帐户不是网站前面的用户。您必须关心“网站查看者”权限。但是您的网络服务器帐户应该拥有他需要的所有权限。如果您要更改用户,那将是相同的。

【讨论】:

【参考方案2】:

文件系统上的权限来自运行 PHP 实例的用户。您无法在运行时更改权限,但您可以使用 *nix 上的 sudo(以及 Windows 下的 runas)在不同的用户下启动不同的应用程序来创建、修改和读取文件。

当你想使用标准的 PHP 文件操作时,你可以在它试图更改文件时检查“网络用户”以防止恶意修改(但这仍然需要 PHP 实例对文件具有写入权限)。

【讨论】:

以上是关于登录时更改访问者的权限组的主要内容,如果未能解决你的问题,请参考以下文章

文件访问权限:更改用户ID

如何在事件订阅者中访问Symfony 3.3中的登录用户,而不会丢失Web分析器

登录不了高德地图显示访问被拒绝使用代理权限

如何使用 JWT 处理更改的权限

[Linux] liunx文件系统下的权限管理

未为 Google OAUTH 登录配置访问权限