我希望这是可能的。
我创建了一个名为 的 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
?这两个用户(mainuser
和newuser
)是否需要同时写入该目录?
如果不是,则从组newuser
中删除nobody
并将该目录的所有者(如果该目录中已存在任何内容,则递归)从更改为mainuser
:newuser
。chown -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
。
如果您需要mainuser
和newuser
能够同时访问目录,请执行与上述解决方案相同的操作,但不是通过命令更改目录的所有权,而是使用和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