目前正在进行的的工作是:
在服务器上我有文件夹
\some\folder\share\alices-folder
\some\folder\share\bobs-folder
以及用户alice
和bob
。该文件夹\some\folder\share
已共享。
在 Windows 客户端计算机上,我有本地帐户alice
和bob
。当他们连接到服务器时,他们只能看到\some\folder\share
文件夹的内容。也就是说,他们可以看到文件夹alices-folder
和bobs-folder
,但无法访问父文件夹,如\some\folder
或\some
。
现在,我想要一个不同的文件夹结构(出于现在不感兴趣的原因):
\other\folder\users\alice\share
\other\folder\users\bob\share
当alice
连接到服务器时,她只能看到文件夹的内容\other\folder\users\alice\share
,而不能访问\other\folder\users\alice
或之类的父文件夹\other\folder\users
。
当然,当bob
从同一台客户端计算机连接到服务器时,同样的情况也适用于他,因此他再次应该只能看到文件夹的内容\other\folder\users\bob\share
,而不能访问父文件夹,如\other\folder\users\bob
或\other\folder\users
。
这可能吗 - 无需为服务器提供不同的别名?
更新
抱歉,我忘了写我已经知道如何使用权限限制访问。因此,当我写下已经有效的方法时,我已经根据需要限制了访问。
但我仍然想知道我所想得到的东西是否可以通过“简单”的方式实现——一个我不会称之为简单的分布式文件系统。;-)
答案1
如果您在服务器上运行 Active Directory,最简单的方法就是使用组策略来管理网络共享。
这使您可以将驱动器号链接到包含用户名的文件夹,并且用户不会注意到它有所不同。
此外,新用户将自动获得网络驱动器,而无需再次设置共享。
答案2
听起来你的做法确实不对。考虑阅读文件服务器上的共享和 NTFS 权限它包含有关共享和 NTFS 权限交互的详细信息。
一般来说,只要为共享上的每个人提供读取权限并使用 NTFS 权限来限制访问,就不会有什么大问题。如果用户看到其他用户的文件夹,请考虑调查基于访问的枚举但据我所知,这意味着您必须运行 DFS。
通过您提供的选项,您可能需要为 alice 和 bob 创建单独的共享(因此 share_bob、share_alice)并为单个用户安装它们。
答案3
从我从您的问题中了解到的情况来看,这是一个非常简单的文件共享场景。
当然,我假设当您写入\other\folder\users\alice\share
或其他以 开头的路径时\
,这些文件夹位于驱动器的根目录D:
,但您不想透露驱动器号。如果不是,只需将D:
我的答案替换为您的情况的任何正确内容即可。
请按照以下步骤操作:
- 登录服务器(通过控制台或远程桌面)
- 打开文件资源管理器。(在 Windows Server 2012 之前,它被称为 Windows 资源管理器。)
- 导航到 'D:\other\folder\users\alice`
- 右击
share
并选择“属性”。(或者直接选择share
并按下ALT+Enter组合键。)“共享属性”对话框将会打开。 - 找到“共享”选项卡。(对于旧版本的 Windows Server,此步骤和以下步骤可能略有不同。)
- 点击“高级共享”按钮,打开“高级共享”对话框。
- 勾选“共享此文件夹”框。
- 在“共享名称”字段中,输入“For Alice”(或任何您喜欢的名称,请注意命名规则)。
- 单击“权限”按钮。
- 在下一个对话框中,使用 Remove 按钮删除列表中的所有用户,并使用 Add... 按钮添加 Alice。然后,选择 Alice,并在“完全控制”前面的复选框中勾选“允许”。按 OK 关闭对话框。
- 按“确定”关闭“高级共享”对话框。现在您回到“共享属性”对话框。
- 导航到“安全”选项卡,并确保以允许 Alice 访问的方式授予 NTFS 权限。有人可能会说,这一步太复杂了,你需要两三章的 Windows Server 书籍才能理解。我想说是的,但你可能不需要在这里做任何事情。
- 单击“确定”关闭“共享属性”对话框。
- 测试您到目前为止所做的工作。如果您
\\servername
在文件资源管理器中导航到(或您的服务器的名称),您必须能够看到一个新For Alice
共享,它有一个文件夹的图标。只有 Alice 才能打开它。 - 为 Bob 重复这些步骤。
还有其他几种方法可以实现这一切:
- 使用 Microsoft 管理控制台的计算机管理管理单元
- 使用“管理我的服务器”应用
- 使用 PowerShell(我最喜欢的,但在旧版本中不可用)
- 使用现已过时且弃用的命令提示符!
但是您没有指定 Windows 版本,因此我编写了 GUI 解决方案。