问题描述
我非常熟悉 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
->门