在Windows Server上设置有限的用户帐户

我想在Windows Server上创build一个用户帐户,该帐户可以读取C:\所需的任何位,但是除D:\Special之外,不能读取D:\Special

看来,实现前者的唯一理智的方法是使这个用户成为Users组的一部分。 不幸的是,这也让用户读取所有的D:\ 。 但是,如果我为D:\添加Deny规则,则此规则也适用于D:\Special ,并且似乎不可能通过devise重写。

有没有办法做我想做的事情,即“通常” Users访问C:\ ,但在D:\除了读访问D:\Special没有访问?

由于新创build的用户默认放入此组,因此D:\中的内容不应用于“用户”。 只要从D:\和所有子目录中删除“用户”和“所有人”条目 – 不要使用“拒绝”types的ACE,因为它们实际上将拒绝每个“用户”成员的访问权限,即使用户已被其他定义的ACE授予访问权限。

有没有办法做我想做的事情,即“通常”用户访问C:\,但在D:\除了读访问D:\特别没有访问?

这取决于你的要求。 从技术上讲,用户不需要在父目录上授予访问子目录的权限。 但是,如果您需要用户能够通过Windows资源pipe理器执行点击导航,则显然如果不能列出父目录,将会出现问题。 您的select在这里:

  1. 只需授予对D:\special访问权限并删除D:\的访问权限,然后在那里创build快捷方式,映射或符号链接,以便用户不必通过D:\来导航以访问special
  2. 授予对D:\special访问权限,并且只向没有inheritance的用户/组授予“列出文件夹内容”权限。 这样用户将能够列出整个目录,但不能打开任何文件或子目录。

如果D:\中的文件或目录名不公开,那么第二种方法是首选,因为它更“有机”,更适合用户和应用程序开发人员的期望。

编辑:由于TomTom已经expression了一些关于方法#1是否真正起作用的担心,下面是我的Windows系统中的一个简短的screencap演示(抱歉,输出是德语,但是这个想法应该是显而易见的)

 C:\Users\denis>mkdir server C:\Users\denis>mkdir server\fault C:\Users\denis>echo "test" > server\fault\text.txt C:\Users\denis>cacls server /d denis Sind Sie sicher (J/N)?j Bearbeitetes Verzeichnis: C:\Users\denis\server C:\Users\denis>dir server Volume in Laufwerk C: hat keine Bezeichnung. Volumeseriennummer: C4CB-6B0E Verzeichnis von C:\Users\denis\server Datei nicht gefunden C:\Users\denis>dir server\fault Volume in Laufwerk C: hat keine Bezeichnung. Volumeseriennummer: C4CB-6B0E Verzeichnis von C:\Users\denis\server\fault 17.12.2011 21:08 <DIR> . 17.12.2011 21:08 <DIR> .. 17.12.2011 21:08 9 text.txt 1 Datei(en), 9 Bytes 2 Verzeichnis(se), 14.307.930.112 Bytes frei C:\Users\denis>type server\fault\text.txt "test" 

有没有办法做我想做的事情,即“通常”用户访问C:\,但在D:\除了读访问D:\特别没有访问?

不,因为需要访问D:\才能访问D:\ Special。 无论谁提出这个想法,在计划之前都会在门外留下他的常识。

这是不可能的,并且与windows无关 – 在任何分层文件系统中都是一样的。 anotehr文件夹中的文件夹无法访问根文件夹无法访问。