允许非 root 进程访问所有主目录而不影响安全性?

允许非 root 进程访问所有主目录而不影响安全性?

有什么想法如何允许一个非根进程访问(读和写)所有主目录而不影响安全性?普通用户不应该访问彼此的主目录。

欢迎所有想法,甚至是疯狂的想法(nfs 和 kerberos 设置?):)

我基本上需要为用户主目录创建 Web 界面,其中非 root 进程是 Web 服务器进程。

新文件的所有者应该是主目录用户。这可能吗?

答案1

如果您正在寻找完整的答案,我们将需要更多信息。据我了解,您可能想研究一下访问控制列表。它受到许多 Unices 的支持,并且可以让您更好地控制哪些用户可以访问哪些文件。

请谨慎使用,如果您不是 100% 舒服,请先在虚拟机中尝试。

答案2

我想困难在于主目录在您的环境中不能公开执行。

你可以放一个访问控制列表在所有主目录上,授予特定用户或组对该目录的执行权限。然后,Web 服务器将有可能访问用户主目录中的任何文件,这可能提供提升权限的方法(至少,这将扩大本地文件访问漏洞的影响)。例如,在 Solaris 或 Linux 下,确保使用该acl选项安装主文件系统,然后运行

setfacl -m user:www-data:x /home/*

(将其集成到您的帐户创建设置中)。然后告诉你的用户他们的~/public_html目录必须是用户可读的www-data;他们可以运行这个命令:

setfacl -R -m default:user:www-data:rx ~/public_html
setfacl -R -m user:www-data:rx ~/public_html

另一种可能性是将所有用户的public_html目录安装在文件系统上的单独位置。这种方法的优点是主目录的权限无关紧要;它甚至允许 Web 服务器以 chrooted 方式运行。在 Linux 下,您可以对主目录执行此操作:

mount --bind /home/joe/public_html /srv/homepages/joe

public_html目录及其内容仍然需要可供访问www-data

Linux 绑定安装方法的一个变体使用绑定文件系统文件系统。此方法适用于任何支持bindfs(大多数unices)的操作系统,并且不需要任何ACL设置,代价是下面的任何文件public_html都可供Web服务器读取。

bindfs -u www-data -p 500 /home/joe/public_html /srv/homepages/joe

相关内容