linux权限中的第四位和第五位是什么?

5ssjco0h  于 2023-01-20  发布在  Linux
关注(0)|答案(2)|浏览(151)

我试图理解Linux的权限系统。我理解这些组:

  • 所有人(单位)
  • 组(g)
  • 其他(o)

和权限类型:

  • 读数(r = 4)
  • 写入(w = 2)
  • 执行(x = 1)
  • (我读过一些关于setuid/setgidsticky bit的文章,但我并不真正了解它们的用途。)*

另一件事我不明白,例如在PHP中的5位数的权限,而不是3:这是干什么用的?

mkdir($directory, 02770);

277应该是指为所有者写perm,以及为组和其他用户写的所有东西,但是第一个和最后一个数字是什么意思?

6yoyoihd

6yoyoihd1#

更多关于setuid、setgid和sticky bit的信息请参见Wikipedia。

  • setuid:使用文件所有者(不是启动进程的用户)的权限启动可执行文件。
  • setgid:启动可执行文件,就好像用户属于该文件所属的组一样。
  • sticky:不允许删除或重命名用户具有写权限的目录中的文件,除非这些文件也属于该用户。

常量显示为5位数,但第一位数始终为0;这是八进制文字的约定(也就是说,010是8,而不是10)。这是有意义的,因为以8为基数的数字有正好代表3位的数字,并且权限位按3分组。(这在到处使用八进制的旧PDP机器上更有意义,特别是在机器代码表示中,并且是Unix开发的最初温床。在Intel和ARM上,十六进制数很常见,所以八进制数不能立即被识别出来。)

yhived7q

yhived7q2#

但这是你最后一个问题的答案:11...9位代表SUID、SGID、Sticky,这些信息很容易找到,但一共有16个权限位,15...12位编码“文件”的类型:0001=p=fifo(管道),0010=c=字符设备,0100=d=目录,0110=B=块设备,1000=“正常”文件,1010=l=链接(软链接文件),1100=s=套接字据此,“4”简单地表示“目录”。

相关问题