解惑

解己之惑,解人之惑

标签:权限

EveryOne不是真正的EveryOne

还是持续集成的问题。Nant中使用copy拷贝文件到远程的机器,远程机器创建了目录并配置成EveryOne是FullControl的,结果是不能删除也不能创建文件,如果运行Service的帐号是默认的那个用户(SYSTEM\NetWorkService),但是如果修改安全策略,让EveryOne可以FullControl服务的话到是没有问题的。
所以说,都是微软的功能,都是EveryOne,都是FullControl,但是对不同的用户,这个EveryOne还是有区别的,似乎文件访问的控制更加严格一些。
另外,环境是虚拟子网里面的东西,我从我自己的机器上(完全不在一个子网和域里面)访问那些共享目录倒是可以删除和创建东西,好奇怪啊。

Windows平台应用的运行身份

现在开始做.net的应用了,在Visual Studio里面开发的Web Service直接Debug运行是没有问题,但是publish到IIS以后有问题,在创建的时候出现错误,怀疑是权限问题。
看了下资料,发现IIS应用最终运行的用户是Network Service,而我们的Web Service调用了本地的COM组件,那些组件还会再访问数据库,前面的调用没有问题,但是数据库调用部分就会出错,根据那些资料,有一个所谓的身份模拟的功能,就是说IIS应用最终可以以使用我们的应用的用户身份去调用COM,配置也很简单,在web.config文件的system.web里面添加:
<identity impersonate="true"/>

更新:
这种方式不是非常好,因为会导致传导依赖,以我们自己的项目为例,我们是ASP应用调用另外一个Web Service,那个Web Service再调用我们这个Web Service,如果按照上面配置,那么就得要求有运行COM访问数据库的用户访问ASP,然后ASP以及另外那个Web Service都得配置身份模拟,为了打断这个依赖链条,我们可以在上面的配置的基础上指定一个有COM访问数据库权限的用户,这样其他的应用就不必依赖这个机制了:
<identity impersonate="true" userName="domain\username" password="password"/>

© 2024 解惑

本主题由Anders Noren提供向上 ↑