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


29

我对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都有特殊的权限。
塞斯


1
这不是许可。这是文件类型。
吉尔斯(Gillles)“所以-别再邪恶了”

Answers:


34

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

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


3
虽然很好,但是如果您扩展更多答案并提供一些有用的链接会更好。:)
Saurav Kumar

3
@SauravKumar,请随时添加一些内容-我找不到合适级别的任何内容(要么添加任何内容,要么直接进入struct char_deviceC代码内核编程)
steeldriver

@steeldriver 这些可能会给您一个开始:)
赛斯(Seth)

20

字符设备标记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页面。


有办法解决这个问题吗?
Edik Mkoyan

5

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

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

权限字符串模式字符串的第一个字符(称为文件描述符)指示文件类型,其余的9个字符(以3个为一组)表示对相关文件的许可权,其中:

  • 第一组三个字符(在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套接字
  • b ->块设备
  • p ->管道
  • D ->门

参考文献:


2

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.