在 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
注意:编辑命令顺序以使其正确