从perl Web服务器访问用户文件

时间:2013-06-14 17:33:12

标签: linux perl

我有一个perl服务器,它需要能够读取用户的文件和数据,并写入它们。用户通过LDAP进行身份验证,因此我可以验证密码并了解其主目录。

从这里开始,我需要一些方法让这个网络服务器(以www-data运行)来访问他们的文件。我已经考虑过通过su/sudo运行每个命令,但是当我只需要在它们的主目录中打开/写入/关闭/ glob文件时,这真的不是最佳的。

这是否有标准做法?到目前为止,我还没有找到任何东西。

注释

  • 我希望这些文件位于其主目录中,因为用户将在其中进行SSH连接并运行其他无法通过网络获得的命令
  • 当然,通过HTTPS建立网络连接。

相关

2 个答案:

答案 0 :(得分:2)

你在运行Apache吗?这听起来像是WebDAV的工作。

问题是您的Web服务器是以www-data运行的。按照设计,它将无法更改任何文件的所有者。其他一些特权进程需要代表网络服务器更改所有权。

您可以编写一个最小集合UID脚本来处理更改文件的所有权并删除它们,但这条路径充满了危险(特别是如果您之前从未编写过setUID程序。)

答案 1 :(得分:2)

您可能想重新考虑您的架构。对于类似ISP的配置中的虚拟主机来说,这听起来像是一项工作。

首先,阅读Apache VirtualHost documentation中的“动态配置的群发虚拟主机”页面。然后阅读有关如何run each virtual host as a different user

的内容

根据这种方法,对于以$user.example.com运行的每个用户,您将拥有一个vhost;当Apache为vhost分配一个worker时,fork会以适当的用户身份运行suid。然后为vhost设置docrootscriptalias,指向站点代码。

长话短说,使用Apache(经过充分测试和记录良好)的功能来管理用户身份可能比在Perl中执行或者自己的suid包装更好。很难说得对。