防止文件夹所有者删除文件夹

防止文件夹所有者删除文件夹

假设我的 ubuntu 13.04 系统上运行着一个网站托管服务器。对于每个想要在我的服务器上托管网站的客户,我都会创建一个用户并将其添加到名为“客户”的组中。所有这些客户都会在我的/home/文件夹中获得一个私人文件夹,其中有一个不应删除的文件夹树。假设我的一位客户名叫 bob。他将获得/home/bob/他的私人文件夹,但该文件夹还应包含如下文件夹树:

/home/bob/
     |
     |-> /www/
         |
         |-> /bobsdomain.com/
         |              |
         |              |-> /public_html/
         |              |-> /cgi_bin/
         |
         |-> /bobsotherdomain.com/
                        |
                        |-> /public_html/
                        |-> /cgi_bin/

显然,Bob 应该是 的所有者,/home/bob因为否则 Bob 就无法在其主文件夹中创建或删除文件和文件夹。但是,/www/和 或/public_html/之间的所有内容/cgi_bin/都不应被删除。/public_html//cgi_bin/及以下的所有内容都应由 Bob 选择是否删除。

为了做到这一点,我是否可以将/www//public_html/或之间的文件夹设置/cgi_bin/为 root 的属性,或者这是否会导致 bob 无法将文件添加到/public_html//cgi_bin/文件夹?
如果这不可能,我还应该用什么其他方式来做到这一点?

答案1

我找到了问题的答案。我将不想删除的文件夹的所有者更改为 root:root,然后使用 chmod 命令修改这些文件夹的权限,如下所示:粘性位'(1775 而不是 0775)。这样,每个人都可以通过 ftp 随意添加文件和文件夹,但他们无法删除我用粘滞位保护的文件夹,因为您必须是文件或文件夹所有者才能执行此操作。

答案2

您说得对。如果您想阻止文件创建和删除(包括删除目录)等操作,则用户不能对父文件夹具有写访问权限。在这种情况下,要保留/home/<user>/www/<domain>/public_html/home/<user>/www/<domain>/cgi_bin,用户不能对具有写访问权限/home/<user>/www/<domain>。为此,域目录应由其他人拥有,并且不可由任何人写入。请注意,它root也不必是:nobody用户应该没问题。

/home/bob
`-- [drwxrwxr-x bob     ]  www
    |-- [drwxrwxr-x nobody  ]  bobsdomain.com
    |   |-- [drwxrwxr-x bob     ]  cgi_bin
    |   `-- [drwxrwxr-x bob     ]  public_html
    `-- [drwxrwxr-x nobody  ]  bobsotherdomain.com
        |-- [drwxrwxr-x bob     ]  cgi_bin
        `-- [drwxrwxr-x bob     ]  public_html

相关内容