• CRM域用户误删恢复


    记录一下:

    不小心将CRM用户在域中删除了(CRM中未删除),直接新建一个同样账号的域用户然后尝试在CRM中登录报“invalid user”错误,一番检查发现从2011版本开始CRM中不单记录了用户的域账号,而且还记录了域用户的GUID和SID,所以要恢复域用户参考以下sql步骤(在2011和2013版本中测试通过):

    --将新建的ad用户加入ReportingGroup 组

    use [Test_MSCRM]--CRM组织数据库

    declare @orgName nvarchar(200)='Test' --CRM组织名称
    declare @DomainName nvarchar(1024)='Domain est' ----CRM中原用户的登录域名
    declare @adguid uniqueidentifier='C143E7B6-87FB-4646-A9B1-7DAD1CD7B022' --新创建的ad用户在ad里的guid ,如何查看guid参考以下
    declare @authInfo nvarchar(255)='W:' + 'S-1-5-21-1982881794-697207762-1046364067-1122' --新创建的ad用户在ad里的sid,如何查看sid参考以下

    declare @crmUserid uniqueidentifier

    --获取CRM中原用户的systemuserid
    select @crmUserid=[SystemUserId]
    from [dbo].[SystemUserBase]
    where [DomainName]=@DomainName

    update [dbo].[SystemUserBase]
    set [ActiveDirectoryGuid]=@adguid
    where [SystemUserId]=@crmUserid

    use [MSCRM_CONFIG]

    declare @configUserid uniqueidentifier
    declare @orgid uniqueidentifier

    --获取组织id
    select @orgid=[Id]
    from [dbo].[Organization]
    where [UniqueName]=@orgName

    --获取config中用户id
    select @configUserid=[UserId]
    from [dbo].[SystemUserOrganizations]
    where [OrganizationId]=@orgid
    and [CrmUserId]=@crmUserid

    update [dbo].[SystemUserAuthentication]
    set [AuthInfo]=@authInfo
    where [UserId]=@configUserid

    go

    /*
    如何查看域用户的SID和GUID?
    需要澄清的是,OU没有SID属性,只有GUID属性。所以我们无法查看OU的SID信息。我们可以使用ADSIEDIT来查看域用户的SID。您可以参考下面的步骤:
    1. 运行命令adsiedit.msc打开ADSI EDIT控制台。
    2. 右键点击ADSI EDIT,选择Connect to,在弹出的窗口中点击OK。
    3. 展开Default naming contextDC=domain,DC=comCN=Users。
    4. 选择我们想要查看的域用户,右键点击并选择Properties。
    5. 在Attributes列表中的objectSID属性的值就是这个域用户的SID。


    我们仍然可以使用ADSIEDIT来查看对象的GUID。您可以参考下面的步骤:
    1. 运行命令adsiedit.msc打开ADSI EDIT控制台。
    2. 右键点击ADSI EDIT,选择Connect to,在弹出的窗口中点击OK。
    3. 展开Default naming contextDC=domain,DC=com。
    4. 选择我们想要查看的对象(域内的任何对象),右键点击并选择Properties。
    5. 在Attributes列表中的objectGUID属性的值就是这个域对象的GUID
    注:使用ADSIEDIT工具需安装SUPPORT TOOLS.
    SID&GUID区别
    1.在AD里面创建一个用户或者组都会为其分配一个SID,同时也会为这些对象分配一个GUID,GUID是一个128位的字符串,一个标识符,
    GUID不仅在整个域里面是唯一的,并且在全世界的范围内都是唯一的,独一无二的,换句话说你找遍整个世界都找不到一模一样的两个GUID值。
    另外,不仅用户和组这些安全主体会被分配一个GUID,整个域内的所有对象都会被分配一个GUID,比如域控制器等。而且一旦对象被分配了GUID那么这个GUID将伴随这个对象一直到它被删掉。
    2.SID可以被更改(一般组的SID不会更改),GUID不能被更改,对象的任何属性都可以改变,但唯独GUID不能被改变。
    3.SID的作用主要是为对象和资源做权限控制用的。
    GUID的作用主要是为了确定对象是谁,对象在那里。GUID一般都被复制到全局编录里面。比如我们平时在AD里面查找对象的时候,实际上查的是它的GUID。
    */

  • 相关阅读:
    ingress高可用--使用DaemonSet方式部署ingress-nginx
    flask-Migrate模块
    flask 框架 前端和后端请求超时问题
    linux crontab执行python脚本问题
    python 装饰器
    Python 中实现装饰器时使用 @functools.wraps 的理由
    jquery ui dialog 中使用select2 导致select2的input失去焦点的解决方法
    Django之ModelForm组件
    Django之Model操作
    Java环境变量,真的还有必要配吗?
  • 原文地址:https://www.cnblogs.com/caizhidao/p/5073235.html
Copyright © 2020-2023  润新知