如何避免用户在 Linux 中列出除其主目录之外的目录

如何避免用户在 Linux 中列出除其主目录之外的目录

我希望这是可能的。

我创建了一个名为 的 Linux 用户newuser,其根目录是一个包含网站应用程序的目录(这是我聘请来开发该网站的开发人员)。该文档根目录例如是:/home/mainuser/otherdomain.cl/customers/newwebsite

drwxrws--- 4 mainuser nobody 4096 Jul  3 19:01 newwebsite

通过查看 Apache 配置,我看到它运行的用户和组名为nobody,因此,我将新用户添加到该nobody组。这样,该用户可以读取、上传和更改该文件夹中的文件。另一方面,Apache 可以读取文件以便在 Web 浏览器中显示网站。

好吧...当该用户登录时,他会进入该网站的文档根目录,但他可以执行cd .. 并浏览其内部/home和下方其他目录的内容。

我该如何避免这种情况?由于此用户与 Apache 属于同一组,因此删除读取权限并不那么简单。如果我更改读取权限,Apache 将被限制执行目录下其他文件夹中的其他网站/home

我能完成我需要的吗?

操作系统是:CentOS Linux release 7.9.2009 (Core)

答案1

如果/home/mainuser/otherdomain.cl/customers/newwebsite是用户的主目录newuser,并且他应该能够写入该目录,那么为什么该目录归用户所有mainuser?这两个用户(mainusernewuser)是否需要同时写入该目录?

如果不是,则从组newuser中删除nobody并将该目录的所有者(如果该目录中已存在任何内容,则递归)从更改为mainusernewuserchown -R newuser /home/mainuser/otherdomain.cl/customers/newwebsite您可能还应该删除ws组的权限(除非 Web 应用程序还需要向此目录写入某些内容而不仅仅是读取,然后保留w原位)。因此,固定权限应该是:

drwxr-x--- 4 newuser  nobody 4096 Jul  3 19:01 newwebsite

确保他newuser对里面的任何其他目录都没有权限/home(当然,您需要x对上面所有目录的“其他”权限newwebsite才能访问该目录newuser- 但只有x他将无法看到内容)。

这样 Apache 将能够读取目录并newuser对其进行修改,但mainuser无法访问。新网站的工作完成后,您可以将目录及其内容的所有权更改回mainuser

如果您需要mainusernewuser能够同时访问目录,请执行与上述解决方案相同的操作,但不是通过命令更改目录的所有权,而是使用和chown保留所有权mainuser添加 ACL使newuser他能够修改目录:

setfacl -R -m u:newuser:rwX /home/mainuser/otherdomain.cl/customers/newwebsite

除了正常的“所有者、组、其他”权限外,这还为用户提供了newuser读取和修改目录及其内容的额外权限。完成后,如果想要删除额外权限,请使用以下命令:

setfacl -R -b /home/mainuser/otherdomain.cl/customers/newwebsite

相关内容