Unix 11位字段中的12位掩码如何打开SETUID位?
在Andrew S.Tanenbaum和Albert S.Woodhull的操作系统设计和实现中,有以下片段: 在MINIX 3中,每个文件都有一个用于保护的11位模式。这些位中有九位是被读取的- 为所有者、组和其他人写入执行位 然后,在几行之后,他们写道: 其他两个保护位02000[octal 200]和04000[octal 400]是SETGID(设置组id)和SETUID(设置组id- 用户id)位 但是Python显示八进制400是一个12位长掩码:Unix 11位字段中的12位掩码如何打开SETUID位?,unix,data-structures,bit-manipulation,bitwise-operators,Unix,Data Structures,Bit Manipulation,Bitwise Operators,在Andrew S.Tanenbaum和Albert S.Woodhull的操作系统设计和实现中,有以下片段: 在MINIX 3中,每个文件都有一个用于保护的11位模式。这些位中有九位是被读取的- 为所有者、组和其他人写入执行位 然后,在几行之后,他们写道: 其他两个保护位02000[octal 200]和04000[octal 400]是SETGID(设置组id)和SETUID(设置组id- 用户id)位 但是Python显示八进制400是一个12位长掩码: >len(str(bin(0o40
>len(str(bin(0o4000))-len('0b')
12
如何在11位字段上应用12位长的掩码?01000是Unix中的“粘性”位,在本书发行时Minix不支持它。它直到2010年才增加支持(该书于2005年发布)。他们没有说11个连续位。也许01000是未使用或保留的?