![在 Windows Server 上设置受限用户帐户](https://linux22.com/image/570652/%E5%9C%A8%20Windows%20Server%20%E4%B8%8A%E8%AE%BE%E7%BD%AE%E5%8F%97%E9%99%90%E7%94%A8%E6%88%B7%E5%B8%90%E6%88%B7.png)
我想在 Windows Server 上创建一个用户帐户,该帐户可以读取执行程序所需的任何部分,但除了之外C:\
没有读取权限。D:\
D:\Special
似乎实现前者的唯一明智方法是让该用户成为Users
组的一部分。不幸的是,这也赋予了用户对 的所有内容的读取权限D:\
。但是,如果我为 添加了一条拒绝规则D:\
,则该规则也适用于D:\Special
,并且似乎在设计上无法覆盖。
有什么方法可以实现我想要的效果,即“通常”Users
访问C:\
,但D:\
除了读取 之外没有其他访问权限D:\Special
?
答案1
由于新创建的用户默认被归入此组,因此 D:\ 上的内容不应供“用户”使用。只需从 D:\ 及其所有子目录中删除“用户”和“所有人”条目即可 -不是使用“拒绝”类型的 ACE,因为它们实际上会拒绝“用户”成员的访问权限,即使用户已被其他定义的 ACE 授予访问权限。
有什么方法可以实现我想要的效果,即“通常”用户访问 C:\,但对于 D:\ 除了对 D:\Special 的读取访问权限外没有其他访问权限?
这取决于您的要求。从技术上讲,用户不需要在父目录上授予任何权限即可访问子目录。但如果您需要用户能够通过 Windows 资源管理器进行点击导航,那么如果无法列出父目录,这显然会成为一个问题。您的选择如下:
- 只需授予
D:\special
和删除对 D:\ 的访问权限,然后在那里创建快捷方式、映射或符号链接,这样用户就不必通过 D:\ 来访问special
- 授予访问权限
D:\special
,并且仅向相关用户/组授予“列出文件夹内容”权限无继承。这样用户将能够列出整个目录,但不能打开任何文件或子目录。
如果 D:\ 中的文件或目录名称没有暴露机密信息,则应优先采用第二种方法,因为它更“有机”,并且更能满足用户和应用程序员的期望。
编辑:由于 TomTom 对方法 #1 是否真的开始工作,这是我的 Windows 系统的一个简短的屏幕截图演示(抱歉,输出是德语,但这个想法应该是显而易见的)
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"
答案2
有什么方法可以实现我想要的效果,即“通常”用户访问 C:\,但对于 D:\ 除了对 D:\Special 的读取访问权限外没有其他访问权限?
不是,因为需要先访问 D:\ 才能访问 D:\Special。想出这个主意的人在制定计划之前就已经抛弃了自己的常识。
这根本不可能,而且与 Windows 无关 - 在任何分层文件系统中都是如此。如果没有对根文件夹的访问权限,则无法访问另一个文件夹中的文件夹。