使用sc分配权限-限制某个用户或用户组对某个service的访问

本文介绍了如何使用Windows内置的`sc`工具,允许非管理员用户(如user)控制特定服务(如themes)。通过修改服务的安全描述符(SDDL),将管理员(BA)的权限赋予普通用户,实现非管理员用户对服务的启动、停止等操作。遵循最小权限原则,仅分配必要权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 


 

keyword:

service management with non-administrator privilege

user用户无法stop/start服务程序

最近开发一个windows的服务程序,该服务是开机自启动的。但是在administrator用户权限下安装服务后却没法在user用户下启用。

经过一番折腾,终于搞定了。互联网还真是个好东西,用的好什么问题都能解决。自己从这上面得好处,也想回报一下。

就弄篇博文总结一下。废话不多说下面进入正题。

在这个过程中主要用到了windows自带的sc工具,这是个命令行工具。对于这个工具的具体用法,网上已经有很多说明在这里主要讲述我使用到的内容。

以我自己的电脑为例,我用的是wind7。windows自带服务有一个为themes。

在命令行输入:(administrator权限下)

sc sdshow themes

得到的输出为:

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

看到这一长串可能有点晕。

这一长串描述了我的pc上各个用户组对该服务的权限,叫SDDL(Security Descriptor Definition Language )在windows中用来对用户权限进行描述。详细信息见msdn,输入SDDL查询即可。

下面所说的内容,详细信息见http://msdn.microsoft.com/zh-cn/site/aa374928

(A;;CCLCSWRPWPDTLOCRRC;;;SY)这一串字符对对应下面六个元素。

ace_type;ace_flags;rights;object_guid;inherit_object_guid;account_sid

ace_type:A  表示ALLOW

ace_flags 一般为空

rights:CCLCSWRPWPDTLOCRRC  每连个字符代表权限

CC :向SCM查询服务当前配置的权限

LC  :向SCM查询服务当前状态的权限

SW :向SCM查询服务所依赖服务的权限额

RP :向SCM请求启动服务的权限

CR :向服务发送用户自定义请求的权限

account_id:sy  表示system账户

现在我们的目的是使得user用户也有对themes服务拥有所得控制权

BA代表user用户我们可以讲sy的权限描述字符替换掉BA的。执行下列命令BA用户即user用户将会获得对themes的控制权限。

sc sdset  themes  D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCLCSWRPWPDTLOCRRC;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

执行该命令后ba用户与sy用户的权限相同了。(要在管理员用户权限下才能执行)

当然在上面的例子中分配的权限还是要看自己的情况而定,最好是遵循最小权限原则。即只分配能够工作的最小权限。

说到这里也就完了,第一次写技术博客写的不好大家见谅。如有错误,大家帮忙指正,谢谢!这部分的知识我没完全搞明白,希望大牛指点。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值