UNIX模式字符串的第一个字符表示什么?

我非常熟悉linux文件权限和特殊权限(粘性位,suid,guid)

但我不知道c代表什么? 是权限还是别的? 我做了一些谷歌搜索,无法弄明白。

这是包含它的设备文件。

 steven@A215:~$ ls -l /dev/null crw-rw-rw- 1 root root 1, 3 Dec 29 20:58 /dev/null 

这意味着该文件是一个字符特殊文件 – 基本上是一个提供串行访问的设备文件(而不是块特殊设备,如磁盘驱动器)。 例如,终端和串行设备通过字符特殊文件( /dev/tty1/dev/ttyS0等)连接。

有关设备文件的简要介绍,请参阅Linux / UNIX:设备文件 [cyberciti.biz]。 有关更详细的讨论,请参阅此stackexchange回答了解/ dev及其子目录和文件 。 要了解底层数据结构,请参阅“Linux内核模块编程指南”的第4章: 字符设备文件 [tldp.org]

字符设备标有c作为模式字符串的第一个字母。 同样,块设备标有b

 $ ls -l /dev/null crw-rw-rw- 1 root root 1, 3 Jan 21 21:50 /dev/null $ ls -l /dev/sda brw-rw---- 1 root disk 8, 0 Jan 21 21:50 /dev/sda 

有更多的这些特殊设备(文件在某种意义上说,一切都是Linux中的文件),

 d : directory s : socket p : pipe D : Door l : symbolic link etc. 

有关详细信息,请参阅此维基百科页面。

ls -l输出一个10符号的UNIX字符串信息,通常称为权限字符串。 例如

 -rw-rw-r-- 1 userName groupName 13200650 Dec 13 21:23 fileName 

权限字符串模式字符串的第一个字符(称为文件描述符 )表示文件类型,其余九个以三个一组的forms表示相关文件的权限,其中:

  • 第一组三个字符(在10个中的第一个字符之后)表示所有者的权限,
  • 第二组三个指定组的权限,
  • 最后一组三个指定其他人(或世界)的权限。

这里,在上面的例子中,第一个字符/符号“ – ”表示普通文件。

在以下示例中,

 crw-rw-rw- 1 root root 1, 3 Dec 29 20:58 /dev/null crw-rw-rw- 1 root root 1, 5 Jan 13 20:56 /dev/zero 

权限字符串的第一个字符是“c” ,如上所述,它是指示字符设备的文件类型指示符。

除了-c之外,其他一些文件描述符是:

  • d – >目录
  • l – >符号链接
  • s – > Unix socket
  • b – >阻止设备
  • p – >管道
  • D – >门

参考文献:

  • 设备文件
  • Unix权限
  • 模式

第一列中的第一个字符,即上面crw-rw-rw-中的’c’,告诉知情用户文件的类型,在这种情况下是字符设备。