为什么Windows中的默认Git文件组是197121?

问题描述

在Windows下,Git(MINGW64)为文件分配默认组:197121(PS:如果在Internet上搜索此编号,您会发现大多数问题都与Git有关)。我想知道这个组(或数字)是否有意义?

ls - al

drwxr-xr-x 1 Zhang 197121 0 August 18 09:46 file.txt

解决方法

这是“无”组。
this thread

中所述

当您向Windows GUI询问文件的ACL时, 它知道向谁索取SID。反正就是一个SID (内置,SAM,AD),或询问共享的基础服务器。

但是,Cygwin中的帐户处理与代码分离了 提取文件ACL。它通常只关心passwd和group 条目,并且它只知道向SAM或AD请求SID。它没有 与服务共享的服务器的连接。 可能是可能的, 但是代码还不存在。

Eryk Sun添加到the comments中:

如何将“ S-1-5-21--513”(无)映射到GID值197121:

Group=S-1-5-21-XXX-513(WINDOWS\None) (gid=197121)

十六进制值0x30201提供了一些见识,因为0x201513,但我不知道0x30的来源。
知道Windows中大多数用户的访问令牌会将“ None”设置为新对象(即TokenPrimaryGroup)的默认组也有帮助。

Windows访问检查不直接使用对象的组(与Cygwin不同),但是如果对象的父容器具有“ CREATOR GROUP”的可继承条目,则该组的条目将添加到对象的DACL中(S-1-3-1)。

等于0x0201的下半部分解释为组“ DOMAIN_GROUP_RID_USERS”(如果计算机连接到域,则称为“ None”)的RID值Domain Users ),假设它们仅使用32位RID值的低16位,但是我仍然很好奇0x30201中开头的3来自何处。
同样,对于第一个分配的用户SID“ S-1-5-21-<MACHINE ID>-1001”,Cygwin UID为0x303E9,其前导0x3相同。

另请参阅“ How to use native "Active Directory Services Interface" (ADSI) components to find the primary group”:

用户的主要组(作为用户域中组的RID)存储在用户对象的PrimaryGroupID属性上。

用户的主要组只能是与该用户位于同一域中的组,并且该组必须是该用户所属的组。

此外,Active Directory中的该组对象具有一个名为 PrimaryGroupToken 的属性,该属性在域中存储该组的RID。

This thread添加:

整数513是“ primaryGroupToken”组的Domain Users属性的值。
primaryGroupID为513的所有用户都将此组指定为其主要用户。

这与security identifiers有关,如seen here

SID

S-1-5-domain-513

显示名称

域用户

说明

包含域中所有用户的全局组。
当您在Active Directory中创建新的User对象时,该用户会自动添加到该组中。

thread references

Cygwin id 197121 == RID 513 == 0x201-在保留的RID

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...