关于上传文件后读写文件的权限问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例:
需要给文件夹C:\WINDOWS\\Framework\v2.0.50727\Temporary Files添加用户"AD\name"的权限
参考1:在Web.Config中有一个
元素,可以使其impersonate属性为true来设置本应用程序的身份,从而达到扮演其他账号身份的目的。而具体的“扮演”有两种方式:
(1)、
这种方式的话进程将扮演http/https请求者的身份。而具体是什么帐号,就跟IIS的安全性设定有关了:
如果IIS允许匿名访问,那么被扮演的将是Iuser_Machine帐号(因为默认的匿名访问账号是Iuser_Machine,当然如果修改过,那被扮演的就是修改过的帐号)。
如果IIS不允许匿名访问,那么浏览器请求者的身份肯定是一个Windows帐号,这个帐号就是被扮演的对象。
(2)、
这种方式就直接设置所扮演的固定用户身份
第(2)种扮演方法将把password明文的写在Web.Config里,很不安全
PS1:微软不推荐使用扮演,无论扮演哪个帐号,一方面是安全性问题(被扮演的帐号可能有一些程序并
不需要的多余权限,可能被利用),另一方面是可伸缩性问题(Scalability),因为在访问SQL Server等资源时,无法利用连接池等手段。
PS2:在\%windows%\\Framework\Version\Config目录中找到machine.config文件,其中有一个
其中的userName="machine"就是指定使用本机ASPNET帐号(.\ASPNET)作为工作进程的
默认账号。
这个默认帐号是可以修改的,如果开发人员将userName修改为一个域用户帐号:
那么工作进程的身份就变成了domain\user。只要这个域用户帐号拥有需要的权限,那么machine.config所在机器上所有程序都可以访问域中其他服务器的资源,包括存取用网络共享
路径指定的文件。
如果指定userName="system",那么程序将以LocalSystem身份运行,可以存取几乎所有本地资源,因此非常危险!
无论machine.config指定哪个默认帐号,这个默认帐号都可以被应用程序的web.config设置的Impersonation覆盖,即特定应用程序可以以其他身份运行。
参考2:如果你的Web服务器上有多个应用程序,或者你的应用程序需要更高的权
限以执行特殊的操作,那么可以为程序设置一个单独的账户。
userName="域\机器名" password="密码" /> 在这里,你可以用明文设置用户名和密码,对此就不做过多解释了。需要特别注意的是,你设置的账户需要对以下目录拥有权限: ·临时文件夹。这是动态编译的位置,需要有读写权限。 ·全局程序集缓存(%Windir%\assembly)。这是全局程序集缓存,需要有读取权限。 注意:如果正在运行Windows Server2003,其中的IIS6.0配置为运行在辅助进程隔离模式下(默认情况),则可通过将应用程序配置为在自定义应用程序池(在特定的域标识下运行)中运行,然后使用指定的域标识访问资源而无需使用模拟。