CatoiOS3.0权限系统设计
CatoiOS3.0权限系统设计
存储
每个文件的权限用一个int类型数组存储,每个int类型被存储到根目录的permissions文件夹内。
permissions文件夹的权限无需任何确认,永久为000000。Console.h直接通过底层代码写入和读取。
存储规则为:直接按照相对根目录存储,相当于拷贝了一份文件名对照表。
比如在happy文件夹内有一个shutdown.exe,他们应该是在permissions文件夹内是这样存储的:有一个名为happy的文件,存储happy文件夹的权限;还有一个名为happy的目录,代表着存放happy文件夹内文件的权限,里面现在应该只有一个叫shutdown.exe的文件,不过它不是一个可执行文件,而是实际happy\shutdown.exe的权限。
按位对照表
| 位位置 | 位名称 | 功能说明 | 值(十六进制) | 值(二进制) |
|---|---|---|---|---|
| 31 | PERM_OWNER_READ | 所有者读权限 (1=允许) | 0x80000000 | 10000000000000000000000000000000 |
| 30 | PERM_OWNER_WRITE | 所有者写权限 (1=允许) | 0x40000000 | 01000000000000000000000000000000 |
| 29 | PERM_GROUP_READ | 组用户读权限 (1=允许) | 0x20000000 | 00100000000000000000000000000000 |
| 28 | PERM_GROUP_WRITE | 组用户写权限 (1=允许) | 0x10000000 | 00010000000000000000000000000000 |
| 27 | PERM_OTHER_READ | 其他用户读权限 (1=允许) | 0x08000000 | 00001000000000000000000000000000 |
| 26 | PERM_OTHER_WRITE | 其他用户写权限 (1=允许) | 0x04000000 | 00000100000000000000000000000000 |
| 25 | RESERVED | 保留位 | 0x02000000 | 00000010000000000000000000000000 |
| 24 | RESERVED | 保留位 | 0x01000000 | 00000001000000000000000000000000 |
| 23 | RESERVED | 保留位 | 0x00800000 | 00000000100000000000000000000000 |
| 22 | RESERVED | 保留位 | 0x00400000 | 00000000010000000000000000000000 |
| 21 | RESERVED | 保留位 | 0x00200000 | 00000000001000000000000000000000 |
| 20 | RESERVED | 保留位 | 0x00100000 | 00000000000100000000000000000000 |
| 19 | RESERVED | 保留位 | 0x00080000 | 00000000000010000000000000000000 |
| 18 | RESERVED | 保留位 | 0x00040000 | 00000000000001000000000000000000 |
| 17 | RESERVED | 保留位 | 0x00020000 | 00000000000000100000000000000000 |
| 16 | RESERVED | 保留位 | 0x00010000 | 00000000000000010000000000000000 |
| 15 | FLAG_IS_DIR | 是否为目录 (1=目录) | 0x00008000 | 00000000000000001000000000000000 |
| 14 | FLAG_EXPLICIT | 权限显式设置 (1=显式) | 0x00004000 | 00000000000000000100000000000000 |
| 13 | FLAG_READONLY | 只读标志 (1=只读) | 0x00002000 | 00000000000000000010000000000000 |
| 12 | FLAG_HIDDEN | 隐藏标志 (1=隐藏) | 0x00001000 | 00000000000000000001000000000000 |
| 11 | FLAG_SYSTEM | 系统文件 (1=系统) | 0x00000800 | 00000000000000000000100000000000 |
| 10 | FLAG_ARCHIVE | 归档标志 (1=已修改) | 0x00000400 | 00000000000000000000010000000000 |
| 9 | FLAG_INHERIT_1 | 继承深度高位 | 0x00000200 | 00000000000000000000001000000000 |
| 8 | FLAG_INHERIT_0 | 继承深度低位 | 0x00000100 | 00000000000000000000000100000000 |
| 7 | RESERVED | 保留位 | 0x00000080 | 00000000000000000000000010000000 |
| 6 | RESERVED | 保留位 | 0x00000040 | 00000000000000000000000001000000 |
| 5 | RESERVED | 保留位 | 0x00000020 | 00000000000000000000000000100000 |
| 4 | RESERVED | 保留位 | 0x00000010 | 00000000000000000000000000010000 |
| 3 | RESERVED | 保留位 | 0x00000008 | 00000000000000000000000000001000 |
| 2 | RESERVED | 保留位 | 0x00000004 | 00000000000000000000000000000100 |
| 1 | RESERVED | 保留位 | 0x00000002 | 00000000000000000000000000000010 |
| 0 | RESERVED | 保留位 | 0x00000001 | 00000000000000000000000000000001 |
这是mcr130102的博客,转载请注明出处

浙公网安备 33010602011771号