我试图理解Linux的权限系统。我理解这些组:
- 所有人(单位)
- 组(g)
- 其他(o)
和权限类型:
- 读数(r = 4)
- 写入(w = 2)
- 执行(x = 1)
- (我读过一些关于
setuid/setgid
和sticky bit
的文章,但我并不真正了解它们的用途。)*
另一件事我不明白,例如在PHP中的5位数的权限,而不是3:这是干什么用的?
mkdir($directory, 02770);
277
应该是指为所有者写perm,以及为组和其他用户写的所有东西,但是第一个和最后一个数字是什么意思?
2条答案
按热度按时间6yoyoihd1#
更多关于setuid、setgid和sticky bit的信息请参见Wikipedia。
常量显示为5位数,但第一位数始终为
0
;这是八进制文字的约定(也就是说,010
是8,而不是10)。这是有意义的,因为以8为基数的数字有正好代表3位的数字,并且权限位按3分组。(这在到处使用八进制的旧PDP机器上更有意义,特别是在机器代码表示中,并且是Unix开发的最初温床。在Intel和ARM上,十六进制数很常见,所以八进制数不能立即被识别出来。)yhived7q2#
但这是你最后一个问题的答案:11...9位代表SUID、SGID、Sticky,这些信息很容易找到,但一共有16个权限位,15...12位编码“文件”的类型:0001=p=fifo(管道),0010=c=字符设备,0100=d=目录,0110=B=块设备,1000=“正常”文件,1010=l=链接(软链接文件),1100=s=套接字据此,“4”简单地表示“目录”。