在根之前存储有价值的高分辨率图像

我有一个繁忙的名人股票照片网站,我试图隐藏在网站根后面的照片,所以他们不能通过URL访问,但我的ASP脚本可以读取照片,并将其发送到浏览器的二进制。 我正在使用Windows Server 2008 R2。

我想知道包含照片的文件夹应包含哪些安全设置。 我的网站是坐在c:\inetpub\vhosts\mydomain\httpdocs\website.asp和照片需要存储在D驱动器在这里: d:\web-library-photos\thumbs\group233\24wedfsdf232eraa.jpg

我确实设法通过点击d:\web-library-photos属性中的“共享”,然后给予“每个人”读/写权限,但是我觉得我做错了什么。

我应该如何做这个文件夹安全,但可以访问服务器pipe理员帐户和我的网站脚本? 我应该申请什么“共享”属性? 我应该分享吗?

在这里输入图像说明

您的ASP应用程序在本地服务器计算机上运行,​​并可以通过本地驱动器号和path“D:…”访问图片文件。 您正在查看的“共享”function用于允许客户端计算机通过CIFS / SMB文件共享协议访问文件夹。 在描述的应用程序中不需要使用“共享”。

您的ASP应用程序在由IIS设置的安全上下文下运行。 默认情况下,匿名用户作为IUSR_machine-name帐户(在IIS安装过程中创build的帐户)执行ASP应用程序。

您的ASP应用程序访问的文件夹/文件的NTFS访问控制列表(ACL)是必要的,允许ASP应用程序访问这些文件。 ACL中需要设置的权限取决于运行ASP应用程序的安全上下文。 如果应用程序以匿名用户身份运行(即,远程用户不执行Windows身份validation),那么IUSR_machine-name用户帐户需要具有授予该文件夹的权限。 股票NTFS权限通常允许“用户/读取”,这将是足够的访问。

编辑:

您的屏幕截图显示了ACL – 也就是授予特定用户和组的权限 – 应用于给定文件夹。 这不是服务器计算机“知道”的所有用户帐户的详尽列表。 该详尽列表可以在“计算机pipe理”工具中的“本地用户和组”工具中访问。

在Windows Server计算机上执行的每个操作都是在“安全上下文”中执行的。 应用程序要求操作系统代表用户执行的每个操作必须归功于给定的用户或计算机的操作系统本身(出于所有意图和目的,它也可以是名为“SYSTEM”的用户)或“LocalSystem”和一个特殊的安全标识符序列号,将其标识为特定的特殊用户)。

当用户访问您的ASP脚本来查看图像时,IIS将执行您的脚本,然后您的脚本会要求操作系统读取文件。 如果用户没有通过IIS中的一种内置身份validation机制向IIS进行身份validation,则假定用户对操作系统的访问是匿名的,并使用用户帐户IUSR_machine-name执行。 (您的ASP应用程序可能内置了身份validation组件,但是这不会影响Windows对远程用户“谁”的概念 – 只能通过使用内置身份validationfunction受传统ASP应用程序的影响的IIS。)

如果Windows安全子系统如何评估文件或文件夹上的ACL来确定用户是被授予还是拒绝访问,那么这将远远超出您的问题的范围。 您提到,这不是你所熟悉的,所以我build议找一个解释NTFS权限如何工作的参考。 您可以在具有NTFS权限的Windows PC上进行实验,也可以创build本地用户帐户以了解它是如何工作的。