Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 八进制数字0权限的用途是什么_Linux_Shell_Unix - Fatal编程技术网

Linux 八进制数字0权限的用途是什么

Linux 八进制数字0权限的用途是什么,linux,shell,unix,Linux,Shell,Unix,我更熟悉drwx权限,但我想了解一下八进制权限0代表-?我理解r表示4w表示2,x表示1。我不太明白0代表什么 比如说 语言的符号表征 0774 会是 rwxr 但我不明白0的目的 在Linux权限中,权限有四个八进制数字。有3个大家都知道的权限,读、写和执行,但权限中还有额外的3位: 棘手的一点 设置gid位 设置uid位 因此,设置权限4755将设置setuid位以及“rwxrw-rw-” 同样,2755设置setgid位,1755设置sticky位。可以设置以下各项的任意组合:

我更熟悉
drwx
权限,但我想了解一下八进制权限
0
代表
-
?我理解
r
表示
4
w表示
2
,x表示
1
。我不太明白0代表什么

比如说

语言的符号表征

0774

会是

rwxr

但我不明白0的目的


在Linux权限中,权限有四个八进制数字。有3个大家都知道的权限,读、写和执行,但权限中还有额外的3位:

  • 棘手的一点
  • 设置gid位
  • 设置uid位
因此,设置权限4755将设置setuid位以及“rwxrw-rw-”

同样,2755设置setgid位,1755设置sticky位。可以设置以下各项的任意组合:

  • 1个粘性钻头
  • 2设定位
  • 3固定钻头和粘性钻头
  • 4 setuid位
  • 5 setuid钻头和粘性钻头
  • 6 setuid位和setgid位
  • 7 setuid位、setgid位和粘性位
对于文件和目录,这些位的含义有所不同

在文件上

  • 粘性位不起任何作用(它用来告诉内核将该文件保留在缓存中)
  • setuid位如果文件是一个可执行文件,在执行时,它将作为文件的所有者运行,而不是作为运行它的人运行(这就是
    sudo
    为您提供root权限的工作方式--它以
    root
    的身份运行,即使它被
    guest
    这样的用户调用)
  • setgid位与setuid位相似,但组所有者除外
在文件夹上

  • 777文件夹上的粘性位允许用户删除自己的文件,但不允许用户删除其他用户的文件。没有设置粘性位,任何用户都可以删除此目录下任何其他用户的文件。(这就是
    /tmp
    的工作原理)
  • 据我所知,文件夹上的setuid位不起任何作用
  • 文件夹上的setgid位将强制在该目录中创建的所有新文件将继承该文件夹的组,而不是当时创建的用户的默认组

虽然这些权限很重要,没有它们UNIX就无法工作,但通常最好避免使用它们(至少对于文件),因为编写不好的程序最终可能会给运行它的任何人提供免费的root。因此,最好让sudo担任root的守门人。

在Linux权限中,权限有四个八进制数字。有3个大家都知道的权限,读、写和执行,但权限中还有额外的3位:

  • 棘手的一点
  • 设置gid位
  • 设置uid位
因此,设置权限4755将设置setuid位以及“rwxrw-rw-”

同样,2755设置setgid位,1755设置sticky位。可以设置以下各项的任意组合:

  • 1个粘性钻头
  • 2设定位
  • 3固定钻头和粘性钻头
  • 4 setuid位
  • 5 setuid钻头和粘性钻头
  • 6 setuid位和setgid位
  • 7 setuid位、setgid位和粘性位
对于文件和目录,这些位的含义有所不同

在文件上

  • 粘性位不起任何作用(它用来告诉内核将该文件保留在缓存中)
  • setuid位如果文件是一个可执行文件,在执行时,它将作为文件的所有者运行,而不是作为运行它的人运行(这就是
    sudo
    为您提供root权限的工作方式--它以
    root
    的身份运行,即使它被
    guest
    这样的用户调用)
  • setgid位与setuid位相似,但组所有者除外
在文件夹上

  • 777文件夹上的粘性位允许用户删除自己的文件,但不允许用户删除其他用户的文件。没有设置粘性位,任何用户都可以删除此目录下任何其他用户的文件。(这就是
    /tmp
    的工作原理)
  • 据我所知,文件夹上的setuid位不起任何作用
  • 文件夹上的setgid位将强制在该目录中创建的所有新文件将继承该文件夹的组,而不是当时创建的用户的默认组

虽然这些权限很重要,没有它们UNIX就无法工作,但通常最好避免使用它们(至少对于文件),因为编写不好的程序最终可能会给运行它的任何人提供免费的root。因此,最好让sudo担任root的守门人。

在Unix约定中,写入的数字假定为十进制,除非它们的前缀是
0x
(或
0x
),在这种情况下,它们是十六进制或前缀是
0
,表示它们是八进制数


chmod
命令(可能?)没有执行一般的数字解析(简单的字符串解析就可以了),但是编写示例和文档的程序员会在八进制数前面加上
0
,这只是为了确保清楚而已。

在Unix惯例中,写入的数字被假定为十进制,除非它们的前缀是
0x
(或
0x
),在这种情况下,它们是十六进制或前缀是
0
,表示它们是八进制数


chmod
命令(可能?)没有执行一般的数字解析(简单的字符串解析就可以了),但是编写示例和文档的程序员会在八进制数前面加上
0
,这只是为了确定和清楚。

你是说
8
代表什么?正如chmod 0755 xyz中的0?不,这不是我的意思@JoshuaRahm,我在问题中添加了一个示例。也许你能更好地理解它。你是说
8
代表什么?与chmod 0755 xyz中的0相同?无t
   S_ISUID     04000   set-user-ID bit
   S_ISGID     02000   set-group-ID bit (see below)
   S_ISVTX     01000   sticky bit (see below)