如何限制用户访问 /home 目录,同时仍允许其他用户访问所有 /home/users

如何限制用户访问 /home 目录,同时仍允许其他用户访问所有 /home/users

我的问题有点复杂。基本上,我想让用户通过 ssh/sftp 访问服务器的 /home/user 目录。我想限制他们查看其他 /home/user 目录的能力。够简单了吧?不。我想让一个单独的用户(比如 apache)也拥有所有 /home 目录的读取权限。

目前我拥有以下权限:

drwxr-xr-x  14 root root   4096 Apr  3 15:41 home
...
cd /home
ll
drwxr-x--- 2 user1   user1   4096 Feb 10 14:16 user1
...

并且我已将用户“apache”添加到所有用户的组中:

groups apache
apache : apache user1

这种配置的问题是,当用户 1 登录时,他可以查看 /home/*

如果我将 /home 目录的 chmod 改为 750,那么当用户尝试登录时,他就无法进入他/她自己的文件夹。

有什么建议么?

答案1

您能否将组访问权限更改为只读,将 Apache 添加到该组,并限制其他所有人的所有权限?从而允许拥有者随意修改他们的文件,而 Apache 和其他服务只能读取?

我并不是权限专家,但我认为这会起作用。

答案2

我的理解是,您希望大多数用户无法看到 的内容/home,但仍然允许他们正常登录和使用系统,并允许组apache查看 的内容/home

对于目录,用户必须具有执行权限才能对内容执行任何操作,包括cd对目录执行任何操作。因此,没有执行权限的用户/home甚至无法看到他们的主目录存在,更不用说在其中启动 shell 了。

尝试这个:

sudo chown root:apache /home  # owner=root, group=apache
sudo chmod 751 /home          # rwxr-x--x

这应该允许apache组(并阻止所有其他人)列出/home内容,同时仍允许每个用户访问他们各自的主目录。

/home请注意,如果用户已经知道目录名称,这并不妨碍用户获取目录信息。ls /home应该不起作用,但是ls -ld /home/$anything 将要。您可以apache通过将非用户设置为以下方式来阻止其在其他人的主目录中执行任何操作$user:apache rwxr-x---

sudo chown $user:apache ~$user  # owner=$user, group=apache
sudo chmod 750 ~$user           # rwxr-x---

但是,您需要为每个具有主目录的现有用户以及每个创建的新用户执行此操作。

相关内容