問題描述
我非常熟悉 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
->門