![为什么 Midnight Commander 中的 chmod 有 5 位数字,为什么?](https://linux22.com/image/1384704/%E4%B8%BA%E4%BB%80%E4%B9%88%20Midnight%20Commander%20%E4%B8%AD%E7%9A%84%20chmod%20%E6%9C%89%205%20%E4%BD%8D%E6%95%B0%E5%AD%97%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
如果我转到文件菜单中的 chmod,它会返回文件夹/文件的 chmod 值。
我知道最后 3 位数字,第二位是 setuid/setgid/sticky 位(我读过相关文档,但不太清楚它的用途)……然后是第一位数字,我猜是文件/文件夹,还有什么?比如文件夹的数字是 4,文件的数字是 0……那 2 和 6 呢?我检查过,符号链接没有单独的 chmod 第一位数字值。
答案1
chmod
,您可能知道,是“change mode”的缩写。这里的“mode”是指st_mode
inode 中的字段。 统计(2)stat
、fstat
和系统调用的手册页lstat
显示st_模式最多 7 位数字的值。以下是摘录:
S_IFSOCK
0140000 socket
S_IFLNK
0120000 symbolic link
S_IFREG
0100000 regular file
S_IFBLK
0060000 block device
S_IFDIR
0040000 directory
S_IFCHR
0020000 character device
S_IFIFO
0010000 FIFO
好的,第一个数字始终为零,以表示该数字是八进制的;我们可以忽略这一点。MC 似乎也忽略了第二个数字。因此,您可以看到常规文件的第三位(即从右边数第五位)数字为 0,目录为 4。2 和 6 分别是字符设备和块设备;您应该只会在 中看到这些/dev
。命名管道应该是 1,文件系统套接字应该是 4。如果符号链接显示为 0,那就很奇怪了;也许有人认为显示 2 会太令人困惑。