![从/ var / www /文件夹(作为www用户)调用php函数,该函数位于/ var(或任何文件夹)中的文件中(具有root权限?)](https://linux22.com/image/72804/%E4%BB%8E%2F%20var%20%2F%20www%20%2F%E6%96%87%E4%BB%B6%E5%A4%B9%EF%BC%88%E4%BD%9C%E4%B8%BAwww%E7%94%A8%E6%88%B7%EF%BC%89%E8%B0%83%E7%94%A8php%E5%87%BD%E6%95%B0%EF%BC%8C%E8%AF%A5%E5%87%BD%E6%95%B0%E4%BD%8D%E4%BA%8E%2F%20var%EF%BC%88%E6%88%96%E4%BB%BB%E4%BD%95%E6%96%87%E4%BB%B6%E5%A4%B9%EF%BC%89%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E4%B8%AD%EF%BC%88%E5%85%B7%E6%9C%89root%E6%9D%83%E9%99%90%EF%BC%9F%EF%BC%89.png)
我编写了一个脚本,它“遍历”/var/www/xyz 并扫描文件夹等。这些文件夹都是“用户绑定”的,因此单个文件夹的权限设置为特定用户。
以 root 身份运行此脚本(例如在 /root 中,'php myscript.php')会返回预期结果。
现在我想将结果传输到浏览器:在 /var/www/newfolder 中我创建了一个文件index.php,只需将脚本粘贴到该文件中并尝试(在浏览器中),当然失败了。它只是向我显示了结果的一小部分(显示用户特定的文件夹名称,当没有深入时)。很确定这是一个许可的事情,作为 www 用户。
唷,所以问题是:是否有可能将带有函数的文件(例如)放入 /var 中,并允许浏览器中的 www 用户仅调用该函数?如果是,有什么有用的链接或提示吗? (我用谷歌搜索了很长时间,但我发现的东西毫无价值)
或者
调用我的 /var/www/newfolder/ 中的函数,该函数有足够的权限来扫描用户文件夹吗? (我想这对于安全至关重要)
答案1
您对安全的担忧是正确的。您可以使用 setuid 位创建一个可执行文件,该可执行文件以可执行文件的所有者(而不是调用该可执行文件的用户)身份运行。如果可执行文件由 root 拥有,那么它将以 root 身份运行(确保不要向除 root 之外的任何人授予写入权限)。如果您想限制谁可以运行可执行文件,请使用组权限。
用于chmod o+s <path to script>
打开 setuid 位。 (chmod 4750 <path to script>
允许所有者组作为文件所有者读取和执行文件,但不允许其他用户访问。)。
不需要脚本以 root 身份运行的方法是设置要扫描的文件夹的组所有者和权限,以便 www 用户可以读取该文件夹的内容。在文件夹上使用 setgid 位将导致在这些文件夹中创建的所有文件和文件夹继承组所有权。
用于chmod g+s <path to folder>
打开 setgid 位。要将/var/www/
文件夹(和子文件夹)设置为分组www-user
并允许该组中的用户访问所有文件夹,请使用(以 root 身份):
chgrp -R www-user /var/www/
chmod -R g+srX /var/www/