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

问题描述

我非常熟悉 linux 文件权限和特殊权限(sticky bit、suid、guid)

但我不知道 c 代表什么?是许可还是其他?我已经做了一些谷歌搜索,但无法弄清楚。

这是拥有它的设备文件。

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

图片参考:https://detailed.wordpress.com/2017/10/28/understanding-ls-command-output/

最佳答案

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

有关设备文件的简要介绍,请参见 Linux / UNIX: Device files [cyberciti.biz]。有关更详细的讨论,请参阅此 stackexchange 答案 Understanding /dev and its subdirs and files 。要了解底层数据结构,请参阅 Linux 内核模块编程指南的第 4 章:Character Device Files [tldp.org]

次佳答案

第一个字符标识 Unix File Type :字符设备被标记为 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.

有关详细信息,请参阅此 wikipedia 页面。

第三种答案

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

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

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

  • 第一组三个字符(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”,如上所述,它是一个 file-type 指示符,表示字符设备。

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

  • d ->目录

  • l ->符号链接

  • s -> Unix 套接字

  • b ->块设备

  • p ->管道

  • D ->门

参考:

  • Device file

  • Unix Permissions

  • Modes

参考资料

  • What does the first character of UNIX mode string indicate?

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

扫一扫手机访问