linux - 从 perl 网络服务器访问用户文件

标签 linux perl

我有一个 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 设置 docrootscriptalias

长话短说,使用 Apache 的(经过充分测试和详细记录的)功能来管理用户身份可能比在 Perl 中执行此操作或创建您自己的 suid 包装器更好。众所周知,要做到这一点非常困难。

关于linux - 从 perl 网络服务器访问用户文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17114153/

相关文章:

python - 崩溃 MR-3020

linux - 引用内核模块中的 console_loglevel ERROR

perl - 为什么在 Perl 中将文件读入内存时会占用这么多内存?

c++ - 如何将 perl + cpp 转换为独立应用程序

linux - Jenkins - 在中止主构建之前运行子构建

linux - 等待零信号量操作的确切功能是什么?

linux - 当我运行 ssh 到远程服务器的 bash 脚本并运行 wget 之类的命令时,它会保存在源服务器上而不是目标服务器上吗?

sql-server - 从 Linux 使用 Perl 连接到 SQL Server 2012 时出现问题

perl - 将参数传递给脚本,得到 : "Use of uninitialized value $ARGV[0]"

regex - 在数组中携带多个捕获组但只匹配一个组