我的问题有点复杂。基本上,我想让用户通过 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---
但是,您需要为每个具有主目录的现有用户以及每个创建的新用户执行此操作。