我有一个 perl 服务器,它需要能够读取用户的文件和数据,并写入它们。用户通过 LDAP 进行身份验证,因此我可以验证密码并了解他们的主目录。
从这里我需要一些方法让这个网络服务器(作为 www-data
运行)访问他们的文件。我考虑过通过 su/sudo
运行每个命令,但当我只需要在它们的主目录中打开/写入/关闭/glob 文件时,这确实不是最佳选择。
这有标准做法吗?到目前为止,我还没有找到任何东西。
注释
- 我想要他们的主目录中的文件,因为用户将通过 SSH 登录并在这些文件上运行其他无法通过网络访问的命令
- Web 连接当然是通过 HTTPS 建立的。
相关
最佳答案
您可能需要重新考虑您的架构。这听起来像是 ISP 类配置中虚拟主机的工作。
首先,阅读 Apache VirtualHost documentation 中的“动态配置的海量虚拟主机”页面.然后阅读如何run each virtual host as a different user
在这种方法下,您将为每个以 $user.example.com
运行的用户拥有一个虚拟主机;当 Apache 为 vhost fork 出一个 worker 时, fork 以适当的用户身份运行 suid。然后为指向站点代码的 vhost 设置 docroot
和 scriptalias
。
长话短说,使用 Apache 的(经过充分测试和详细记录的)功能来管理用户身份可能比在 Perl 中执行此操作或创建您自己的 suid 包装器更好。众所周知,要做到这一点非常困难。
关于linux - 从 perl 网络服务器访问用户文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17114153/