chmod 700 是否会对其他用户隐藏目录或仅限制他们显示目录内的文件?

chmod 700 是否会对其他用户隐藏目录或仅限制他们显示目录内的文件?

我的主目录包含“project”目录,其中包含“confidential”子目录,“confidential”包含一些文件。

我只是希望只有我能访问该文件夹,其他用户无法访问。

我运行了命令

Me:~ me$ chmod -R 700 project/confidential 

Me:~ me$ su Bob

bob:/home/me/project$ ls

code confidential

这里向 Bob 显示了两个文件夹,但是,如果 Bob 尝试列出机密文件,他就无法访问它们。

那么,chmod 不会对其他用户隐藏该文件夹吗?我希望其他用户只能访问不保密的“代码”目录,我该如何隐藏它?

答案1

您当前的目录树类似于:

/home/me/project/
/home/me/project/code/
/home/me/project/confidential/

confidential如果您希望其他用户能够找到并访问除 之外的任何目录,则不能隐藏目录confidential。父目录 ( /home/me/project/) 显然需要其他用户具有读取和执行权限,以便他们能够列出project目录的内容并发现名为codeexits 的目录。因此,他们可以发现confidential除了目录之外还存在另一个目录(称为 )code


要完全隐藏目录confidential,您可以将其放入另一个子目录(例如/home/me/project/etc/),并授予其(etc目录)700 权限。这样,其他用户将看到该etc目录,但无法更改或列出它(或其任何子目录)。因此confidential目录将完全隐藏。


另一个选择可能是这样的:

chmod 711 /home/me/project/
chmod 700 /home/me/project/confidential/

这样,您就阻止其他用户读取project目录的内容:ls -l /home/me/project/将给出Permission denied错误。但是,他们将能够更改目录project或任何其他子目录他们知道它存在并列出它:ls /home/me/project/code将会起作用,只要code目录具有“正常”(755)权限。

但是,在此配置中,请注意其他用户可能能够运行以下命令的输出:

$ ls /home/me/project/confidential
ls: cannot open directory '/home/me/project/confidential': Permission denied
$ ls /home/me/project/other
ls: cannot access '/home/me/project/other': No such file or directory

因此,即使这个解决方案也可能不完美,因为其他用户可能能够确定隐藏目录的名称通过反复试验

相关内容