如何防止其他人看到我的主目录中除公共文件夹之外的内容?

如何防止其他人看到我的主目录中除公共文件夹之外的内容?

在 Mac OS X 上,阻止人们查看主目录中包含的文件相对容易:chmod 700 ~

我想执行此操作的一个变体。我希望当人们打开 /Users/stalepretzel 时,他们只会看到列出的一个文件夹:Public。从那里,我想设置 Public 的权限,以便人们可以进入该文件夹并阅读未指定的任何内容。

再次澄清一下,我希望另一个非管理员用户可以执行:

$ cd /Users/stalepretzel; ls
Public
$ cd Public
All     the     contents     of
my      public  folder

答案1

恐怕这是不可能的。用户无法访问他没有读取权限的目录树中的任何文件或文件夹。如果用户对某个目录(及其所有超目录)有读取权限,他可以ls查看其中包含的所有文件。

它可能感觉不太整洁,但如果你想阻止用户访问ls你的主目录,你必须Public在 之外创建一个地方~。如果从 访问你自己的公共目录对你来说更方便~/Public,可以创建一个符号链接(例如 ln -s ~/Public /Users/Shared/stalepretzel)。

答案2

我认为你不可能做得比(标准 Unix 的东西)更好:

$ chmod 711 ~/
$ chmod g-rx,o-rx ~/*
$ chmod 755 ~/Public

使您的主目录可遍历但不可读,并且除“公共”之外的所有其他目录都无法访问。

[Unix 权限回顾 - 目录上的执行位允许遍历,读取位允许查看内容。]

不幸的是,这不允许任何人看到您的公共文件夹存在 - 并且没有办法做到这一点,因为公共文件夹的存在取决于能够读取您的主目录,因为那是包含它的“文件”(名称在父目录中,权限是文件 inode 的一部分。)

答案3

打开你的主目录进行阅读:

$ chmod 0744 ~

并隐藏其中的所有内容:

$ chmod 700 ~/*

然后只打开公共目录:

$ chmod 0744  ~/Public

注意:编辑命令顺序以使其正确

相关内容