Linux目录访问问题

Linux目录访问问题

我有一个安装了 apache 的 Linux 系统,我将 Web 文件存储在 /home/username/www/sitename/htdocs 中。为了使它正常工作,我的 /home/username 具有对所有人读取和执行的权限。我知道这不是个好主意,但我是系统上唯一的用户,所以...我并不关心,也不知道该怎么做。但事实上我需要创建另一个用户。显然,这样做的问题是新用户可以访问旧用户的文件。有什么办法可以只允许 apaches www-data 用户和我自己的用户访问 /home/username?以下是我尝试过的方法:

i created a group webusers
i added my username and www-data to webusers
i removed rx permissions for everyone on /home/username
rx permissions still remain for the group on /home/username

那么 www-data 现在不应该能够访问 /home/username 吗?它与我的用户属于同一组。或者不是那么简单?我读过有主要组和次要组,但我不太明白其中的要点...

答案1

您需要对chgrp webusers希望组成员能够访问的文件进行设置。

答案2

如果应用程序需要访问文件系统实体、文件或目录,它应该拥有(除了实体本身所请求的权限之外)所有父目录的执行权限。但是,它可以拥有由组权限提供的某个目录的执行权限和其他权限提供的某个目录的执行权限:这两者没有区别如何应用程序获得其权利。

由于的权限/home可能是 755(rwxr-xr-x),因此可能存在两个问题。

首先,您需要确保 Apache 确实以 的身份运行www-data,其次,在将某个用户添加到组后,您需要重新启动以该用户身份运行的所有应用程序,因为 Linux 不会在/etc/passwd每次需要获取组列表时进行查看,而是将 GID 列表存储在内核结构中。

主组和次组仅在应用于用户时才有效。用户可以属于任意数量的组,但其中一个组被选为主组并分配给新创建的文件;其他组仅用于控制访问权限。

答案3

每个文件和目录都有一组针对所有者、组和其他人(其他所有人)的权限。

运行ls -l以找出这些是什么

要更改权限,请使用chmod,要更改所有者和组,请使用chown

man和页面提供chownchmod有关递归应用权限的提示,这使得任务变得更容易,以及要使用的语法。

  • 您创建一个组(webusers就您而言)并将文件的所有权更改/home/user1/www/sitename/htdocsuser1.webusers
  • 然后将文件rw-rw----和目录的权限以及 cgi 的权限更改为rwxrwx---
  • user2(新用户)将无法访问这些文件,除非他们属于 webusers 组

相关内容